Skip to main content
Astrolabe routes in four steps:
  1. classify category and complexity
  2. derive route modifiers
  3. choose a lane
  4. select candidates from the static manifest
Cheap low-risk turns can now skip both the model classifier and the verifier. Active OpenClaw work sessions can also reuse the last successful in-lane model when sticky execution metadata is present.

Lane defaults

LaneDefault candidate order
autom27 -> qwen35Plus -> kimiThinking -> kimiK25 -> sonnet -> opus
codingm27 -> qwenCoderNext -> glm5 -> sonnet -> opus
researchqwen35Plus -> kimiThinking -> m27 -> sonnet -> opus
visionkimiK25 -> qwen35Plus -> gem25Pro -> sonnet
strict-jsonm27 -> glm47Flash -> glm5 -> gpt54Mini -> gpt54 -> sonnet
cheapqwen35Flash -> grok -> m25 -> dsCoder -> gpt5Nano
safesonnet -> opus
Experimental branches exist behind an opt-in preview gate:
  • research: grok420, gem31Pro
  • vision: gem31Pro, gem31FlashLite
Those candidates only appear when both of these are true:
  • ASTROLABE_ALLOW_PREVIEW_MODELS=true
  • metadata.astrolabe.allow_preview=true

Key routing rules

  • m27 is the default executor for most non-trivial core_loop, planning, orchestration, coding, research, and reflection requests.
  • m25 only appears as a strict-budget or fallback path.
  • Multimodal inputs promote the vision lane.
  • Tool presence alone does not promote strict-json.
  • Explicit structured output and schema-sensitive work promote the strict-json lane.
  • Inside strict-json, m27 still gets the first attempt and specialists only activate after concrete validation failure.
  • High-stakes or approval-sensitive work promotes the safe lane.
  • 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 behavior
  • strict-budget: allows m25 to replace m27 on cheaper low-risk routes
  • safe-untrusted: pair with untrusted-content metadata for stricter safety floors
  • low-latency: keeps the same lane logic but still routes onto m27
  • max-capability: promotes more critical work upward
ASTROLABE_ROUTING_PROFILE still adjusts complexity before route resolution:
  • budget
  • balanced
  • quality
Additional router controls:
  • ASTROLABE_ALLOW_PREVIEW_MODELS
  • ASTROLABE_STICKY_EXECUTOR_ENABLED
  • ASTROLABE_SKIP_LOW_RISK_VERIFIER
  • ASTROLABE_SKIP_LOW_RISK_CLASSIFIER

Escalation

Astrolabe only escalates non-stream responses. Important paths:
  • m25 -> m27
  • qwen35Flash/grok/qwenCoderNext/dsCoder -> m27
  • m27 -> glm47Flash -> glm5 for strict JSON / schema recovery after validation failure
  • m27 -> qwen35Plus or kimiThinking for research specialization
  • m27 -> kimiK25 or qwen35Plus for multimodal specialization
  • m27 -> sonnet -> opus only 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, and financial_or_destructive actions require approval.
  • untrusted_content blocks those dangerous capabilities outright and forces at least m27.
  • Responses file and image URLs can be allowlisted.

Transparency

Use:
  • GET /v1/models
  • GET /v1/models?view=raw
  • GET /v1/lanes
And inspect response headers:
  • x-astrolabe-category
  • x-astrolabe-lane
  • x-astrolabe-initial-model
  • x-astrolabe-final-model
  • x-astrolabe-route-label
  • x-astrolabe-sticky-applied
  • x-astrolabe-sticky-reason
  • x-astrolabe-verification-skipped
  • x-astrolabe-transport-fallback-only