Mix a cheap model with a strong one
This page is for you if your agent already works with one model and you want a better bill or better results. Most of an agent's steps are routine, such as reading a page, writing a short note, or naming a chat. A few are hard, such as planning a long job or recovering when a step fails. Mixing models means sending the routine steps to a cheap model and saving a frontier model for the hard ones, so you pay frontier prices only where they matter.
Applies to: Agent Zero, Atomic Agent, Hermes Agent, OpenClaw, Goose, NanoClaw, and QwenPaw have a documented way to give different jobs different models. Everfern can give screen reading its own model. Eigent and OpenManus only let you switch the one model by hand, as far as this guide could confirm.
Prices were checked on 14 November 2026, and they change.
What the hybrid costs
The hybrid on Pick your
model and budget pairs DeepSeek-V4.1-Flash
(deepseek-flash) for routine steps with Claude Opus 5.5 for
hard ones. The math assumes every step sends 3,000 tokens in and gets
800 tokens back, with no caching and no discounts.
At those sizes, one DeepSeek Flash step costs about $0.00093 in DeepSeek's off-peak hours, and one Claude Opus 5.5 step costs about $0.028. So one strong step costs about as much as 30 cheap ones. DeepSeek's peak hours are 01:00–04:00 and 06:00–10:00 UTC, Monday to Friday, and a cheap step costs double then.
| Month | Steps | Share on Claude Opus 5.5 | Off-peak total | Every cheap step at peak | Same steps, all on Opus |
|---|---|---|---|---|---|
| Light | 4,800 (8 jobs a day, 20 steps each, 30 days) | 10%, or 480 steps | about $17 | about $21 | about $134 |
| Heavy | 24,000 (40 jobs a day, 20 steps each, 30 days) | 25%, or 6,000 steps | about $185 | about $201 | $672 |
In the light month, the 480 Opus steps cost $13.44 and the 4,320 cheap steps cost about $4. The strong model is most of the bill even at 1 step in 10, so the setting that matters most is how many steps reach it. Your own steps may be larger or smaller than 3,000 tokens, so treat these totals as worked examples rather than a quote. The full arithmetic is in the hybrid notes.
Three ways agents split the work
Agents divide work between models in one of three ways, and some offer more than one.
- A fixed side job. The agent has a second model
setting for small internal jobs, such as summaries, chat titles, and
memory notes. Agent Zero calls it the Utility model,
OpenClaw calls it
utilityModel, and Hermes calls these auxiliary tasks. Most steps still go to the main model, so this saves less than the hybrid math above. - A planner and workers. A strong model plans the job and checks the results, while a cheaper model does the pieces. Atomic Agent's Fusion mode, Hermes's delegation settings, and Goose's subagents work this way.
- Switching by job. You keep a cheap model as the
default and pick the strong one by hand for a hard chat, project, or
chat group. Agent Zero's model presets, QwenPaw's chat model menu,
NanoClaw's per-group model, and the
/modelcommand in Goose and OpenClaw work this way.
The hybrid's 1-in-10 and 1-in-4 shares are assumptions about how often a job needs the strong model. This guide could not confirm which share any agent's own split produces, so check your provider's usage page after the first week.
Where each agent keeps the switch
Agent Zero: model presets
A model preset is a named set of models: a Main model, a Utility model, an Embedding model, and optionally a separate Vision Model. On a fresh install, Agent Zero downloads three presets called Default, Efficiency, and Power. The preset menu is the first dropdown on the left of the chat status bar.
- Click the current preset name, then click Edit Presets.
- Click Add, name the preset
Cheap, choose DeepSeek anddeepseek-flashfor the Main model and the Utility model, and click Save. - Click Add again, name it
Strong, choose Anthropic for the Main model, and pick or typeclaude-opus-5-5, the Claude API ID on Anthropic's models page. Click Save. - Open Settings → Agent → Models and choose
Cheapas the global preset for new chats.
What you should see the preset menu shows Cheap and the
short main-model name. When a chat needs harder thinking, you pick
Strong from that menu for that chat only.
An agent profile can also pin a preset, and the Per-project / agent option in the same settings sets a different default for a project.
OpenClaw: primary, fallbacks, and utility model
OpenClaw's main model is agents.defaults.model.primary,
and agents.defaults.model.fallbacks lists models to try in
order when the primary fails. The separate
agents.defaults.utilityModel is an optional lower-cost
model for short internal jobs such as session titles, progress notes,
and transcript summaries. Each agent can override these with
agents.entries.*.model and
agents.entries.*.utilityModel, and a scheduled job can name
its own primary with --model.
openclaw models set <provider/model>
openclaw config set agents.defaults.utilityModel <provider/model>
openclaw models status
Replace <provider/model> with the model reference
from openclaw models list. OpenClaw's own advice is to set
the primary to the strongest current model you can use and to avoid
older or weaker models for agents that use tools or read untrusted
input.
What you should see openclaw models status shows your
strong model as the primary and the cheap one as the utility model.
Hermes Agent: auxiliary tasks and delegation
Hermes sends side jobs, such as image analysis, chat titles, and squeezing a long conversation down, to auxiliary models. By default every auxiliary task uses your main model, and Hermes's docs warn that this adds real cost on an expensive model.
- Run
hermes modeland pick Configure auxiliary models. - Pick a task, such as
title_generationorcompression, then pick a provider and a cheap model. - To send subagents to a cheaper model, pick the
delegation entry. That writes
delegation.provideranddelegation.modelinconfig.yaml.
What you should see config.yaml now names a provider
and model under auxiliary for each task you changed, and
every other task still uses your main model.
The list also includes an approval task. That is the
model that decides, in Hermes's default smart approval
mode, which risky commands to allow or deny on its own. Think twice
before you move that one to a cheap model.
Goose: switching and subagents
In a Goose session, the /model command changes the model
without losing the session. Subagents are separate Goose instances that
can use their own provider and model, which you set with
GOOSE_SUBAGENT_PROVIDER and
GOOSE_SUBAGENT_MODEL. A recipe's
settings.goose_provider and
settings.goose_model take priority over those variables for
its subagents.
export GOOSE_SUBAGENT_PROVIDER=<provider>
export GOOSE_SUBAGENT_MODEL=<model>
That example is for a Mac terminal. In PowerShell on Windows, the
same lines start with $env: instead, for example
$env:GOOSE_SUBAGENT_MODEL="<model>".
What you should see a job that hands work to subagents shows those
subagents running on the model you named. Setting
GOOSE_CLI_SHOW_COST to true shows cost
estimates in the terminal.
A scheduled recipe ignores its own
settings.goose_provider and
settings.goose_model and runs on Goose's global provider
and model. A source check in a GitHub issue thread found this in v1.46.0
and again on the main branch. Before you schedule a recipe, set the
global model to the one you want the schedule to pay for.
Atomic Agent: Fusion mode
Fusion gives one job to two models: an orchestrator that plans, writes a brief for each part, and checks the results, and workers that do the parts, several at once. The default pairing is a cloud orchestrator with local workers on your computer, but two cloud models from two different providers also work.
- Set up two providers in Atomic Agent, for example Anthropic and DeepSeek.
- In the terminal app, run
/runmode fusion. - Run
/runmode statusto see which provider plans and which one works. - If the roles are the wrong way round, run
/runmode swap.
What you should see /runmode status names the
orchestrator and the worker provider, and each running worker shows its
tokens and an estimated cost, for example
· 41.2k tok · $0.03.
The settings live under llm.runMode.fusion in
~/.atomic-agent/config.json, and
atomic-agent config set cannot change them. The terminal
app will not put one provider in both seats. Pin a specific model for
each cloud provider, because a router such as
openrouter/auto can pick small models that ignore Fusion's
instructions.
The turnBudgetUsd setting caps one Fusion turn in US
dollars, counting the orchestrator and every worker. Atomic Agent
estimates that cost from the provider's price list, not from your
bill.
NanoClaw: a model per chat group
NanoClaw sets the model for each chat group. With the default Claude
provider, the model can be the short name sonnet,
opus, or haiku, or a full model ID. A group
with no model set uses NANOCLAW_DEFAULT_MODEL.
ncl groups config update --id <group-id> --provider claude --model haiku
ncl groups restart --id <group-id>
What you should see after the restart, that group answers on the model you set, while your other groups keep theirs.
The OpenCode provider, added with /add-opencode, reaches
DeepSeek, OpenRouter, and other companies. It also has an optional
OPENCODE_SMALL_MODEL setting in .env.
QwenPaw: a default and a per-chat choice
Settings → Models → Default LLM sets the global default model. The dropdown in the upper right of the Chat page picks a different provider and model for the current agent and chat only. Provider settings are shared by all your agents.
- Set a cheap model as the default under Settings → Models → Default LLM and click Save.
- In a chat that needs more, pick the strong model from the dropdown in the upper right.
What you should see new chats use the cheap model, and only the chat you changed uses the strong one.
Eigent, Everfern, and OpenManus
Eigent uses your preferred provider as the default for new tasks, and you can choose a model in the task composer when that choice is offered. This guide could not confirm a setting that gives each agent in an Eigent workforce its own model.
Everfern's README says you can switch providers at any time. Its v1.3.0 settings have a separate Vision Grounding section, so the model that reads your screen can differ from the one you chat with.
OpenManus documents a main [llm] block and an optional
[llm.vision] block for image work in
config/config.toml. Its source code also looks for a block
named after each agent, but this guide could not confirm that as a
supported setting.
Set a spend limit at every provider
A hybrid bills two companies, so it needs two limits. Set them before you paste either key into an agent, and keep them small at first, because a stuck agent repeats its steps until something stops it. Only a few agents have a dollar limit of their own, so the provider limit is your backstop.
| Provider | Where the limit lives | What happens at the limit | Catch |
|---|---|---|---|
| Anthropic | Spend limits page, Monthly spend limit | Requests fail with an error that starts "You have reached your specified API usage limits." | Safe official. The limit cannot go above your account tier's cap. |
| DeepSeek | No monthly limit found. You prepay a balance. | Requests fail with 402, Insufficient Balance. | Safe official. The balance you top up is your limit. |
| OpenAI | Organization limits → Spend, or Project settings → Limits | With Enforce a hard limit on, requests fail with HTTP 429. | Surprise bill. Enforcement can lag, so the bill can pass the number slightly. |
| Google Gemini | Spend tab in Google AI Studio, Monthly spend cap | Spending for that project is held to the cap. | Surprise bill. Google says the cap takes about 10 minutes to act, and you pay for use in that window. |
| OpenRouter | Key limit in each key's settings | Requests on that key are rejected until the limit resets. | Safe official. A key with no limit can spend your whole balance. |
For the light hybrid, an Anthropic limit near $15 and a DeepSeek balance near $10 would cover a month like the one above. Raise them only after you have seen a few weeks of real use.
- Anthropic. Open
platform.claude.com/settings/spend-limits. Next to Monthly spend limit, click Set limit or Adjust limit, and enter your amount. - DeepSeek. On the DeepSeek platform, top up a small balance, and add more only after you have checked what the agent used.
- OpenAI. Open Organization limits → Spend → Edit spend limit, enter a Monthly spend limit, turn on Enforce a hard limit, and click Save. A spend alert alone only sends a notice.
- Google Gemini. In Google AI Studio, open the Spend tab, find Monthly spend cap, click Edit spend cap, and enter your amount.
- OpenRouter. Open the key's settings, set a Credit limit under Key limit, and pick a monthly reset. OpenRouter recommends a limit on every key.
What you should see each provider shows the limit or balance you set. When the agent reaches one, its next step fails with an error instead of running on.
Some agents add a limit of their own, but none of these is your provider bill:
- Atomic Agent's
turnBudgetUsdcaps one Fusion turn, using its own estimate. - OpenClaw has a monthly dollar limit only when it is routed through
LiteLLM, using LiteLLM's
max_budgetandbudget_duration. - Goose's
GOOSE_MAX_TURNScaps the steps it takes without you, at 1000 by default. - Hermes's
spend_limiton an add-on server covers only that server's paid tools.
No monthly dollar limit was found inside OpenClaw, Goose, or Agent Zero, so the provider limit is the one that counts.
Trade-offs: safety versus capability
A cheap model as the main model. This is the setting that brings a bill close to the hybrid totals, because most steps then go to the cheap model.
- You gain: the lowest bill, often a fraction of an all-frontier month.
- You risk: more failed or wandering steps on hard jobs. OpenClaw's docs say smaller models are more vulnerable to prompt injection and advise against weaker models for agents that use tools or read untrusted input.
- Makes sense when: the agent works in a container or a backed-up folder, and you switch to the strong model by hand for anything that plans, sends, or deletes. It does not make sense for an agent that reads email or browses while logged in.
A cheap model in a judging seat. Some side jobs are
not routine at all. In Hermes, the approval task decides
which risky commands to allow on its own in smart mode, and
in Fusion, the orchestrator checks the workers' results.
- You gain: a lower bill on calls that happen often.
- You risk: a weaker model saying yes to a command or a result that a stronger one would refuse.
- Makes sense when: almost never for the approval
seat. Keep judging seats on your strongest model, or set Hermes to
manualapprovals so a person decides.
Many workers at once. Fusion, Hermes delegation, and Goose subagents can run several workers side by side. Goose allows 5 at once by default, and Fusion allows up to 4 cloud workers by default.
- You gain: big jobs finish faster.
- You risk: spending grows with each worker, and
Hermes's
delegation.auto_resume, which is off by default, can restart stopped workers while nobody is watching. - Makes sense when: a spend limit is set at every provider involved, and you have watched one run from start to finish.
Two providers instead of one. A hybrid sends your prompts, and any files the agent reads, to both companies.
- You gain: the best price for each kind of step.
- You risk: two sets of terms, two privacy policies, and two accounts to keep safe.
- Makes sense when: the work is not private, or both providers' terms suit it. For private material, a local model for the routine steps keeps those prompts on your computer, as described in Local models.
A chat-plan sign-in can also serve as the strong model on some agents. It is an unofficial route on most of them, and Subscription sign-ins covers the terms, ban risk, and billing first. For the three questions behind these choices, see Safety versus capability.
Sources
Checked 14 November 2026.
- Hybrid prices and arithmetic, DeepSeek peak hours: the hybrid notes, from https://api-docs.deepseek.com/quick_start/pricing/ and https://platform.claude.com/docs/en/about-claude/pricing
- Agent Zero model presets, Main, Utility, and Embedding models, Settings → Agent → Models: https://raw.githubusercontent.com/agent0ai/agent-zero/main/docs/guides/model-presets.md
- Agent Zero model roles: https://raw.githubusercontent.com/agent0ai/agent-zero/main/docs/setup/installation.md
- Claude Opus 5.5 API ID
claude-opus-5-5: https://platform.claude.com/docs/en/about-claude/models/overview - Agent Zero's Anthropic provider loading model IDs from Anthropic's API: https://raw.githubusercontent.com/agent0ai/agent-zero/main/conf/model_providers.yaml
- OpenClaw primary, fallbacks,
utilityModel, per-agent models, cron--model, CLI, and model advice: https://docs.openclaw.ai/concepts/models - OpenClaw note that smaller models are more vulnerable to prompt injection: https://docs.openclaw.ai/help/faq-models
- Hermes auxiliary models, the auxiliary task list, and delegation settings: https://hermes-agent.nousresearch.com/docs/user-guide/configuration
- Hermes
smartapprovals using an auxiliary model: https://hermes-agent.nousresearch.com/docs/user-guide/security - Goose
/modeland subagents with their own model: https://goose-docs.ai/docs/guides/multi-model/ - Goose
GOOSE_SUBAGENT_PROVIDER,GOOSE_SUBAGENT_MODEL, recipe settings,GOOSE_MAX_TURNS,GOOSE_MAX_CONCURRENT_SUBAGENTS,GOOSE_CLI_SHOW_COST: https://goose-docs.ai/docs/guides/environment-variables.md - Atomic Agent
cloudWorkerscap of 4 and the rule against one provider in both seats: https://atomicagent.io/docs/features/fusion/ - Goose scheduled runs reading the global provider and model, source checks on v1.46.0 and main: https://github.com/aaif-goose/goose/issues/11164
- Atomic Agent Fusion mode, commands, settings,
turnBudgetUsd, cost display: https://atomicagent.io/docs/features/fusion/ - NanoClaw per-group provider and model,
NANOCLAW_DEFAULT_MODEL,OPENCODE_SMALL_MODEL: https://docs.nanoclaw.dev/extend/providers - QwenPaw default model and per-chat model: https://github.com/agentscope-ai/QwenPaw/blob/main/website/public/docs/models.en.md
- QwenPaw shared model configuration across agents: https://github.com/agentscope-ai/QwenPaw/blob/main/website/public/docs/multi-agent.en.md
- Eigent default model and task composer: https://www.eigent.ai/docs/models
- Everfern provider switching: https://raw.githubusercontent.com/Everfern-AI/Everfern/main/README.md
- Everfern v1.3.0 Vision Grounding settings: https://github.com/Everfern-AI/Everfern/blob/v1.3.0/src/app/chat/SettingsPage.tsx
- OpenManus
[llm]and[llm.vision]: https://github.com/FoundationAgents/OpenManus/blob/main/config/config.example.toml - OpenManus per-agent configuration lookup in code: https://github.com/FoundationAgents/OpenManus/blob/main/app/llm.py and https://github.com/FoundationAgents/OpenManus/blob/main/app/agent/base.py
- Anthropic spend limits and the error message: https://platform.claude.com/docs/en/api/rate-limits
- DeepSeek prepaid deduction: https://api-docs.deepseek.com/quick_start/pricing/
- DeepSeek 402 Insufficient Balance: https://api-docs.deepseek.com/quick_start/error_codes
- OpenAI spend limits and hard limit: https://developers.openai.com/api/docs/guides/spend-limits
- Google AI Studio project spend caps and the 10-minute delay: https://blog.google/innovation-and-ai/technology/developers-tools/more-control-over-gemini-api-costs/
- Google spend cap stops paid requests: https://aistudio.google.com/learn/claim-google-ai-plan-credits-in-ai-studio
- OpenRouter key credit limits and the recommendation: https://openrouter.ai/docs/api_reference/authentication
- OpenRouter rejects requests over a key's limit: https://openrouter.ai/docs/guides/best-practices/capping-shared-agent-keys
- No monthly dollar cap in OpenClaw, Goose, or Agent Zero; OpenClaw
LiteLLM budget; Hermes
spend_limit: the safety chapter