Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Providers

Developerpod supports nine AI providers out of the box. At startup it scans your environment for an API key in priority order; first key found wins. 53 env var names supported across all providers.

The table below mirrors src/provider.rs. Pushes that touch that file rebuild this site automatically, but if you ever spot drift, the source is authoritative.

Supported providers

#Provider--provider idDefault modelEndpoint
1Anthropicanthropicclaude-sonnet-4-6api.anthropic.com/v1/messages
2OpenAIopenaigpt-5.4api.openai.com/v1/chat/completions
3Googlegooglegemini-2.5-flashgenerativelanguage.googleapis.com/v1beta/models
4Groqgroqllama-3.3-70b-versatileapi.groq.com/openai/v1/chat/completions
5Mistralmistralmistral-large-latestapi.mistral.ai/v1/chat/completions
6Coherecoherecommand-a-03-2025api.cohere.com/v2/chat
7DeepSeekdeepseekdeepseek-chatapi.deepseek.com/v1/chat/completions
8xAIxaigrok-4-1-fast-non-reasoningapi.x.ai/v1/chat/completions
9OpenRouteropenrouteranthropic/claude-sonnet-4.6openrouter.ai/api/v1/chat/completions

How structured output is requested

Each provider has its own way to ask for JSON-schema-shaped output. Developerpod dispatches per provider and translates your [output].schema into that provider's idiom:

ProviderMechanism
AnthropicForced tool_use with a tool named emit_result
OpenAI / Groq /
DeepSeek / xAI /
OpenRouter
response_format: { type: "json_schema", json_schema: { strict: true, … } }
GooglegenerationConfig.responseMimeType = "application/json" + responseSchema
Mistralresponse_format: { type: "json_object" } with the schema inlined into the system prompt
Cohere v2response_format: { type: "json_object", json_schema: { … } }

Detection priority

  1. Provider order is fixed (the table above). If both Anthropic and OpenAI keys are set, Anthropic wins.
  2. Within a provider, env var names are tried in the order shown on the Environment Variables page. Canonical names come first, then community conventions, then short forms, then *_API_TOKEN variants.
  3. Empty values (whitespace-only) are treated as unset.

Override flags

Force a specific provider, model, or both — useful for switching between providers you have keys for, or for trying a non-default model.

developerpod repo-mood --provider openai
developerpod repo-mood --provider google --model gemini-2.5-pro
developerpod repo-mood --model claude-opus-4-7   # uses your detected provider

If --provider is set, only that provider's env vars are scanned; the run errors out if none are present.

When no key is found

Developerpod exits with a list of every variable it scanned, grouped by provider, and a hint about --provider:

Error: no AI provider API key found in environment. Scanned:
  Anthropic:  ANTHROPIC_API_KEY, CLAUDE_API_KEY, ANTHROPIC_KEY, …
  OpenAI:     OPENAI_API_KEY, CHATGPT_API_KEY, OPENAI_KEY, …
  …

Set one of these env vars, or pass --provider <name> if your key uses a non-standard name.

The full list lives in Environment Variables.