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.
Supported providers
Section titled “Supported providers”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_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 |
Model roles
Section titled “Model roles”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.
Set models per role
Section titled “Set models per role”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:
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 mediumOr with environment variables — see Environment Variables for the complete list.
How a model gets chosen
Section titled “How a model gets chosen”For each role, Kolega Code resolves the provider and model in this order (first match wins):
- CLI flags — e.g.
--provider,--model,--fast-model, … - Environment variables — e.g.
KOLEGA_CODE_PROVIDER,KOLEGA_CODE_MODEL, the per-role variants, and a project-local.envfile. - Saved slot — the Fast/Thinking provider and model saved in Settings.
- 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.
Per-agent models
Section titled “Per-agent models”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:
# Use a fast model for investigation; everything else uses the active model.export KOLEGA_CODE_INVESTIGATION_PROVIDER=deepseekexport KOLEGA_CODE_INVESTIGATION_MODEL=deepseek-v4-flashexport KOLEGA_CODE_INVESTIGATION_EFFORT=high
# Browser overrides must name a vision-capable model.export KOLEGA_CODE_BROWSER_PROVIDER=anthropicexport KOLEGA_CODE_BROWSER_MODEL=claude-sonnet-4-6Resolution 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
Section titled “Thinking effort”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 |
Check what’s active
Section titled “Check what’s active”kolega-code doctor --project .doctor prints the resolved provider/model for each role (long, fast, thinking)
and whether the necessary API keys are present.