Cheapest models for coding agents
A coding agent needs a model that calls tools, and it sends a lot of tokens. These are the cheapest models with tool calling on llm.buzz right now, and how to point Claude Code, Codex, Cline, OpenCode and Aider at them.

Every number on this page comes from llm.buzz’s public catalog, read 27 October 2026, 05:51 UTC.
A coding agent reads files, calls tools and sends the conversation back on every turn, so it spends far more tokens than a chat does. Two things decide which model it can use: whether the model calls tools, and what each million tokens costs.
The cheapest models with tool calling
Right now 48 models on llm.buzz call tools. The table lists the cheapest, by input price and then output price, in US dollars per million tokens.
| Model | Input per 1M | Output per 1M | Context |
|---|---|---|---|
| OpenAI: GPT-5 Nano | $0.0450 | $0.3600 | 400K |
| OpenAI: gpt-oss-120b | $0.0500 | $0.2500 | 128K |
| Google: Gemma 4 26B A4B | $0.0700 | $0.3400 | 256K |
| NVIDIA: Nemotron 3 Super | $0.0850 | $0.4000 | 256K |
| Anthropic: Claude Haiku 5.5 | $0.1000 | $0.5000 | 1M |
| OpenAI: GPT-6 Luna | $0.1000 | $0.5000 | 1.1M |
| Surogate: Surogate 3.7 Flash | $0.1000 | $0.7500 | 1M |
| Qwen: Qwen3.8 Flash | $0.1125 | $0.3525 | 1M |
| Mistral: Mistral Small 3.2 24B | $0.1297 | $0.3026 | 128K |
| Xiaomi: MiMo-V2.6-Flash | $0.1400 | $0.2800 | 1M |
And 38 more models on Models.
From the public models list, read 27 October 2026, 05:51 UTC.
Each price is the model’s first-ranked provider’s, with any running discount applied. The model page lists every provider’s price.
Every provider of a model serves every capability the model declares. Before a provider serves a model, an automated check sends it real requests, tool calls included when the model declares tools, and a provider that fails stays out of routing. So a model in this table calls tools on whichever of its providers answers.
Get a key
Create a key in the console under Keys, and keep it in the LLM_BUZZ_KEY environment variable.
export LLM_BUZZ_KEY="exp_vk_..."The examples below use openai/gpt-oss-120b: the cheapest model with tool calling that has a context window of at least 131,072 tokens and at least two live providers that serve it directly, besides llm.buzz’s own route. An agent’s session soon outgrows a smaller window, and a second company takes over when one fails. Any name from the table works in its place, so choose one whose context window fits your sessions. Model names are matched exactly.
Claude Code
Claude Code speaks the Anthropic Messages API. Point it at llm.buzz in your shell, or in the env block of ~/.claude/settings.json. Claude Code’s own default model names do not resolve on llm.buzz, so set the models it uses to names from llm.buzz: ANTHROPIC_MODEL for the main model, and ANTHROPIC_DEFAULT_HAIKU_MODEL for the small model it runs background tasks on.
export ANTHROPIC_BASE_URL="https://api.llm.buzz/api"
export ANTHROPIC_AUTH_TOKEN="$LLM_BUZZ_KEY"
export ANTHROPIC_MODEL="openai/gpt-oss-120b"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="openai/gpt-oss-120b"
claudeTo run Claude Code on Claude, set ANTHROPIC_MODEL to anthropic/claude-sonnet-5.5 and ANTHROPIC_DEFAULT_HAIKU_MODEL to anthropic/claude-haiku-5.5. If you switch models with /model, set ANTHROPIC_DEFAULT_SONNET_MODEL and ANTHROPIC_DEFAULT_OPUS_MODEL to names from llm.buzz too.
If Claude Code stops at startup over fields the model does not know, also set CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, as its gateway docs suggest.
Codex CLI
Add llm.buzz as a model provider in ~/.codex/config.toml. Codex speaks the Responses API to custom providers. It ignores the provider in a project’s .codex/config.toml, so keep it in the file in your home directory.
model = "openai/gpt-oss-120b"
model_provider = "llmbuzz"
[model_providers.llmbuzz]
name = "llm.buzz"
base_url = "https://api.llm.buzz/api/v1"
env_key = "LLM_BUZZ_KEY"
wire_api = "responses"Cline
Open Cline’s settings and fill in the provider:
| Field | Value |
|---|---|
| API Provider | OpenAI Compatible |
| Base URL | https://api.llm.buzz/api/v1 |
| API Key | Your llm.buzz key |
| Model ID | openai/gpt-oss-120b |
OpenCode
Add llm.buzz as a provider in opencode.json, in your project or in ~/.config/opencode/, then pick the model with /models.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"llmbuzz": {
"npm": "@ai-sdk/openai-compatible",
"name": "llm.buzz",
"options": {
"baseURL": "https://api.llm.buzz/api/v1",
"apiKey": "{env:LLM_BUZZ_KEY}"
},
"models": { "openai/gpt-oss-120b": { "name": "openai/gpt-oss-120b" } }
}
}
}Aider
Set the OpenAI variables, then start Aider with the model’s name after openai/.
export OPENAI_API_BASE="https://api.llm.buzz/api/v1"
export OPENAI_API_KEY="$LLM_BUZZ_KEY"
aider --model openai/openai/gpt-oss-120bOther agents have their own setup on the Apps page.
Let the cheapest provider answer first
A model with several providers tries them in its routing preset’s order. Add :floor to the model’s name and the cheapest provider goes first for that request. It works anywhere the agent takes a model name:
export ANTHROPIC_MODEL="openai/gpt-oss-120b:floor"Keep a conversation on its cache
An agent resends the same long context on every turn. A session_id field in the request, or an x-session-id header, names the conversation so its turns stay on the provider that holds its cache. Send it if your agent lets you add a field or a header. Claude models cache only where a request marks the prompt; Prompt caching explains the marker and what a cached read costs.
See your agent on Rankings
Coding agents that llm.buzz recognizes get their usage counted under their own name on Rankings. Most are recognized by their User-Agent, so there is nothing to set.