Skip to content

Providers & Models

Kolega Code is provider-agnostic. You choose which LLM provider to use and which model to use for each of several roles.

Provider breadth is table stakes; Kolega Code’s extra control is assigning models by operational role and by agent role, so cheap/fast models can investigate while stronger models plan, build, or think.

The agent runtime recognizes these providers:

Provider Identifier API key variable
Anthropic anthropic ANTHROPIC_API_KEY
OpenAI openai OPENAI_API_KEY
OpenAI (ChatGPT subscription) openai_chatgpt none — sign in with ChatGPT
Google google GOOGLE_API_KEY
Groq groq GROQ_API_KEY
Together.ai together TOGETHER_API_KEY
Fireworks.ai fireworks FIREWORKS_API_KEY
x.ai (Grok) xai XAI_API_KEY
DashScope (Alibaba) dashscope DASHSCOPE_API_KEY
Moonshot (Kimi) moonshot MOONSHOT_API_KEY
DeepSeek deepseek DEEPSEEK_API_KEY
Z.AI (GLM Coding Plan) zai ZAI_API_KEY
Kimi Coding Plan kimi_coding KIMI_CODING_API_KEY
Ollama Cloud ollama_cloud OLLAMA_API_KEY
OpenRouter openrouter OPENROUTER_API_KEY
Llama (local) llama none — local model

Rather than one model for everything, Kolega Code uses three model slots, so you can match cost and capability to the job:

Role Purpose When unset
Long context The main coding model — drives the conversation and most work The active model you selected
Fast Quick, cheap utility calls (e.g. web_fetch’s page-answering stage) Inherits the active model
Thinking Extended-reasoning (“think hard”) operations Inherits the active model

An unset slot inherits the active model, so out of the box all three run on your main model. Pin the Fast or Thinking slot when you want a cheaper or different model for that work — Settings shows which model each slot currently resolves to, so an inherited slot is never a surprise.

In the TUI, open Settings → Models → Model Slots (or /model) and give the Fast or Thinking row a provider and model. Leave a row on Default (inherit) to keep it following the active model.

A slot may use a different provider from your main model — for example a DeepSeek main model with Anthropic Haiku for fast utility calls. That provider needs its own API key: add it under Settings → Providers, which lists every provider with its credential status and lets you set up more than one before applying. Settings refuses to apply a slot whose provider has no credential.

Equivalently, from the command line:

Terminal window
kolega-code . \
--provider anthropic --model claude-opus-5 \
--fast-provider anthropic --fast-model claude-haiku-4-5-20251001 \
--thinking-provider anthropic --thinking-model claude-opus-5 \
--thinking-effort medium

Or with environment variables — see Environment Variables for the complete list.

For each role, Kolega Code resolves the provider and model in this order (first match wins):

  1. CLI flags — e.g. --provider, --model, --fast-model, …
  2. Environment variables — e.g. KOLEGA_CODE_PROVIDER, KOLEGA_CODE_MODEL, the per-role variants, and a project-local .env file.
  3. Saved slot — the Fast/Thinking provider and model saved in Settings.
  4. The active model — the provider/model selected in Settings.

Provider and model are always given together. A flag or environment variable that names only one of them is an error: no model is defaulted from a provider, and no provider is inferred from a model id — the same id can be served by different providers on different credentials, so choosing one would silently choose an account.

A configuration is only valid if a provider/model has been selected and every role’s provider has an API key available (the local llama provider needs none). If a key is missing, the CLI reports exactly which environment variable is required.

The three slots above describe operational roles (main, fast, thinking). Separately, you can give each agent its own model, so a cheap, fast model handles investigation while a stronger model does the building. This applies to top-level agents and to the sub-agents they dispatch.

Agent role Key Runs
Planning planning The plan-mode agent
Building building The main coder agent
Investigation investigation Read-only research/exploration sub-agents
General general General-purpose sub-agents
Browser browser Browser/web sub-agents

Each role inherits the active (long-context) model unless you give it an override — so with nothing configured, behavior is unchanged.

In the full Settings screen, the Agent Models category lets you select a role and set its provider, model, and effort. Leave a role on Default to inherit; pick a provider, model, and thinking effort to override it.

The Browser role requires a model whose catalog entry supports vision. It does not fall back to another model or run in a text-only mode. If Default resolves to a non-vision model, Settings shows a warning and the browser agent fails with a configuration error when dispatched. Select an explicit vision-capable Browser model to enable it.

Or use environment variables, named KOLEGA_CODE_<ROLE>_PROVIDER / _MODEL / _EFFORT:

Terminal window
# Use a fast model for investigation; everything else uses the active model.
export KOLEGA_CODE_INVESTIGATION_PROVIDER=deepseek
export KOLEGA_CODE_INVESTIGATION_MODEL=deepseek-v4-flash
export KOLEGA_CODE_INVESTIGATION_EFFORT=high
# Browser overrides must name a vision-capable model.
export KOLEGA_CODE_BROWSER_PROVIDER=anthropic
export KOLEGA_CODE_BROWSER_MODEL=claude-sonnet-4-6

Resolution order for a role (first match wins): env var → saved Settings → the active model. Each override’s provider must have an API key, exactly like the main roles. (Inside a run_workflow script, an explicit model=/effort= on an agent() call still takes precedence over these per-role defaults.)

Thinking effort is model-specific. Kolega Code validates the selected value against the active model and resets it to the new model’s default when you switch models in the TUI.

Provider/model Values Kolega Code default
Anthropic claude-fable-5 low, medium, high, xhigh, max medium
Anthropic claude-opus-5 low, medium, high, xhigh, max medium
Anthropic claude-sonnet-5 low, medium, high, xhigh, max medium
DeepSeek deepseek-v4-pro none, high, max high
Moonshot kimi-k3 max max
Moonshot kimi-k2.7-code auto auto
Moonshot kimi-k2.6 auto, none auto
Kimi Coding Plan k3, k3[1m] max max
Kimi Coding Plan kimi-for-coding auto, none auto
Z.AI glm-5.2 high, max max
Z.AI glm-5.1 auto, none auto
Fireworks serverless reasoning models none, low, medium, high, max medium
Ollama Cloud thinking models none, low, medium, high, max medium
Ollama Cloud gpt-oss:* low, medium, high medium
Google gemini-3.6-flash minimal, low, medium, high medium
Google gemini-3.5-flash-lite minimal, low, medium, high minimal
Google gemini-3.5-flash minimal, low, medium, high medium
Google gemini-3.1-pro-preview low, medium, high high
OpenAI gpt-5.6-* none, low, medium, high, xhigh, max medium
OpenAI gpt-5.5 minimal, low, medium, high, xhigh medium
OpenAI gpt-5.4* minimal, low, medium, high medium
OpenAI gpt-5.3-codex-spark minimal, low, medium low
xAI grok-4.5 low, medium, high medium
xAI grok-4.3 none, low, medium, high low
Terminal window
kolega-code doctor --project .

doctor prints the resolved provider/model for each role (long, fast, thinking) and whether the necessary API keys are present.