NewWacht Bench is live — AI-assisted development for Wacht
GuidesAgents

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:

FieldEffect
strong_model setReplace the override for that role.
clear_strong_model: trueDrop the override; fall back to the deployment default.
Role omittedLeave 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.

On this page