- classify category and complexity
- derive route modifiers
- choose a lane
- select candidates from the static manifest
Lane defaults
| Lane | Default candidate order |
|---|---|
auto | m27 -> qwen35Plus -> kimiThinking -> kimiK25 -> sonnet -> opus |
coding | m27 -> qwenCoderNext -> glm5 -> sonnet -> opus |
research | qwen35Plus -> kimiThinking -> m27 -> sonnet -> opus |
vision | kimiK25 -> qwen35Plus -> gem25Pro -> sonnet |
strict-json | m27 -> glm47Flash -> glm5 -> gpt54Mini -> gpt54 -> sonnet |
cheap | qwen35Flash -> grok -> m25 -> dsCoder -> gpt5Nano |
safe | sonnet -> opus |
research:grok420,gem31Provision:gem31Pro,gem31FlashLite
ASTROLABE_ALLOW_PREVIEW_MODELS=truemetadata.astrolabe.allow_preview=true
Key routing rules
m27is the default executor for most non-trivialcore_loop,planning,orchestration,coding,research, andreflectionrequests.m25only appears as a strict-budget or fallback path.- Multimodal inputs promote the
visionlane. - Tool presence alone does not promote
strict-json. - Explicit structured output and schema-sensitive work promote the
strict-jsonlane. - Inside
strict-json,m27still gets the first attempt and specialists only activate after concrete validation failure. - High-stakes or approval-sensitive work promotes the
safelane. - Untrusted content plus tools cannot stay on cheap weak tiers.
- Sticky execution can keep the current workhorse stable across active OpenClaw sessions.
Profiles and guardrails
ASTROLABE_DEFAULT_PROFILE changes the final route after base lane selection:
default: normal behaviorstrict-budget: allowsm25to replacem27on cheaper low-risk routessafe-untrusted: pair with untrusted-content metadata for stricter safety floorslow-latency: keeps the same lane logic but still routes ontom27max-capability: promotes more critical work upward
ASTROLABE_ROUTING_PROFILE still adjusts complexity before route resolution:
budgetbalancedquality
ASTROLABE_ALLOW_PREVIEW_MODELSASTROLABE_STICKY_EXECUTOR_ENABLEDASTROLABE_SKIP_LOW_RISK_VERIFIERASTROLABE_SKIP_LOW_RISK_CLASSIFIER
Escalation
Astrolabe only escalates non-stream responses. Important paths:m25 -> m27qwen35Flash/grok/qwenCoderNext/dsCoder -> m27m27 -> glm47Flash -> glm5for strict JSON / schema recovery after validation failurem27 -> qwen35PlusorkimiThinkingfor research specializationm27 -> kimiK25orqwen35Plusfor multimodal specializationm27 -> sonnet -> opusonly on critical or safe-lane escalation
Safety controls
- High-stakes detection can require explicit confirmation.
- Tool calls are inspected before Astrolabe returns them.
- Tool governance is capability-driven first and name-inferred only as a fallback.
- Read-only tool profiles can block mutating tool calls.
external_comms,credential_access,remote_write, andfinancial_or_destructiveactions require approval.untrusted_contentblocks those dangerous capabilities outright and forces at leastm27.- Responses file and image URLs can be allowlisted.
Transparency
Use:GET /v1/modelsGET /v1/models?view=rawGET /v1/lanes
x-astrolabe-categoryx-astrolabe-lanex-astrolabe-initial-modelx-astrolabe-final-modelx-astrolabe-route-labelx-astrolabe-sticky-appliedx-astrolabe-sticky-reasonx-astrolabe-verification-skippedx-astrolabe-transport-fallback-only

