Background
packages/ai/ has 59 provider adapters. Four are fully integrated (Claude, OpenAI, Gemini, Qwen); 55 are BYOK stubs that only collect an API key. This issue tracks integration of the first tier — the 5 highest-impact stubs.
All five speak the OpenAI Chat Completions protocol, so each is essentially: clone packages/ai/openai/src/index.ts, swap DEFAULT_BASE + defaultModel + the models list + the error label, and confirm an end-to-end call works.
Reference adapter
packages/ai/openai/src/index.ts — copy this shape. Keep tokenSetup() as-is (already wired in each stub).
Providers to integrate
| Adapter dir |
Base URL |
Default model |
Suggested models list |
Env var |
packages/ai/groq/ |
https://api.groq.com/openai |
llama-3.3-70b-versatile |
llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, deepseek-r1-distill-llama-70b |
GROQ_API_KEY |
packages/ai/deepseek/ |
https://api.deepseek.com |
deepseek-chat |
deepseek-chat, deepseek-reasoner |
DEEPSEEK_API_KEY |
packages/ai/mistral/ |
https://api.mistral.ai |
mistral-large-latest |
mistral-large-latest, mistral-small-latest, codestral-latest, ministral-8b-latest |
MISTRAL_API_KEY |
packages/ai/xai/ |
https://api.x.ai |
grok-3 |
grok-3, grok-3-mini, grok-2-latest |
XAI_API_KEY |
packages/ai/cerebras/ |
https://api.cerebras.ai |
llama-3.3-70b |
llama-3.3-70b, llama3.1-8b |
CEREBRAS_API_KEY |
Endpoint path is /v1/chat/completions for all five (same as OpenAI).
Acceptance criteria
Out of scope
- Tier 2-5 adapters (Together, Fireworks, Perplexity, etc.) — separate issues
- Streaming responses
- Tool/function calling
References
- Reference impl:
packages/ai/openai/src/index.ts
- AI provider interface:
packages/core/src/ai.ts
- Setup helper:
packages/core/src/setup.ts (tokenSetup pattern)
Background
packages/ai/has 59 provider adapters. Four are fully integrated (Claude, OpenAI, Gemini, Qwen); 55 are BYOK stubs that only collect an API key. This issue tracks integration of the first tier — the 5 highest-impact stubs.All five speak the OpenAI Chat Completions protocol, so each is essentially: clone
packages/ai/openai/src/index.ts, swapDEFAULT_BASE+defaultModel+ themodelslist + the error label, and confirm an end-to-end call works.Reference adapter
packages/ai/openai/src/index.ts— copy this shape. KeeptokenSetup()as-is (already wired in each stub).Providers to integrate
modelslistpackages/ai/groq/https://api.groq.com/openaillama-3.3-70b-versatilellama-3.3-70b-versatile,llama-3.1-8b-instant,mixtral-8x7b-32768,deepseek-r1-distill-llama-70bGROQ_API_KEYpackages/ai/deepseek/https://api.deepseek.comdeepseek-chatdeepseek-chat,deepseek-reasonerDEEPSEEK_API_KEYpackages/ai/mistral/https://api.mistral.aimistral-large-latestmistral-large-latest,mistral-small-latest,codestral-latest,ministral-8b-latestMISTRAL_API_KEYpackages/ai/xai/https://api.x.aigrok-3grok-3,grok-3-mini,grok-2-latestXAI_API_KEYpackages/ai/cerebras/https://api.cerebras.aillama-3.3-70bllama-3.3-70b,llama3.1-8bCEREBRAS_API_KEYEndpoint path is
/v1/chat/completionsfor all five (same as OpenAI).Acceptance criteria
generate()makes a real HTTP call (no more[stub]log + placeholder return)ctx.dryRunshort-circuits before the network call (match openai adapter)inputTokens/outputTokenspopulated fromdata.usagewhen presentpnpm vitest run packages/ai/{groq,deepseek,mistral,xai,cerebras}passessh1pt promote ai setup --platform groqaccepts a key, then a minimalgenerate()call returns textOut of scope
References
packages/ai/openai/src/index.tspackages/core/src/ai.tspackages/core/src/setup.ts(tokenSetup pattern)