1276 lines
48 KiB
YAML
1276 lines
48 KiB
YAML
# 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" } }
|
|
|
|
[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.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"
|
|
|
|
# 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"
|
|
targets = ["codex_auto_medium", "claude_auto_medium"]
|
|
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_high", "claude_auto_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_high", "claude_auto_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_xhigh", "claude_auto_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"
|
|
targets = ["worker_codex_auto_xhigh", "worker_claude_auto_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.
|
|
# Keep both xhigh providers first so recovery can escalate, never downgrade.
|
|
targets = ["codex_auto_xhigh", "claude_auto_xhigh", "codex_auto_high", "claude_auto_high", "codex_auto_medium", "claude_auto_medium", "codex_auto_low", "claude_auto_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.
|
|
|
|
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_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, or advanced 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","enum":["codex_auto_low","codex_auto_medium","codex_auto_high","codex_auto_xhigh","claude_auto_low","claude_auto_medium","claude_auto_high","claude_auto_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.
|
|
# Keep both xhigh providers first so recovery can escalate, never downgrade.
|
|
targets = ["codex_auto_xhigh", "claude_auto_xhigh", "codex_auto_high", "claude_auto_high", "codex_auto_medium", "claude_auto_medium", "codex_auto_low", "claude_auto_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.
|
|
|
|
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_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, or advanced 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","enum":["codex_auto_low","codex_auto_medium","codex_auto_high","codex_auto_xhigh","claude_auto_low","claude_auto_medium","claude_auto_high","claude_auto_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.
|
|
# Keep both xhigh providers first so recovery can escalate, never downgrade.
|
|
targets = ["claude_auto_xhigh", "codex_auto_xhigh", "claude_auto_high", "codex_auto_high", "claude_auto_medium", "codex_auto_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.
|
|
|
|
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 or advanced 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","enum":["claude_auto_medium","claude_auto_high","claude_auto_xhigh","codex_auto_medium","codex_auto_high","codex_auto_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.
|
|
# Keep both xhigh providers first so recovery can escalate, never downgrade.
|
|
targets = ["codex_auto_xhigh", "claude_auto_xhigh", "codex_auto_high", "claude_auto_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.
|
|
|
|
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 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","enum":["codex_auto_high","codex_auto_xhigh","claude_auto_high","claude_auto_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"
|
|
targets = ["worker_codex_auto_low", "worker_codex_auto_medium", "worker_codex_auto_high", "worker_codex_auto_xhigh", "worker_claude_auto_low", "worker_claude_auto_medium", "worker_claude_auto_high", "worker_claude_auto_xhigh", "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.
|
|
|
|
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.
|
|
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, or advanced
|
|
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_xhigh.
|
|
Implement critical security review fixes -> worker_codex_auto_xhigh.
|
|
Difficult intermittent production failure -> worker_codex_auto_high.
|
|
Ordinary component design -> worker_claude_auto_medium.
|
|
One spelling correction -> worker_codex_auto_low.
|
|
Anthropic exhausted + critical independent final review ->
|
|
worker_codex_auto_xhigh.
|
|
OpenAI exhausted + difficult repository implementation ->
|
|
worker_claude_auto_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","enum":["worker_codex_auto_low","worker_codex_auto_medium","worker_codex_auto_high","worker_codex_auto_xhigh","worker_claude_auto_low","worker_claude_auto_medium","worker_claude_auto_high","worker_claude_auto_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"]
|
|
|
|
[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"]
|
|
|
|
# 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
|