# services/hermes/switchyard-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: hermes-switchyard namespace: hermes labels: app: hermes-switchyard data: routes.toml: | schema_version = 1 [llm_clients.classifier] format = "openai_chat" base_url = "http://127.0.0.1:9008/v1" # Classification is advisory and fail-open. Do not make an interactive # request wait through a second slow local inference before using the # route's conservative hosted default. max_retries = 0 [llm_clients.local_low] format = "openai_chat" base_url = "http://hermes-model-gate.hermes.svc.cluster.local:11434/v1" max_retries = 1 [llm_clients.local_medium] format = "openai_chat" base_url = "http://hermes-model-gate.hermes.svc.cluster.local:11434/v1" max_retries = 1 [llm_clients.codex_low] format = "openai_responses" base_url = "http://hermes-codex-broker.hermes.svc.cluster.local:9003/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.codex_medium] format = "openai_responses" base_url = "http://hermes-codex-broker.hermes.svc.cluster.local:9003/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.codex_high] format = "openai_responses" base_url = "http://hermes-codex-broker.hermes.svc.cluster.local:9003/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.codex_xhigh] format = "openai_responses" base_url = "http://hermes-codex-broker.hermes.svc.cluster.local:9003/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.claude_low] format = "anthropic_messages" base_url = "http://hermes-claude-broker.hermes.svc.cluster.local:9006/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.claude_medium] format = "anthropic_messages" base_url = "http://hermes-claude-broker.hermes.svc.cluster.local:9006/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.claude_high] format = "anthropic_messages" base_url = "http://hermes-claude-broker.hermes.svc.cluster.local:9006/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.claude_xhigh] format = "anthropic_messages" base_url = "http://hermes-claude-broker.hermes.svc.cluster.local:9006/v1" api_key_env = "ATLAS_BROKER_KEY" max_retries = 1 [llm_clients.worker_decision] format = "openai_chat" base_url = "http://127.0.0.1:9007/v1" max_retries = 0 [llm_clients.neutral_pool] format = "openai_chat" base_url = "http://127.0.0.1:9005/v1" max_retries = 0 [targets.classifier] id = "qwen2.5:14b-instruct-q4_0" llm_client = "classifier" [targets.local_qwen_low] id = "route/local/qwen2.5-14b/low" llm_client = "local_low" [targets.local_qwen_medium] id = "route/local/qwen2.5-14b/medium" llm_client = "local_medium" [targets.codex_luna_low] id = "route/codex/luna/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_luna_medium] id = "route/codex/luna/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_luna_high] id = "route/codex/luna/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_luna_xhigh] id = "route/codex/luna/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_terra_low] id = "route/codex/terra/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_terra_medium] id = "route/codex/terra/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_terra_high] id = "route/codex/terra/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_terra_xhigh] id = "route/codex/terra/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_sol_low] id = "route/codex/sol/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_sol_medium] id = "route/codex/sol/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_sol_high] id = "route/codex/sol/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_sol_xhigh] id = "route/codex/sol/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_auto_low] id = "route/codex/auto/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_auto_medium] id = "route/codex/auto/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_auto_high] id = "route/codex/auto/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_auto_xhigh] id = "route/codex/auto/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } # AUTO's capability selector and reasoning effort are separate axes. The # brokers resolve each stable selector to its current concrete model. [targets.codex_auto_economy_low] id = "route/codex/auto-economy/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_auto_economy_medium] id = "route/codex/auto-economy/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_auto_economy_high] id = "route/codex/auto-economy/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_auto_economy_xhigh] id = "route/codex/auto-economy/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_auto_balanced_low] id = "route/codex/auto-balanced/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_auto_balanced_medium] id = "route/codex/auto-balanced/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_auto_balanced_high] id = "route/codex/auto-balanced/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_auto_balanced_xhigh] id = "route/codex/auto-balanced/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_auto_advanced_low] id = "route/codex/auto-advanced/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_auto_advanced_medium] id = "route/codex/auto-advanced/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_auto_advanced_high] id = "route/codex/auto-advanced/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_auto_advanced_xhigh] id = "route/codex/auto-advanced/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.codex_auto_frontier_low] id = "route/codex/auto-frontier/low" llm_client = "codex_low" extra_body = { reasoning = { effort = "low" } } [targets.codex_auto_frontier_medium] id = "route/codex/auto-frontier/medium" llm_client = "codex_medium" extra_body = { reasoning = { effort = "medium" } } [targets.codex_auto_frontier_high] id = "route/codex/auto-frontier/high" llm_client = "codex_high" extra_body = { reasoning = { effort = "high" } } [targets.codex_auto_frontier_xhigh] id = "route/codex/auto-frontier/xhigh" llm_client = "codex_xhigh" extra_body = { reasoning = { effort = "xhigh" } } [targets.claude_haiku_low] id = "route/claude/haiku/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_haiku_medium] id = "route/claude/haiku/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_haiku_high] id = "route/claude/haiku/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_haiku_xhigh] id = "route/claude/haiku/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_fable_low] id = "route/claude/fable/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_fable_medium] id = "route/claude/fable/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_fable_high] id = "route/claude/fable/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_fable_xhigh] id = "route/claude/fable/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_sonnet_low] id = "route/claude/sonnet/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_sonnet_medium] id = "route/claude/sonnet/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_sonnet_high] id = "route/claude/sonnet/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_sonnet_xhigh] id = "route/claude/sonnet/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_opus_low] id = "route/claude/opus/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_opus_medium] id = "route/claude/opus/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_opus_high] id = "route/claude/opus/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_opus_xhigh] id = "route/claude/opus/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_auto_low] id = "route/claude/auto/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_auto_medium] id = "route/claude/auto/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_auto_high] id = "route/claude/auto/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_auto_xhigh] id = "route/claude/auto/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_auto_economy_low] id = "route/claude/auto-economy/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_auto_economy_medium] id = "route/claude/auto-economy/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_auto_economy_high] id = "route/claude/auto-economy/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_auto_economy_xhigh] id = "route/claude/auto-economy/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_auto_balanced_low] id = "route/claude/auto-balanced/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_auto_balanced_medium] id = "route/claude/auto-balanced/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_auto_balanced_high] id = "route/claude/auto-balanced/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_auto_balanced_xhigh] id = "route/claude/auto-balanced/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_auto_advanced_low] id = "route/claude/auto-advanced/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_auto_advanced_medium] id = "route/claude/auto-advanced/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_auto_advanced_high] id = "route/claude/auto-advanced/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_auto_advanced_xhigh] id = "route/claude/auto-advanced/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.claude_auto_frontier_low] id = "route/claude/auto-frontier/low" llm_client = "claude_low" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "low" } } [targets.claude_auto_frontier_medium] id = "route/claude/auto-frontier/medium" llm_client = "claude_medium" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "medium" } } [targets.claude_auto_frontier_high] id = "route/claude/auto-frontier/high" llm_client = "claude_high" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "high" } } [targets.claude_auto_frontier_xhigh] id = "route/claude/auto-frontier/xhigh" llm_client = "claude_xhigh" extra_body = { thinking = { type = "adaptive" }, output_config = { effort = "xhigh" } } [targets.worker_codex_luna_low] id = "worker/codex/luna/low" llm_client = "worker_decision" [targets.worker_codex_luna_medium] id = "worker/codex/luna/medium" llm_client = "worker_decision" [targets.worker_codex_luna_high] id = "worker/codex/luna/high" llm_client = "worker_decision" [targets.worker_codex_luna_xhigh] id = "worker/codex/luna/xhigh" llm_client = "worker_decision" [targets.worker_codex_terra_low] id = "worker/codex/terra/low" llm_client = "worker_decision" [targets.worker_codex_terra_medium] id = "worker/codex/terra/medium" llm_client = "worker_decision" [targets.worker_codex_terra_high] id = "worker/codex/terra/high" llm_client = "worker_decision" [targets.worker_codex_terra_xhigh] id = "worker/codex/terra/xhigh" llm_client = "worker_decision" [targets.worker_codex_sol_low] id = "worker/codex/sol/low" llm_client = "worker_decision" [targets.worker_codex_sol_medium] id = "worker/codex/sol/medium" llm_client = "worker_decision" [targets.worker_codex_sol_high] id = "worker/codex/sol/high" llm_client = "worker_decision" [targets.worker_codex_sol_xhigh] id = "worker/codex/sol/xhigh" llm_client = "worker_decision" [targets.worker_claude_haiku_low] id = "worker/claude/haiku/low" llm_client = "worker_decision" [targets.worker_claude_haiku_medium] id = "worker/claude/haiku/medium" llm_client = "worker_decision" [targets.worker_claude_haiku_high] id = "worker/claude/haiku/high" llm_client = "worker_decision" [targets.worker_claude_haiku_xhigh] id = "worker/claude/haiku/xhigh" llm_client = "worker_decision" [targets.worker_claude_fable_low] id = "worker/claude/fable/low" llm_client = "worker_decision" [targets.worker_claude_fable_medium] id = "worker/claude/fable/medium" llm_client = "worker_decision" [targets.worker_claude_fable_high] id = "worker/claude/fable/high" llm_client = "worker_decision" [targets.worker_claude_fable_xhigh] id = "worker/claude/fable/xhigh" llm_client = "worker_decision" [targets.worker_claude_sonnet_low] id = "worker/claude/sonnet/low" llm_client = "worker_decision" [targets.worker_claude_sonnet_medium] id = "worker/claude/sonnet/medium" llm_client = "worker_decision" [targets.worker_claude_sonnet_high] id = "worker/claude/sonnet/high" llm_client = "worker_decision" [targets.worker_claude_sonnet_xhigh] id = "worker/claude/sonnet/xhigh" llm_client = "worker_decision" [targets.worker_claude_opus_low] id = "worker/claude/opus/low" llm_client = "worker_decision" [targets.worker_claude_opus_medium] id = "worker/claude/opus/medium" llm_client = "worker_decision" [targets.worker_claude_opus_high] id = "worker/claude/opus/high" llm_client = "worker_decision" [targets.worker_claude_opus_xhigh] id = "worker/claude/opus/xhigh" llm_client = "worker_decision" [targets.worker_codex_auto_low] id = "worker/codex/auto/low" llm_client = "worker_decision" [targets.worker_codex_auto_medium] id = "worker/codex/auto/medium" llm_client = "worker_decision" [targets.worker_codex_auto_high] id = "worker/codex/auto/high" llm_client = "worker_decision" [targets.worker_codex_auto_xhigh] id = "worker/codex/auto/xhigh" llm_client = "worker_decision" [targets.worker_claude_auto_low] id = "worker/claude/auto/low" llm_client = "worker_decision" [targets.worker_claude_auto_medium] id = "worker/claude/auto/medium" llm_client = "worker_decision" [targets.worker_claude_auto_high] id = "worker/claude/auto/high" llm_client = "worker_decision" [targets.worker_claude_auto_xhigh] id = "worker/claude/auto/xhigh" llm_client = "worker_decision" [targets.worker_codex_auto_economy_low] id = "worker/codex/auto-economy/low" llm_client = "worker_decision" [targets.worker_codex_auto_economy_medium] id = "worker/codex/auto-economy/medium" llm_client = "worker_decision" [targets.worker_codex_auto_economy_high] id = "worker/codex/auto-economy/high" llm_client = "worker_decision" [targets.worker_codex_auto_economy_xhigh] id = "worker/codex/auto-economy/xhigh" llm_client = "worker_decision" [targets.worker_codex_auto_balanced_low] id = "worker/codex/auto-balanced/low" llm_client = "worker_decision" [targets.worker_codex_auto_balanced_medium] id = "worker/codex/auto-balanced/medium" llm_client = "worker_decision" [targets.worker_codex_auto_balanced_high] id = "worker/codex/auto-balanced/high" llm_client = "worker_decision" [targets.worker_codex_auto_balanced_xhigh] id = "worker/codex/auto-balanced/xhigh" llm_client = "worker_decision" [targets.worker_codex_auto_advanced_low] id = "worker/codex/auto-advanced/low" llm_client = "worker_decision" [targets.worker_codex_auto_advanced_medium] id = "worker/codex/auto-advanced/medium" llm_client = "worker_decision" [targets.worker_codex_auto_advanced_high] id = "worker/codex/auto-advanced/high" llm_client = "worker_decision" [targets.worker_codex_auto_advanced_xhigh] id = "worker/codex/auto-advanced/xhigh" llm_client = "worker_decision" [targets.worker_codex_auto_frontier_low] id = "worker/codex/auto-frontier/low" llm_client = "worker_decision" [targets.worker_codex_auto_frontier_medium] id = "worker/codex/auto-frontier/medium" llm_client = "worker_decision" [targets.worker_codex_auto_frontier_high] id = "worker/codex/auto-frontier/high" llm_client = "worker_decision" [targets.worker_codex_auto_frontier_xhigh] id = "worker/codex/auto-frontier/xhigh" llm_client = "worker_decision" [targets.worker_claude_auto_economy_low] id = "worker/claude/auto-economy/low" llm_client = "worker_decision" [targets.worker_claude_auto_economy_medium] id = "worker/claude/auto-economy/medium" llm_client = "worker_decision" [targets.worker_claude_auto_economy_high] id = "worker/claude/auto-economy/high" llm_client = "worker_decision" [targets.worker_claude_auto_economy_xhigh] id = "worker/claude/auto-economy/xhigh" llm_client = "worker_decision" [targets.worker_claude_auto_balanced_low] id = "worker/claude/auto-balanced/low" llm_client = "worker_decision" [targets.worker_claude_auto_balanced_medium] id = "worker/claude/auto-balanced/medium" llm_client = "worker_decision" [targets.worker_claude_auto_balanced_high] id = "worker/claude/auto-balanced/high" llm_client = "worker_decision" [targets.worker_claude_auto_balanced_xhigh] id = "worker/claude/auto-balanced/xhigh" llm_client = "worker_decision" [targets.worker_claude_auto_advanced_low] id = "worker/claude/auto-advanced/low" llm_client = "worker_decision" [targets.worker_claude_auto_advanced_medium] id = "worker/claude/auto-advanced/medium" llm_client = "worker_decision" [targets.worker_claude_auto_advanced_high] id = "worker/claude/auto-advanced/high" llm_client = "worker_decision" [targets.worker_claude_auto_advanced_xhigh] id = "worker/claude/auto-advanced/xhigh" llm_client = "worker_decision" [targets.worker_claude_auto_frontier_low] id = "worker/claude/auto-frontier/low" llm_client = "worker_decision" [targets.worker_claude_auto_frontier_medium] id = "worker/claude/auto-frontier/medium" llm_client = "worker_decision" [targets.worker_claude_auto_frontier_high] id = "worker/claude/auto-frontier/high" llm_client = "worker_decision" [targets.worker_claude_auto_frontier_xhigh] id = "worker/claude/auto-frontier/xhigh" llm_client = "worker_decision" # Switchyard 0.2.0 requires one default_target for every custom classifier. # These targets recurse once into unbiased random routes whose candidates are # split evenly across providers. A classifier outage therefore falls back to # a pool, never directly to either Codex/OpenAI or Claude/Anthropic. [targets.neutral_fast_pool] id = "atlas/fallback/fast" llm_client = "neutral_pool" [targets.neutral_balanced_pool] id = "atlas/fallback/balanced" llm_client = "neutral_pool" [targets.neutral_deep_pool] id = "atlas/fallback/deep" llm_client = "neutral_pool" [targets.neutral_maximum_pool] id = "atlas/fallback/maximum" llm_client = "neutral_pool" [targets.neutral_worker_maximum_pool] id = "atlas/worker/fallback/maximum" llm_client = "neutral_pool" [routes.fallback_fast] id = "atlas/fallback/fast" type = "random" # A classifier outage has no task verdict to justify a lower role. Use the # conservative explicit capability instead of legacy effort-only AUTO. targets = ["codex_auto_advanced_high", "claude_auto_advanced_high"] weights = [1.0, 1.0] context_window = 272000 tool_calling = true reasoning = true [routes.fallback_balanced] id = "atlas/fallback/balanced" type = "random" targets = ["codex_auto_advanced_high", "claude_auto_advanced_high"] weights = [1.0, 1.0] context_window = 272000 tool_calling = true reasoning = true [routes.fallback_deep] id = "atlas/fallback/deep" type = "random" targets = ["codex_auto_advanced_high", "claude_auto_advanced_high"] weights = [1.0, 1.0] context_window = 272000 tool_calling = true reasoning = true [routes.fallback_maximum] id = "atlas/fallback/maximum" type = "random" targets = ["codex_auto_advanced_xhigh", "claude_auto_advanced_xhigh"] weights = [1.0, 1.0] context_window = 272000 tool_calling = true reasoning = true [routes.fallback_worker_maximum] id = "atlas/worker/fallback/maximum" type = "random" # Classifier unavailability uses an explicit conservative capability. Do # not let legacy AUTO's effort-only selector silently choose a model tier. targets = ["worker_codex_auto_advanced_xhigh", "worker_claude_auto_advanced_xhigh"] weights = [1.0, 1.0] context_window = 272000 tool_calling = false reasoning = true [routes.auto_fast] id = "atlas/auto/fast" type = "llm_classifier" mode = "custom" classifier_target = "classifier" # Switchyard falls through this list after a request-local target failure. # Sort by descending capability so recovery never silently drops a role. targets = ["codex_auto_frontier_xhigh", "codex_auto_frontier_high", "codex_auto_frontier_medium", "codex_auto_frontier_low", "claude_auto_frontier_xhigh", "claude_auto_frontier_high", "claude_auto_frontier_medium", "claude_auto_frontier_low", "codex_auto_advanced_xhigh", "codex_auto_advanced_high", "codex_auto_advanced_medium", "codex_auto_advanced_low", "claude_auto_advanced_xhigh", "claude_auto_advanced_high", "claude_auto_advanced_medium", "claude_auto_advanced_low", "codex_auto_balanced_xhigh", "codex_auto_balanced_high", "codex_auto_balanced_medium", "codex_auto_balanced_low", "claude_auto_balanced_xhigh", "claude_auto_balanced_high", "claude_auto_balanced_medium", "claude_auto_balanced_low", "codex_auto_economy_xhigh", "codex_auto_economy_high", "codex_auto_economy_medium", "codex_auto_economy_low", "claude_auto_economy_xhigh", "claude_auto_economy_high", "claude_auto_economy_medium", "claude_auto_economy_low", "neutral_fast_pool"] default_target = "neutral_fast_pool" session_affinity = false recent_turn_window = 4 context_window = 272000 tool_calling = true reasoning = true prompt = """ You are the deterministic routing authority for one private family-assistant model-call boundary. Mildly favor speed, but apply these rules in order. Choose capability before reasoning effort. economy is Luna-class simple work; balanced is Terra-class routine tool work; advanced is Sol-class ordinary complex work; frontier is Astra-class exceptional ambiguity, deeply coupled architecture, or a meaningful quality escalation. High or xhigh effort does not imply frontier: legacy auto at high and xhigh is advanced. Select frontier directly for clearly exceptional work; do not require a failed attempt first. Provider timeout, rate limit, authentication, and transport failures are infrastructure failures: preserve both capability and effort on the alternate provider and never promote them as a quality signal. 1. Set a mandatory minimum effort floor from the whole current objective and recent context: xhigh for critical security work, risky production migrations, destructive or data-loss risk, or consequential independent final/release review; high for difficult debugging, consequential implementation, adversarial review, major architectural tradeoffs, or uncertain production work; medium for ordinary implementation, tool use, analysis, or bounded architecture; low only for simple conversation, formatting, lookup, or mechanical reversible work. Never choose below the floor and never exceed xhigh. If tools are present or the boundary may emit a tool call, the floor is medium even when the user's wording is short. Filesystem, shell, repository, cluster, browser, and image-generation/edit operations are tool work; never route those boundaries to economy or local-low targets. A failing test, failed tool plan, contradicted result, rejected review, or incomplete evidence means the previous quality mark was missed. Raise the next boundary by at least one effort tier and prefer an available advanced target or the other hosted provider; repeated misses require xhigh. Never repeat a failed lower-capability plan unchanged. 2. Treat "think hard", "deeply", "carefully", and equivalent intent as a request to raise capability by at least one tier when the safety floor is lower. Treat "answer quickly" and equivalent intent as permission to choose the fastest target at the safety floor, never below it. An explicit available provider or model wins at the safety floor. 3. Route image creation and editing before general provider preference. When image-generation/edit tools are available and the user asks to create, transform, restore, colorize, or continue editing an image: select codex_auto_balanced_medium. The image tool—not the conversational model—honors the user's local, OpenAI/hosted, or AUTO image-backend choice. Do not select a local Qwen or Claude target for an image-tool boundary: local Qwen cannot reliably carry the full Hermes tool context, and Anthropic supplies the conversation model rather than either configured image backend. 4. Local Qwen is the mandatory routing classifier, but its 8K context and tool protocol are not eligible for foreground Hermes execution. Prefer Codex for implementation, debugging, tests, commands, repository work, and image-tool invocation. Prefer Claude for architecture, ambiguity, synthesis, risk analysis, adversarial analysis, and independent review. Anthropic means Claude; OpenAI means Codex. Never select a provider stated to be unavailable, failed, exhausted, rate-limited, or out of capacity; use the other hosted provider at the same floor. 5. Choose the provider AUTO target at the exact effort floor. AUTO resolves an account-visible economy, balanced, advanced, or frontier general-purpose model from provider metadata. It uses comparable provider cost data only to break ties between adequate models. Re-evaluate every boundary and resolve "continue" or "do it" from recent context. The manual local route remains available only when the user explicitly selects it. """ response_schema = ''' {"type":"object","properties":{"decision":{"type":"object","properties":{"target":{"type":"string","pattern":"^(codex|claude)_auto_(economy|balanced|advanced|frontier)_(low|medium|high|xhigh)$"}},"required":["target"],"additionalProperties":false}},"required":["decision"],"additionalProperties":false} ''' [routes.auto_fast.policy] type = "target_selector" selector = "/decision/target" [routes.auto_balanced] id = "atlas/auto/balanced" type = "llm_classifier" mode = "custom" classifier_target = "classifier" # Switchyard falls through this list after a request-local target failure. # Sort by descending capability so recovery never silently drops a role. targets = ["codex_auto_frontier_xhigh", "codex_auto_frontier_high", "codex_auto_frontier_medium", "codex_auto_frontier_low", "claude_auto_frontier_xhigh", "claude_auto_frontier_high", "claude_auto_frontier_medium", "claude_auto_frontier_low", "codex_auto_advanced_xhigh", "codex_auto_advanced_high", "codex_auto_advanced_medium", "codex_auto_advanced_low", "claude_auto_advanced_xhigh", "claude_auto_advanced_high", "claude_auto_advanced_medium", "claude_auto_advanced_low", "codex_auto_balanced_xhigh", "codex_auto_balanced_high", "codex_auto_balanced_medium", "codex_auto_balanced_low", "claude_auto_balanced_xhigh", "claude_auto_balanced_high", "claude_auto_balanced_medium", "claude_auto_balanced_low", "codex_auto_economy_xhigh", "codex_auto_economy_high", "codex_auto_economy_medium", "codex_auto_economy_low", "claude_auto_economy_xhigh", "claude_auto_economy_high", "claude_auto_economy_medium", "claude_auto_economy_low", "neutral_balanced_pool"] default_target = "neutral_balanced_pool" session_affinity = false recent_turn_window = 4 context_window = 272000 tool_calling = true reasoning = true prompt = """ You are the deterministic routing authority for one private general-assistant model-call boundary. Balance speed and intelligence, then apply these rules in order. Choose capability before reasoning effort. economy is Luna-class simple work; balanced is Terra-class routine tool work; advanced is Sol-class ordinary complex work; frontier is Astra-class exceptional ambiguity, deeply coupled architecture, or a meaningful quality escalation. High or xhigh effort does not imply frontier: legacy auto at high and xhigh is advanced. Select frontier directly for clearly exceptional work; do not require a failed attempt first. Provider timeout, rate limit, authentication, and transport failures are infrastructure failures: preserve both capability and effort on the alternate provider and never promote them as a quality signal. 1. Set a mandatory minimum effort floor from the whole current objective and recent context: xhigh for critical security work, risky production migrations, destructive or data-loss risk, or consequential independent final/release review; high for difficult debugging, consequential implementation, adversarial review, major architectural tradeoffs, or uncertain production work; medium for ordinary implementation, tool use, analysis, or bounded architecture; low only for simple conversation, formatting, lookup, or mechanical reversible work. Never choose below the floor and never exceed xhigh. If tools are present or the boundary may emit a tool call, the floor is medium even when the user's wording is short. Filesystem, shell, repository, cluster, browser, and image-generation/edit operations are tool work; never route those boundaries to economy or local-low targets. A failing test, failed tool plan, contradicted result, rejected review, or incomplete evidence means the previous quality mark was missed. Raise the next boundary by at least one effort tier and prefer an available advanced target or the other hosted provider; repeated misses require xhigh. Never repeat a failed lower-capability plan unchanged. 2. Treat "think hard", "deeply", "carefully", and equivalent intent as a request to raise capability by at least one tier when the safety floor is lower. Treat "answer quickly" and equivalent intent as permission to choose the fastest target at the safety floor, never below it. An explicit available provider or model wins at the safety floor. 3. Route image creation and editing before general provider preference. When image-generation/edit tools are available and the user asks to create, transform, restore, colorize, or continue editing an image: select codex_auto_balanced_medium. The image tool—not the conversational model—honors the user's local, OpenAI/hosted, or AUTO image-backend choice. Do not select a local Qwen or Claude target for an image-tool boundary: local Qwen cannot reliably carry the full Hermes tool context, and Anthropic supplies the conversation model rather than either configured image backend. 4. Local Qwen is the mandatory routing classifier, but its 8K context and tool protocol are not eligible for foreground Hermes execution. Prefer Codex for implementation, debugging, tests, commands, repository work, and image-tool invocation. Prefer Claude for architecture, ambiguity, synthesis, risk analysis, adversarial analysis, and independent review. Anthropic means Claude; OpenAI means Codex. Never select a provider stated to be unavailable, failed, exhausted, rate-limited, or out of capacity; use the other hosted provider at the same floor. 5. Choose the provider AUTO target at the exact effort floor. AUTO resolves an account-visible economy, balanced, advanced, or frontier general-purpose model from provider metadata. It uses comparable provider cost data only to break ties between adequate models. Re-evaluate every boundary and resolve "continue" or "do it" from recent context. The manual local route remains available only when the user explicitly selects it. """ response_schema = ''' {"type":"object","properties":{"decision":{"type":"object","properties":{"target":{"type":"string","pattern":"^(codex|claude)_auto_(economy|balanced|advanced|frontier)_(low|medium|high|xhigh)$"}},"required":["target"],"additionalProperties":false}},"required":["decision"],"additionalProperties":false} ''' [routes.auto_balanced.policy] type = "target_selector" selector = "/decision/target" [routes.auto_deep] id = "atlas/auto/deep" type = "llm_classifier" mode = "custom" classifier_target = "classifier" # Switchyard falls through this list after a request-local target failure. # Sort by descending capability so recovery never silently drops a role. targets = ["codex_auto_frontier_xhigh", "codex_auto_frontier_high", "codex_auto_frontier_medium", "claude_auto_frontier_xhigh", "claude_auto_frontier_high", "claude_auto_frontier_medium", "codex_auto_advanced_xhigh", "codex_auto_advanced_high", "codex_auto_advanced_medium", "claude_auto_advanced_xhigh", "claude_auto_advanced_high", "claude_auto_advanced_medium", "codex_auto_balanced_xhigh", "codex_auto_balanced_high", "codex_auto_balanced_medium", "claude_auto_balanced_xhigh", "claude_auto_balanced_high", "claude_auto_balanced_medium", "neutral_deep_pool"] default_target = "neutral_deep_pool" session_affinity = false recent_turn_window = 6 context_window = 272000 tool_calling = true reasoning = true prompt = """ You are the deterministic routing authority for one operations-triage model-call boundary. Favor evidence and intelligence, then apply these rules in order. Choose capability before reasoning effort. balanced is Terra-class routine triage; advanced is Sol-class ordinary complex work; frontier is Astra-class exceptional ambiguity, deeply coupled architecture, or a meaningful quality escalation. High or xhigh effort does not imply frontier. Select frontier directly for clearly exceptional work; provider timeout, rate limit, authentication, and transport failures preserve capability and effort on the alternate provider and never count as a quality signal. 1. Set a mandatory minimum effort floor from the whole current objective, recent context, and tool evidence: xhigh for critical security incidents, risky production migrations, destructive or data-loss risk, or consequential independent final/release review; high for difficult diagnosis or debugging, consequential implementation, adversarial review, major architectural tradeoffs, or uncertain production work; medium for ordinary diagnosis, implementation, tool use, analysis, or bounded architecture; low only for simple notification summaries, lookup, or mechanical reversible work. Never choose below the floor or above xhigh. If tools are present or the boundary may emit a tool call, the floor is medium even when the user's wording is short. Filesystem, shell, repository, cluster, browser, and image-generation/edit operations are tool work; never route those boundaries to economy targets. A failing test, failed tool plan, contradicted result, rejected review, or incomplete evidence means the previous quality mark was missed. Raise the next boundary by at least one effort tier and prefer an available advanced target or the other hosted provider; repeated misses require xhigh. Never repeat a failed lower-capability plan unchanged. 2. Treat "think hard", "deeply", "carefully", and equivalent intent as a request to raise capability by at least one tier when the safety floor is lower. Treat "answer quickly" and equivalent intent as permission to choose the fastest target at the safety floor, never below it. An explicit available provider or model wins at the safety floor. 3. This quality-first triage route must use a hosted Codex or Claude target. The local Qwen model remains the routing classifier, but its 8K context and tool protocol are not eligible for foreground triage execution. Prefer Codex for implementation, debugging, tests, commands, and repository work. Prefer Claude for diagnosis, architecture, ambiguity, synthesis, risk analysis, adversarial analysis, and independent review. Anthropic means Claude; OpenAI means Codex. Never select a provider stated to be unavailable, failed, exhausted, rate-limited, or out of capacity; use the other provider at the same floor. 4. Choose a provider AUTO target at the exact effort floor. AUTO resolves an account-visible balanced, advanced, or frontier general-purpose model from provider metadata; economy targets are intentionally unavailable on this route. Re-evaluate every boundary and resolve "continue" or "do it" from recent context. """ response_schema = ''' {"type":"object","properties":{"decision":{"type":"object","properties":{"target":{"type":"string","pattern":"^(codex|claude)_auto_(balanced|advanced|frontier)_(medium|high|xhigh)$"}},"required":["target"],"additionalProperties":false}},"required":["decision"],"additionalProperties":false} ''' [routes.auto_deep.policy] type = "target_selector" selector = "/decision/target" [routes.auto_maximum] id = "atlas/auto/maximum" type = "llm_classifier" mode = "custom" classifier_target = "classifier" # Switchyard falls through this list after a request-local target failure. # Sort by descending capability so a frontier selection cannot reach Sol. targets = ["codex_auto_frontier_xhigh", "codex_auto_frontier_high", "claude_auto_frontier_xhigh", "claude_auto_frontier_high", "codex_auto_advanced_xhigh", "codex_auto_advanced_high", "claude_auto_advanced_xhigh", "claude_auto_advanced_high", "neutral_maximum_pool"] default_target = "neutral_maximum_pool" session_affinity = false recent_turn_window = 6 context_window = 272000 tool_calling = true reasoning = true prompt = """ You are the deterministic routing authority for one owner-only engineering model-call boundary. Strongly favor intelligence, verification, and task completion, then apply these rules in order. Choose capability before reasoning effort. advanced is Sol-class ordinary complex work; frontier is Astra-class exceptional ambiguity, deeply coupled architecture, or a meaningful quality escalation. High or xhigh effort does not imply frontier: legacy auto at high and xhigh is advanced. Select frontier directly for clearly exceptional work; provider timeout, rate limit, authentication, and transport failures preserve capability and effort on the alternate provider and never count as a quality signal. 1. This maximum-quality route has an absolute high effort floor for every boundary, including ordinary implementation, tests, tool use, analysis, bounded architecture, lookup, and mechanical work. Raise the floor to xhigh for critical security work, risky production migrations, destructive or data-loss risk, or consequential independent final/release review. Those xhigh triggers are mandatory: never answer one with a high target. Medium and low targets are intentionally unavailable on this route. Never choose below the floor or above xhigh. A failing test, failed tool plan, contradicted result, rejected review, or incomplete evidence raises the next boundary to xhigh and should switch to the strongest suitable available target or other hosted provider. Never repeat a failed high-capability plan unchanged. 2. Treat "think hard", "deeply", "carefully", and equivalent intent as a request to raise capability by at least one tier when the safety floor is lower. Treat "answer quickly" and equivalent intent as permission to choose the fastest target at the safety floor, never below it. An explicit available provider or model wins at the safety floor. 3. This owner-only engineering route must use a hosted Codex or Claude target. The local Qwen model remains the routing classifier, but its 8K context and tool protocol are not eligible for foreground agent execution. Prefer Codex for implementation, debugging, tests, commands, and repository changes. Prefer Claude for architecture, ambiguity, synthesis, risk analysis, adversarial analysis, and independent review. Anthropic means Claude; OpenAI means Codex. Never select a provider stated to be unavailable, failed, exhausted, rate-limited, or out of capacity; use the other provider at the same floor. 4. Choose a provider AUTO target at high or xhigh only. AUTO resolves an account-visible advanced or frontier general-purpose model from provider metadata. Medium and low targets are intentionally unavailable on this route. Re-evaluate every boundary and resolve "continue" or "do it" from recent context. """ response_schema = ''' {"type":"object","properties":{"decision":{"type":"object","properties":{"target":{"type":"string","pattern":"^(codex|claude)_auto_(advanced|frontier)_(high|xhigh)$"}},"required":["target"],"additionalProperties":false}},"required":["decision"],"additionalProperties":false} ''' [routes.auto_maximum.policy] type = "target_selector" selector = "/decision/target" [routes.worker_auto_maximum] id = "atlas/worker/auto/maximum" type = "llm_classifier" mode = "custom" classifier_target = "classifier" # Worker decisions have the same FallThrough behavior as hosted routes. # Keep the fallback pool capability-descending; the CLI guard below also # reselects an exact alternate floor if a lower target is ever reported. targets = ["worker_codex_auto_frontier_xhigh", "worker_codex_auto_frontier_high", "worker_codex_auto_frontier_medium", "worker_codex_auto_frontier_low", "worker_claude_auto_frontier_xhigh", "worker_claude_auto_frontier_high", "worker_claude_auto_frontier_medium", "worker_claude_auto_frontier_low", "worker_codex_auto_advanced_xhigh", "worker_codex_auto_advanced_high", "worker_codex_auto_advanced_medium", "worker_codex_auto_advanced_low", "worker_claude_auto_advanced_xhigh", "worker_claude_auto_advanced_high", "worker_claude_auto_advanced_medium", "worker_claude_auto_advanced_low", "worker_codex_auto_balanced_xhigh", "worker_codex_auto_balanced_high", "worker_codex_auto_balanced_medium", "worker_codex_auto_balanced_low", "worker_claude_auto_balanced_xhigh", "worker_claude_auto_balanced_high", "worker_claude_auto_balanced_medium", "worker_claude_auto_balanced_low", "worker_codex_auto_economy_xhigh", "worker_codex_auto_economy_high", "worker_codex_auto_economy_medium", "worker_codex_auto_economy_low", "worker_claude_auto_economy_xhigh", "worker_claude_auto_economy_high", "worker_claude_auto_economy_medium", "worker_claude_auto_economy_low", "neutral_worker_maximum_pool"] default_target = "neutral_worker_maximum_pool" session_affinity = false recent_turn_window = 6 context_window = 272000 tool_calling = false reasoning = true prompt = """ You are the deterministic routing authority for one durable engineering worker launch. Choose exactly one configured target. Apply these steps in order. First choose capability, then effort. economy selects Luna-class simple work; balanced selects Terra-class routine work; advanced selects Sol-class ordinary complex work; frontier selects Astra-class exceptional ambiguity, deeply coupled architecture, or meaningful quality escalation. High and xhigh are effort only: legacy auto high and xhigh select advanced. Select frontier directly when the task is clearly exceptional; do not wait for a failed attempt. A failed test, rejected review, contradictory result, or incomplete evidence is a quality signal: carry a capability floor forward and change the failed plan. Timeout, rate-limit, authentication, transport, and provider-capacity failures are infrastructure signals: preserve both capability and effort across the alternate provider without promotion. 1. Set a mandatory minimum effort floor from the whole objective: - xhigh: critical security work; a risky production migration; destructive or data-loss risk; or an independent final/release review of consequential changes. - high: difficult debugging, consequential implementation, adversarial review, architecture with major tradeoffs, or uncertain production work. - medium: ordinary implementation, tests, analysis, or bounded architecture work. - low: only mechanical, reversible, tightly bounded work such as a typo, formatting, or a simple lookup. An implementation or test change requires at least medium effort even when it is small or well-scoped; low is reserved for mechanical edits and lookups. Keep this effort floor independent from capability selection. Never choose below the floor and never exceed xhigh. If the objective records a failing test, failed attempt, contradicted result, rejected review, or incomplete evidence from a previous worker, raise effort by at least one tier and prefer the available advanced target or the other hosted provider. Repeated quality misses require xhigh; never launch the same failed lower-capability plan unchanged. 2. Determine provider availability before provider preference: - Anthropic and Claude name the same provider. If either is failed, unavailable, exhausted, rate-limited, or out of capacity, Claude is unavailable. - OpenAI and Codex name the same provider. If either is failed, unavailable, exhausted, rate-limited, or out of capacity, Codex is unavailable. - Never select an unavailable provider. Use the available provider at the same effort floor. 3. Choose the provider for the dominant action when both are available: - Codex: implementation, debugging, tests, commands, and repository changes. - Claude: architecture, ambiguity, synthesis, risk analysis, adversarial analysis, and independent review. A final independent review is Claude; implementing review findings is Codex. 4. Choose an available provider AUTO target at the exact effort floor. AUTO resolves the current account-visible economy, balanced, advanced, or frontier general-purpose model. It uses comparable provider cost data only to break ties among models that already satisfy the capability requirement. Do not infer a tier from an unfamiliar model name or unadvertised effort support. Examples: Critical security migration final review -> worker_claude_auto_frontier_xhigh. Implement critical security review fixes -> worker_codex_auto_advanced_xhigh. Difficult intermittent production failure -> worker_codex_auto_advanced_high. Ordinary component design -> worker_claude_auto_balanced_medium. Small implementation with focused tests -> worker_codex_auto_balanced_medium. One spelling correction -> worker_codex_auto_economy_low. Anthropic exhausted + critical independent final review -> worker_codex_auto_frontier_xhigh. OpenAI exhausted + difficult repository implementation -> worker_claude_auto_advanced_high. Before responding, verify the provider is available and effort is not below the floor. Return only the required decision object. """ response_schema = ''' {"type":"object","properties":{"decision":{"type":"object","properties":{"target":{"type":"string","pattern":"^worker_(codex|claude)_auto_(economy|balanced|advanced|frontier)_(low|medium|high|xhigh)$"}},"required":["target"],"additionalProperties":false}},"required":["decision"],"additionalProperties":false} ''' [routes.worker_auto_maximum.policy] type = "target_selector" selector = "/decision/target" [routes.worker_manual_codex_low] id = "atlas/worker/manual/codex/low" type = "random" targets = ["worker_codex_auto_low"] [routes.worker_manual_codex_medium] id = "atlas/worker/manual/codex/medium" type = "random" targets = ["worker_codex_auto_medium"] [routes.worker_manual_codex_high] id = "atlas/worker/manual/codex/high" type = "random" targets = ["worker_codex_auto_high"] [routes.worker_manual_codex_xhigh] id = "atlas/worker/manual/codex/xhigh" type = "random" targets = ["worker_codex_auto_xhigh"] [routes.worker_manual_claude_low] id = "atlas/worker/manual/claude/low" type = "random" targets = ["worker_claude_auto_low"] [routes.worker_manual_claude_medium] id = "atlas/worker/manual/claude/medium" type = "random" targets = ["worker_claude_auto_medium"] [routes.worker_manual_claude_high] id = "atlas/worker/manual/claude/high" type = "random" targets = ["worker_claude_auto_high"] [routes.worker_manual_claude_xhigh] id = "atlas/worker/manual/claude/xhigh" type = "random" targets = ["worker_claude_auto_xhigh"] # Exact manual worker constraints retain the legacy routes above and add # capability-aware overrides for operators and capability-floor recovery. [routes.worker_manual_codex_economy_low] id = "atlas/worker/manual/codex/economy/low" type = "random" targets = ["worker_codex_auto_economy_low"] [routes.worker_manual_codex_economy_medium] id = "atlas/worker/manual/codex/economy/medium" type = "random" targets = ["worker_codex_auto_economy_medium"] [routes.worker_manual_codex_economy_high] id = "atlas/worker/manual/codex/economy/high" type = "random" targets = ["worker_codex_auto_economy_high"] [routes.worker_manual_codex_economy_xhigh] id = "atlas/worker/manual/codex/economy/xhigh" type = "random" targets = ["worker_codex_auto_economy_xhigh"] [routes.worker_manual_codex_balanced_low] id = "atlas/worker/manual/codex/balanced/low" type = "random" targets = ["worker_codex_auto_balanced_low"] [routes.worker_manual_codex_balanced_medium] id = "atlas/worker/manual/codex/balanced/medium" type = "random" targets = ["worker_codex_auto_balanced_medium"] [routes.worker_manual_codex_balanced_high] id = "atlas/worker/manual/codex/balanced/high" type = "random" targets = ["worker_codex_auto_balanced_high"] [routes.worker_manual_codex_balanced_xhigh] id = "atlas/worker/manual/codex/balanced/xhigh" type = "random" targets = ["worker_codex_auto_balanced_xhigh"] [routes.worker_manual_codex_advanced_low] id = "atlas/worker/manual/codex/advanced/low" type = "random" targets = ["worker_codex_auto_advanced_low"] [routes.worker_manual_codex_advanced_medium] id = "atlas/worker/manual/codex/advanced/medium" type = "random" targets = ["worker_codex_auto_advanced_medium"] [routes.worker_manual_codex_advanced_high] id = "atlas/worker/manual/codex/advanced/high" type = "random" targets = ["worker_codex_auto_advanced_high"] [routes.worker_manual_codex_advanced_xhigh] id = "atlas/worker/manual/codex/advanced/xhigh" type = "random" targets = ["worker_codex_auto_advanced_xhigh"] [routes.worker_manual_codex_frontier_low] id = "atlas/worker/manual/codex/frontier/low" type = "random" targets = ["worker_codex_auto_frontier_low"] [routes.worker_manual_codex_frontier_medium] id = "atlas/worker/manual/codex/frontier/medium" type = "random" targets = ["worker_codex_auto_frontier_medium"] [routes.worker_manual_codex_frontier_high] id = "atlas/worker/manual/codex/frontier/high" type = "random" targets = ["worker_codex_auto_frontier_high"] [routes.worker_manual_codex_frontier_xhigh] id = "atlas/worker/manual/codex/frontier/xhigh" type = "random" targets = ["worker_codex_auto_frontier_xhigh"] [routes.worker_manual_claude_economy_low] id = "atlas/worker/manual/claude/economy/low" type = "random" targets = ["worker_claude_auto_economy_low"] [routes.worker_manual_claude_economy_medium] id = "atlas/worker/manual/claude/economy/medium" type = "random" targets = ["worker_claude_auto_economy_medium"] [routes.worker_manual_claude_economy_high] id = "atlas/worker/manual/claude/economy/high" type = "random" targets = ["worker_claude_auto_economy_high"] [routes.worker_manual_claude_economy_xhigh] id = "atlas/worker/manual/claude/economy/xhigh" type = "random" targets = ["worker_claude_auto_economy_xhigh"] [routes.worker_manual_claude_balanced_low] id = "atlas/worker/manual/claude/balanced/low" type = "random" targets = ["worker_claude_auto_balanced_low"] [routes.worker_manual_claude_balanced_medium] id = "atlas/worker/manual/claude/balanced/medium" type = "random" targets = ["worker_claude_auto_balanced_medium"] [routes.worker_manual_claude_balanced_high] id = "atlas/worker/manual/claude/balanced/high" type = "random" targets = ["worker_claude_auto_balanced_high"] [routes.worker_manual_claude_balanced_xhigh] id = "atlas/worker/manual/claude/balanced/xhigh" type = "random" targets = ["worker_claude_auto_balanced_xhigh"] [routes.worker_manual_claude_advanced_low] id = "atlas/worker/manual/claude/advanced/low" type = "random" targets = ["worker_claude_auto_advanced_low"] [routes.worker_manual_claude_advanced_medium] id = "atlas/worker/manual/claude/advanced/medium" type = "random" targets = ["worker_claude_auto_advanced_medium"] [routes.worker_manual_claude_advanced_high] id = "atlas/worker/manual/claude/advanced/high" type = "random" targets = ["worker_claude_auto_advanced_high"] [routes.worker_manual_claude_advanced_xhigh] id = "atlas/worker/manual/claude/advanced/xhigh" type = "random" targets = ["worker_claude_auto_advanced_xhigh"] [routes.worker_manual_claude_frontier_low] id = "atlas/worker/manual/claude/frontier/low" type = "random" targets = ["worker_claude_auto_frontier_low"] [routes.worker_manual_claude_frontier_medium] id = "atlas/worker/manual/claude/frontier/medium" type = "random" targets = ["worker_claude_auto_frontier_medium"] [routes.worker_manual_claude_frontier_high] id = "atlas/worker/manual/claude/frontier/high" type = "random" targets = ["worker_claude_auto_frontier_high"] [routes.worker_manual_claude_frontier_xhigh] id = "atlas/worker/manual/claude/frontier/xhigh" type = "random" targets = ["worker_claude_auto_frontier_xhigh"] [routes.manual_codex_auto] id = "atlas/manual/codex/auto" type = "random" targets = ["codex_auto_medium"] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_auto_low] id = "atlas/manual/codex/auto/low" type = "random" targets = ["codex_auto_low"] [routes.manual_codex_auto_medium] id = "atlas/manual/codex/auto/medium" type = "random" targets = ["codex_auto_medium"] [routes.manual_codex_auto_high] id = "atlas/manual/codex/auto/high" type = "random" targets = ["codex_auto_high"] [routes.manual_codex_auto_xhigh] id = "atlas/manual/codex/auto/xhigh" type = "random" targets = ["codex_auto_xhigh"] [routes.manual_claude_auto] id = "atlas/manual/claude/auto" type = "random" targets = ["claude_auto_medium"] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_auto_low] id = "atlas/manual/claude/auto/low" type = "random" targets = ["claude_auto_low"] [routes.manual_claude_auto_medium] id = "atlas/manual/claude/auto/medium" type = "random" targets = ["claude_auto_medium"] [routes.manual_claude_auto_high] id = "atlas/manual/claude/auto/high" type = "random" targets = ["claude_auto_high"] [routes.manual_claude_auto_xhigh] id = "atlas/manual/claude/auto/xhigh" type = "random" targets = ["claude_auto_xhigh"] # Hosted callers can pin the same independent capability/effort pairs as # durable workers. The unqualified legacy AUTO routes above remain advanced. [routes.manual_codex_auto_economy_low] id = "atlas/manual/codex/auto-economy/low" type = "random" targets = ["codex_auto_economy_low"] [routes.manual_codex_auto_economy_medium] id = "atlas/manual/codex/auto-economy/medium" type = "random" targets = ["codex_auto_economy_medium"] [routes.manual_codex_auto_economy_high] id = "atlas/manual/codex/auto-economy/high" type = "random" targets = ["codex_auto_economy_high"] [routes.manual_codex_auto_economy_xhigh] id = "atlas/manual/codex/auto-economy/xhigh" type = "random" targets = ["codex_auto_economy_xhigh"] [routes.manual_codex_auto_balanced_low] id = "atlas/manual/codex/auto-balanced/low" type = "random" targets = ["codex_auto_balanced_low"] [routes.manual_codex_auto_balanced_medium] id = "atlas/manual/codex/auto-balanced/medium" type = "random" targets = ["codex_auto_balanced_medium"] [routes.manual_codex_auto_balanced_high] id = "atlas/manual/codex/auto-balanced/high" type = "random" targets = ["codex_auto_balanced_high"] [routes.manual_codex_auto_balanced_xhigh] id = "atlas/manual/codex/auto-balanced/xhigh" type = "random" targets = ["codex_auto_balanced_xhigh"] [routes.manual_codex_auto_advanced_low] id = "atlas/manual/codex/auto-advanced/low" type = "random" targets = ["codex_auto_advanced_low"] [routes.manual_codex_auto_advanced_medium] id = "atlas/manual/codex/auto-advanced/medium" type = "random" targets = ["codex_auto_advanced_medium"] [routes.manual_codex_auto_advanced_high] id = "atlas/manual/codex/auto-advanced/high" type = "random" targets = ["codex_auto_advanced_high"] [routes.manual_codex_auto_advanced_xhigh] id = "atlas/manual/codex/auto-advanced/xhigh" type = "random" targets = ["codex_auto_advanced_xhigh"] [routes.manual_codex_auto_frontier_low] id = "atlas/manual/codex/auto-frontier/low" type = "random" targets = ["codex_auto_frontier_low"] [routes.manual_codex_auto_frontier_medium] id = "atlas/manual/codex/auto-frontier/medium" type = "random" targets = ["codex_auto_frontier_medium"] [routes.manual_codex_auto_frontier_high] id = "atlas/manual/codex/auto-frontier/high" type = "random" targets = ["codex_auto_frontier_high"] [routes.manual_codex_auto_frontier_xhigh] id = "atlas/manual/codex/auto-frontier/xhigh" type = "random" targets = ["codex_auto_frontier_xhigh"] [routes.manual_claude_auto_economy_low] id = "atlas/manual/claude/auto-economy/low" type = "random" targets = ["claude_auto_economy_low"] [routes.manual_claude_auto_economy_medium] id = "atlas/manual/claude/auto-economy/medium" type = "random" targets = ["claude_auto_economy_medium"] [routes.manual_claude_auto_economy_high] id = "atlas/manual/claude/auto-economy/high" type = "random" targets = ["claude_auto_economy_high"] [routes.manual_claude_auto_economy_xhigh] id = "atlas/manual/claude/auto-economy/xhigh" type = "random" targets = ["claude_auto_economy_xhigh"] [routes.manual_claude_auto_balanced_low] id = "atlas/manual/claude/auto-balanced/low" type = "random" targets = ["claude_auto_balanced_low"] [routes.manual_claude_auto_balanced_medium] id = "atlas/manual/claude/auto-balanced/medium" type = "random" targets = ["claude_auto_balanced_medium"] [routes.manual_claude_auto_balanced_high] id = "atlas/manual/claude/auto-balanced/high" type = "random" targets = ["claude_auto_balanced_high"] [routes.manual_claude_auto_balanced_xhigh] id = "atlas/manual/claude/auto-balanced/xhigh" type = "random" targets = ["claude_auto_balanced_xhigh"] [routes.manual_claude_auto_advanced_low] id = "atlas/manual/claude/auto-advanced/low" type = "random" targets = ["claude_auto_advanced_low"] [routes.manual_claude_auto_advanced_medium] id = "atlas/manual/claude/auto-advanced/medium" type = "random" targets = ["claude_auto_advanced_medium"] [routes.manual_claude_auto_advanced_high] id = "atlas/manual/claude/auto-advanced/high" type = "random" targets = ["claude_auto_advanced_high"] [routes.manual_claude_auto_advanced_xhigh] id = "atlas/manual/claude/auto-advanced/xhigh" type = "random" targets = ["claude_auto_advanced_xhigh"] [routes.manual_claude_auto_frontier_low] id = "atlas/manual/claude/auto-frontier/low" type = "random" targets = ["claude_auto_frontier_low"] [routes.manual_claude_auto_frontier_medium] id = "atlas/manual/claude/auto-frontier/medium" type = "random" targets = ["claude_auto_frontier_medium"] [routes.manual_claude_auto_frontier_high] id = "atlas/manual/claude/auto-frontier/high" type = "random" targets = ["claude_auto_frontier_high"] [routes.manual_claude_auto_frontier_xhigh] id = "atlas/manual/claude/auto-frontier/xhigh" type = "random" targets = ["claude_auto_frontier_xhigh"] # A zero-weight target is not selected initially. Switchyard still walks # this ordered list after 403/408/429/5xx, timeout, or transport failure. [routes.manual_codex_luna] id = "atlas/manual/codex/luna" type = "random" targets = ["codex_luna_low", "claude_haiku_low", "codex_terra_medium", "claude_sonnet_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_terra] id = "atlas/manual/codex/terra" type = "random" targets = ["codex_terra_medium", "claude_sonnet_medium", "codex_sol_high", "claude_sonnet_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_sol] id = "atlas/manual/codex/sol" type = "random" targets = ["codex_sol_high", "claude_opus_high", "claude_sonnet_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_haiku] id = "atlas/manual/claude/haiku" type = "random" targets = ["claude_haiku_low", "codex_luna_low", "claude_sonnet_medium", "codex_terra_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_sonnet] id = "atlas/manual/claude/sonnet" type = "random" targets = ["claude_sonnet_high", "codex_sol_high", "claude_opus_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_opus] id = "atlas/manual/claude/opus" type = "random" targets = ["claude_opus_high", "codex_sol_high", "claude_sonnet_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_fable] id = "atlas/manual/claude/fable" type = "random" targets = ["claude_fable_medium", "codex_terra_medium", "claude_sonnet_medium", "codex_luna_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_luna_low] id = "atlas/manual/codex/luna/low" type = "random" targets = ["codex_luna_low", "claude_haiku_low", "codex_terra_low", "claude_fable_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_luna_medium] id = "atlas/manual/codex/luna/medium" type = "random" targets = ["codex_luna_medium", "claude_haiku_medium", "codex_terra_medium", "claude_fable_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_luna_high] id = "atlas/manual/codex/luna/high" type = "random" targets = ["codex_luna_high", "claude_haiku_high", "codex_terra_high", "claude_fable_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_luna_xhigh] id = "atlas/manual/codex/luna/xhigh" type = "random" targets = ["codex_luna_xhigh", "claude_haiku_xhigh", "codex_terra_xhigh", "claude_fable_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_terra_low] id = "atlas/manual/codex/terra/low" type = "random" targets = ["codex_terra_low", "claude_fable_low", "claude_sonnet_low", "codex_sol_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_terra_medium] id = "atlas/manual/codex/terra/medium" type = "random" targets = ["codex_terra_medium", "claude_fable_medium", "claude_sonnet_medium", "codex_sol_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_terra_high] id = "atlas/manual/codex/terra/high" type = "random" targets = ["codex_terra_high", "claude_fable_high", "claude_sonnet_high", "codex_sol_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_terra_xhigh] id = "atlas/manual/codex/terra/xhigh" type = "random" targets = ["codex_terra_xhigh", "claude_fable_xhigh", "claude_sonnet_xhigh", "codex_sol_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_sol_low] id = "atlas/manual/codex/sol/low" type = "random" targets = ["codex_sol_low", "claude_sonnet_low", "claude_opus_low", "codex_terra_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_sol_medium] id = "atlas/manual/codex/sol/medium" type = "random" targets = ["codex_sol_medium", "claude_sonnet_medium", "claude_opus_medium", "codex_terra_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_sol_high] id = "atlas/manual/codex/sol/high" type = "random" targets = ["codex_sol_high", "claude_sonnet_high", "claude_opus_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_codex_sol_xhigh] id = "atlas/manual/codex/sol/xhigh" type = "random" targets = ["codex_sol_xhigh", "claude_sonnet_xhigh", "claude_opus_xhigh", "codex_terra_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_haiku_low] id = "atlas/manual/claude/haiku/low" type = "random" targets = ["claude_haiku_low", "codex_luna_low", "claude_fable_low", "codex_terra_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_haiku_medium] id = "atlas/manual/claude/haiku/medium" type = "random" targets = ["claude_haiku_medium", "codex_luna_medium", "claude_fable_medium", "codex_terra_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_haiku_high] id = "atlas/manual/claude/haiku/high" type = "random" targets = ["claude_haiku_high", "codex_luna_high", "claude_fable_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_haiku_xhigh] id = "atlas/manual/claude/haiku/xhigh" type = "random" targets = ["claude_haiku_xhigh", "codex_luna_xhigh", "claude_fable_xhigh", "codex_terra_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_fable_low] id = "atlas/manual/claude/fable/low" type = "random" targets = ["claude_fable_low", "codex_terra_low", "claude_sonnet_low", "codex_luna_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_fable_medium] id = "atlas/manual/claude/fable/medium" type = "random" targets = ["claude_fable_medium", "codex_terra_medium", "claude_sonnet_medium", "codex_luna_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_fable_high] id = "atlas/manual/claude/fable/high" type = "random" targets = ["claude_fable_high", "codex_terra_high", "claude_sonnet_high", "codex_luna_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_fable_xhigh] id = "atlas/manual/claude/fable/xhigh" type = "random" targets = ["claude_fable_xhigh", "codex_terra_xhigh", "claude_sonnet_xhigh", "codex_luna_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_sonnet_low] id = "atlas/manual/claude/sonnet/low" type = "random" targets = ["claude_sonnet_low", "codex_sol_low", "codex_terra_low", "claude_fable_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_sonnet_medium] id = "atlas/manual/claude/sonnet/medium" type = "random" targets = ["claude_sonnet_medium", "codex_sol_medium", "codex_terra_medium", "claude_fable_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_sonnet_high] id = "atlas/manual/claude/sonnet/high" type = "random" targets = ["claude_sonnet_high", "codex_sol_high", "codex_terra_high", "claude_fable_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_sonnet_xhigh] id = "atlas/manual/claude/sonnet/xhigh" type = "random" targets = ["claude_sonnet_xhigh", "codex_sol_xhigh", "codex_terra_xhigh", "claude_fable_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_opus_low] id = "atlas/manual/claude/opus/low" type = "random" targets = ["claude_opus_low", "codex_sol_low", "claude_sonnet_low", "codex_terra_low"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_opus_medium] id = "atlas/manual/claude/opus/medium" type = "random" targets = ["claude_opus_medium", "codex_sol_medium", "claude_sonnet_medium", "codex_terra_medium"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_opus_high] id = "atlas/manual/claude/opus/high" type = "random" targets = ["claude_opus_high", "codex_sol_high", "claude_sonnet_high", "codex_terra_high"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_claude_opus_xhigh] id = "atlas/manual/claude/opus/xhigh" type = "random" targets = ["claude_opus_xhigh", "codex_sol_xhigh", "claude_sonnet_xhigh", "codex_terra_xhigh"] weights = [1, 0, 0, 0] context_window = 272000 tool_calling = true reasoning = true [routes.manual_local_qwen] id = "atlas/manual/local/qwen-14b" type = "random" targets = ["local_qwen_medium", "codex_terra_medium", "claude_sonnet_medium", "codex_luna_low", "claude_haiku_low"] weights = [1, 0, 0, 0, 0] context_window = 131072 tool_calling = true reasoning = false