Accounts & providers

/docs/accounts-and-providers/

Accounts

Accounts are configured via ~/.config/choreographr/accounts.toml. Account names must be lowercase alphanumeric with hyphens or underscores ([a-z0-9_-]). Each session may have its own account, set via /account <name>; there is no global default account.

[[account]]
name = "main"
provider = "openai"

[[account]]
name = "claude"
provider = "anthropic"

[[account]]
name = "gemini"
provider = "google"

[[account]]
name = "local"
provider = "ollama"
base_url = "http://localhost:11434/v1"
streaming = false
retry_max_attempts = 3

Providers

Choreographr supports 70+ providers across three wire protocols:

  • OpenAI-compatible — OpenAI, DeepSeek, Mistral, xAI, Groq, Together AI, OpenRouter, Hugging Face, GitHub Models, NVIDIA NIM, Cerebras, Fireworks AI, Alibaba (Qwen), Moonshot AI (Kimi), Perplexity, Z.ai, Ollama, LM Studio, and many more.
  • Anthropic Messages — Anthropic Claude, MiniMax, Vercel AI Gateway, Kimi Code, and more.
  • Google Generative AI — Google Gemini.

Each provider has its own data file under choreo-ai-protocols/src/catalog/<slug>.toml with a curated model list, context windows, reasoning levels, and the API format each model uses. Adding a new OpenAI-compatible provider requires only a catalog TOML file — zero client code.

Account overrides

Every field has sensible defaults from the provider catalog and can be overridden per-account:

FieldDescription
base_urlAPI base URL
streamingEnable/disable streaming responses
retry_max_attemptsMax retry count on transient errors
retry_initial_backoff_msInitial backoff between retries (ms)
retry_max_backoff_msMax backoff between retries (ms)
connect_timeout_secsTCP connect timeout
request_timeout_secsHTTP request timeout
default_request_formatRequest format: "chat_completions" or "responses"
programmatic_tool_callingEnable programmatic tool calling (Responses API, gpt-5.6+)
context_windowDefault context window for all models

The Responses API is fully supported — including tool use, streaming, reasoning effort slugs, multi-turn chaining via previous_response_id, and programmatic tool calling (gpt-5.6+ models).

Adding API keys

Add a key for the service the account uses:

/add-key openai sk-...

Keys are encrypted per-credential with the daemon's public key before being stored. The daemon starts locked — use /unlock to decrypt credentials into memory, and /lock to clear them again.