Agent → Model Routing

Each agent can be assigned a specific provider and model, with a sequential fallback chain for reliability. Routing is defined in [agents.*] sections — both the knowledge-pipeline tasks (notion_extraction, contradiction_detection, synthesis, dispatch) and the 13 agent profiles (Sisyphus, Prometheus, Explore, …).

Basic Routing

[agents.Sisyphus]
provider = "anthropic"
model = "claude-sonnet-4-6"
fallbacks = [
    { provider = "openai", model = "gpt-4o" },
    { provider = "deepseek", model = "deepseek-v4-flash" }
]

The router tries providers in order: primary → first fallback → second fallback → ... → Mock (always available).

Agent Routing Fields

FieldRequiredDescription
providerYesPrimary provider name (must match a [providers.*] key)
modelNoModel override (falls back to provider's default_model)
fallbacksNoOrdered fallback chain if primary fails
sensitivityNoMax data sensitivity this agent may handle: "Public", "Private", or "Confidential" — Private/Confidential data is routed to local providers only

Agent identity traits (role, LLM preferences, clearance) are registry-hardcoded — they are not configurable per agent. Only the routing fields above are read from config.

Fallback Chain

Each fallback step can specify:

FieldDescription
providerProvider name for this fallback step
modelOverride model (optional, uses provider's default if omitted)
timeout_secsTimeout for this step (optional)
[agents.dispatch]
provider = "anthropic"
model = "claude-sonnet-4-6"
fallbacks = [
    { provider = "openai", model = "gpt-4o", timeout_secs = 30 },
    { provider = "ollama", model = "qwen3.6:35b-mlx" }
]

Sensitivity-Aware Routing

When sensitivity is set to "Private" or "Confidential", Zen enforces local-only routing for sensitive data:

  • Private/Confidential data is never sent to cloud providers
  • If no local LLM is available, the agent returns an error instead of falling back to cloud
# Knowledge pipeline — private data, local-first
[agents.notion_extraction]
provider = "ollama"
model = "qwen3.6:35b-mlx"
fallbacks = [{ provider = "deepseek", model = "deepseek-v4-flash" }]
sensitivity = "Private"

Complete Agent Configuration Examples

Orchestrator Tier (requires capable models)

[agents.Sisyphus]
provider = "anthropic"
model = "claude-sonnet-4-6"
fallbacks = [
    { provider = "openai", model = "gpt-4o" },
    { provider = "deepseek", model = "deepseek-v4-flash" }
]

Knowledge Pipeline (local-first)

[agents.notion_extraction]
provider = "ollama"
model = "qwen3.6:35b-mlx"
fallbacks = [
    { provider = "deepseek", model = "deepseek-v4-flash" },
    { provider = "openai", model = "gpt-4o-mini" }
]
sensitivity = "Private"

Fast Explorer (cost-optimized)

[agents.Explore]
provider = "anthropic"
model = "claude-haiku-4-5"
fallbacks = [{ provider = "openai", model = "gpt-4o-mini" }]

Next: Environment Variable Overrides