ShipVeryFastShipVeryFast
Documentation

AI assistant

ShipVeryFast ships a provider-agnostic AI engine: Anthropic Claude and OpenAI GPT behind a single interface, with a streaming chat endpoint and a ready-made assistant page in the dashboard.

Configure providers

The keys are optional, the app runs without them and the assistant shows only the providers you've configured. Add either or both to .env.local:

ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...

Validated in libs/config.ts. With at least one key set, open /dashboard/assistant and start chatting.

How it's wired

Each provider implements a small Provider interface in libs/ai/ with a streamChat() method that yields plain-text deltas. The Claude path uses the official @anthropic-ai/sdk (default model claude-opus-4-8); the OpenAI path uses the official openai SDK.

The endpoint at app/api/ai/chat/route.ts validates input with Zod, requires an authenticated session, rate-limits per user, and streams the response back. The UI lives in app/dashboard/assistant/page.tsx.

Add another provider

Create libs/ai/<provider>.ts implementing the Provider interface, register it in libs/ai/index.ts, and add its model ids. The route, picker and chat UI pick it up automatically.

Build with AI agents

The repo is optimized for AI coding agents: CLAUDE.md, AGENTS.md and .cursorrules describe the stack and conventions, and .mcp.json.example is a starter MCP config for Claude Code. Clone it and build with Claude Code, Codex or Cursor from the first commit.