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.
