Fast triage flow
- Check
GET /healthfirst. - Confirm inbound auth behavior.
- Run one known-good non-stream request.
- Inspect
x-astrolabe-*response headers. - Inspect server logs for route and model decisions.
Missing OPENROUTER_API_KEY
What it means: Astrolabe cannot call upstream models.
Fix:
- Set
OPENROUTER_API_KEYin.envor deployment env vars. - Restart the process.
- Re-check
/healthand retry request.
401 unauthorized
What it means: inbound key does not matchASTROLABE_API_KEY.
Fix:
- Send
Authorization: Bearer <your_astrolabe_key>orx-api-key. - Verify there is no trailing whitespace in env value.
- Confirm client and server are using the same key.
rate_limit_exceeded
What it means: request volume exceeded configured budget while ASTROLABE_RATE_LIMIT_ENABLED=true.
Fix:
- Wait for
retry-afterseconds and retry. - Increase
ASTROLABE_RATE_LIMIT_MAX_REQUESTS. - Increase
ASTROLABE_RATE_LIMIT_WINDOW_MS. - Disable limiter if needed for trusted/private traffic.
high_stakes_confirmation_required
What it means: high-stakes signal detected while ASTROLABE_HIGH_STAKES_CONFIRM_MODE=strict.
Fix:
- Resend with
x-astrolabe-confirmed: <token>. - Or include
metadata.astrolabe_confirmed: "<token>"in request body. - Ensure token matches
ASTROLABE_HIGH_STAKES_CONFIRM_TOKENexactly.
invalid_json or payload_too_large
What it means: request body is malformed JSON or exceeds payload limit.
Fix:
- Validate JSON before sending.
- Ensure
messagesis present and valid. - Reduce payload size if request is too large.
Need full JSON instead of SSE
What it means: streaming is default. Fix:- send
"stream": falsein request body
Upstream OpenRouter errors
What it means: Astrolabe reached upstream but provider/model call failed. Check:- Key validity and account credits.
- Model availability at provider.
- Payload shape compatibility.
- OpenRouter status.
Unexpected routing choice
What it means: policy interpreted request differently than expected. Check:x-astrolabe-categoryandx-astrolabe-complexityheaders.- active modes from
/health. - whether cost guardrails or premium-route blocks changed final route.
- whether
ASTROLABE_FORCE_MODELis set.
est_usd=n/a in logs
What it means: upstream usage token fields were not provided.
Fix:
- expected for some providers/responses; no action required unless cost reporting is mandatory
Config change had no effect
Check:- Astrolabe was restarted after env changes.
- You edited the correct environment scope (local vs deployment).
/healthshows expected normalized values.- Variable names and values match Configuration.
Last-resort debug snapshot
Capture these for debugging:- request body (without secrets)
- response status + headers (
x-astrolabe-*) /healthoutput- relevant server log line (
category,route,chosen_model,final_model,selfcheck_score)

