The substrate-MCP wrapper.
Provider lock-in dies here.
One MCP server. Eight LLM adapters. Any MCP client — Claude Code, Cursor, Cline, Windsurf, custom — can call any model — local or cloud — through the same interface. Survive any model deprecation. Mix tiers per call. Stay sovereign.
He's right. The agent-runtime and the model are different things. The wrapper between them is ~300 lines of node. This is that wrapper.
The 8 adapters
The 3 MCP tools exposed
complete({ model, prompt, system?, temperature?, max_tokens? })
→ routes via config · returns { text, tier, model_used, latency_ms, tokens_in, tokens_out, fellBack }
list_models()
→ { ollama: [...], anthropic: [...], openrouter: [...], _routes: [...] }
probe()
→ { ollama: {ok:true}, femto: {ok:false}, anthropic: {ok:true}, ... }
Wire it in (Claude Code)
{
"mcpServers": {
"fall-bridge": {
"command": "node",
"args": ["/path/to/fall-mcp-bridge/server.mjs"],
"env": {
"FALL_MCP_ANTHROPIC_KEY": "sk-ant-…",
"FALL_MCP_OPENROUTER_KEY": "sk-or-…"
}
}
}
}
Same shape for Cursor, Cline, Windsurf — the bridge is stdio.
What this unlocks
- Survive model deprecations. Fable 5 going away (or Sonnet 5 next year) is a config edit, not a code edit.
- Mix tiers per call. Cheap local for cheap calls; expensive cloud only when needed. Same agent.
- FemtoLLM first-class. Thomas's atomic intelligence unit is routable like any other model id.
- Per-domain fine-tunes. Train a small model for legal, accounting, 3D — route by id, no special integration.
- No SDK lock-in. Replace Claude Code with any MCP-capable client; your model layer survives.
Part of v20.3
The bridge strengthens the §4 COMPUTE sovereignty layer · collapses si-didy's T2+T3 cascade rows into one MCP call (§6) · brings the FemtoLLM cube into the bridge's address space (§20) · is itself a wedge against model-provider lock-in (§21) · embodies the Init axiom 📐🦆 — whatever brain answered, the response IS init (§22).