Skip to main content

Provider matrix

Every provider preset is defined in packages/cli/src/providers-registry.ts. The default model for each is in known-models.ts.

Cloud providers

ProviderPreset idDefault modelAuth methodStreamingToolsImagesAudio
Anthropicanthropicclaude-opus-4-6API key❌ planned❌ planned
OpenAIopenaigpt-4o-miniAPI key❌ planned❌ planned
OpenRouteropenrouteropenai/gpt-4o-miniBrowser PKCE❌ planned
Groqgroqllama-3.3-70b-versatileAPI key❌ planned
DeepSeekdeepseekdeepseek-chatAPI key❌ planned
Togethertogethermeta-llama/Llama-3.3-70B-Instruct-TurboAPI key❌ planned
Mistralmistralmistral-large-latestAPI key❌ planned
xAI (Grok)xaigrok-2-latestAPI key❌ planned

Local providers

ProviderPreset idDefault modelAuthStreamingTools
Ollamaollamallama3.2env-only❌ plannedmodel-dependent
LM Studiolm-studiolocal-modelenv-only❌ plannedmodel-dependent
llama.cppllama-cpplocal-modelenv-only❌ plannedmodel-dependent

Feature notes

  • Streaming. Not implemented yet for any provider — every LLM call is a single non-streaming completion today (the LLMProvider.stream() hook exists on the interface but no provider implements it). Planned.
  • Tools. "Tools" here means the provider-native tool-use protocol (Anthropic tool_use / OpenAI tools). Groq, DeepSeek, xAI, and Mistral all speak the OpenAI tool-call shape. OpenRouter forwards tool calls if the underlying model supports them.
  • Images. Not implemented — message content is text + tool blocks only today (no image content type in the pipeline). Planned.
  • Audio. Not implemented for any provider. Roadmap.

Auth flows

  • API key — paste flow or --api-key non-interactive.
  • Browser PKCE — OpenRouter only. Spins a localhost callback port and opens a browser tab.
  • env-only — local providers. The CLI doesn't store anything; you either set the *_API_KEY env var (usually empty for local) or let the defaults take over.