✓ Node v24.13.0 (recommended)
✓ OmniRoute service key resolved
✓ MCP bearer token resolved
Bringing up the local ChainLayer stack…
● OmniRoute (model gateway) already running — http://localhost:20128/v1 (reusing)
✓ hardened: no-key → 401, service-key → 200
● ChainLayer2 MCP (tool gateway) already running — http://localhost:8930/mcp (reusing)
✓ /health → 200, /mcp no-token → 401 (bearer-gated)
✓ Local ChainLayer stack is up.
▶ chainlayer doctor (composition health)
────────────────────────────────────────────────────────────
[PASS] omniroute.health 25ms reachable at http://localhost:20128/v1 (HTTP 401)
[PASS] omniroute.auth 21ms no key → 401, service key → 200
[PASS] omniroute.catalog 20ms 115 models (auto/best-coding, auto/best-reasoning, auto/best-fast, …)
[PASS] omniroute.completion 2384ms auto/best-coding → "pong"
[PASS] mcp.health 2ms http://localhost:8930/health → 200
[PASS] mcp.auth 4ms no token → 401, token → HTTP 200 (reaches init)
[PASS] mcp.initialize 15ms initialized "chainlayer2-local" (http://localhost:8930/mcp)
[PASS] mcp.tools 0ms 12 tools (math_eval, math_simplify, math_derivative, math_solve, unit_convert, matrix_op, …)
[PASS] mcp.math_eval 3ms math_eval(173 * 419) = 72487
[WARN] mcp.protocol_inspect 3ms RE plane disabled / requires host binary (expected)
[WARN] unreal.availability 0ms Unreal MCP not federated/reachable (expected in this deployment)
summary: 9 pass, 2 warn, 0 fail — OK (exit 0)