Model overrides
Override the strong or weak model on a single agent without touching deployment defaults.
Model overrides
Every agent runs against two model roles, both of which inherit the deployment default unless you override them on the agent:
- Strong — the main reasoning loop. Falls back to the deployment
strong_model. - Weak — cheap, fast calls: summarization, classification, the kind of work that doesn't need the strong model. Falls back to the deployment
weak_model.
An override changes only which model serves that role for this one agent. The deployment's defaults, and every other agent, are untouched.
Two ways to override
A strong_model / weak_model override is an AgentModelOverride. You set it one of two ways, and they resolve differently at call time:
{ provider, model }— name a provider and a model identifier. Wacht uses the deployment's configured key for that provider. Use this for the common case: same keys, different model.{ profile_id }— point at a named provider profile. The profile carries its own API key, base URL, organization, and default model. Use this when the override needs different credentials or a custom endpoint than the deployment defaults — a separate billing account, a self-hosted gateway, an OpenAI-compatible proxy.
If profile_id is set without a model, the role uses the profile's default_model. A model on the override always wins over the profile's default.
API shape
Set the override on POST /ai/agents at create time or PATCH /ai/agents/{agent_id} to change it.
{
"strong_model": { "provider": "openai", "model": "<provider-model-id>" },
"weak_model": { "profile_id": "<provider_profile_id>" }
}On PATCH, each role is independent:
| Field | Effect |
|---|---|
strong_model set | Replace the override for that role. |
clear_strong_model: true | Drop the override; fall back to the deployment default. |
| Role omitted | Leave it unchanged. |
clear_<role>_model and a new value for the same role are mutually exclusive — sending both returns 400. The same pattern applies to weak_model / clear_weak_model.
Supported providers
openai, openrouter, gemini (the deployment default is gemini). The model value is whatever identifier that provider's API accepts. Wacht does not pre-validate model names — an unknown identifier surfaces as a provider error on the first call, not at save time.
A profile_id that isn't an enabled profile on the deployment fails the run with Agent model profile <id> is not available for this deployment. Confirm the profile is enabled before pointing an agent at it.
Where to configure
Console → AI agents → pick an agent → Models. Toggle "Override" on a role to set it; toggle off to clear it back to the deployment default.
When to use this
- Run a stronger or cheaper model on one agent as an experiment before changing the deployment default.
- Route a vision-heavy or long-context agent to a model the rest of the deployment doesn't need.
- Bill a specific agent against a separate provider account via a dedicated profile.
If most agents need the same model, change the deployment default instead — that's one edit, not one per agent.