Own Your Stack.

Own Your Stack/The Substrate/dario

Own your routing

dario

Your Claude subscription, in any tool — one local endpoint, your plan, your machine.

github → MIT the substrate routing

01What it is

You already pay for Claude — but your subscription works in exactly one place. The plan you bought sits in Claude Code while every other tool — Cursor, Aider, Cline, Continue, Zed, your own scripts — asks for its own API key and bills you again, per token, for the model you already have.

dario is one local endpoint that closes that gap. Point any Anthropic- or OpenAI-compatible tool at http://localhost:3456 and it routes through the Claude subscription you already pay for — your own credentials, your own machine, one URL every tool can share. No per-tool config, no second key, nothing phones home. It runs with zero runtime dependencies and is MIT-licensed, so the whole thing is auditable.

dario · setup
# install and log in to your own plan
npm install -g @askalf/dario
dario login        # Pro, Max 5x, or Max 20x
dario proxy        # one local endpoint

# point any Anthropic-compat tool at it
export ANTHROPIC_BASE_URL=http://localhost:3456
export ANTHROPIC_API_KEY=dario
Fig. 1 — one endpoint, your subscription, any tool.

02What it does

One endpoint for every tool

Point any Anthropic- or OpenAI-compatible client at http://localhost:3456 and you're done. Claude Code, Cursor, Aider, Cline, Roo Code, Continue, Zed, Windsurf, the @anthropic-ai/claude-agent-sdk, and your own scripts all run on your subscription — no per-tool key, no second bill.

Routes Claude and other providers

dario reads each request, picks the backend that owns it, and forwards in that backend's native protocol — translating between Anthropic and OpenAI shapes as needed. Add OpenAI, Groq, OpenRouter, or a local Ollama once and the same proxy speaks all of them; force a backend with a model prefix like openai:gpt-4o or claude:opus.

Multi-account pool with failover

Drop two or more Claude accounts in ~/.dario/accounts/ and pool mode activates: each request routes to the account with the most headroom, multi-turn sessions pin to one account so the prompt cache survives, and an in-flight 429 fails over to a peer before your client ever sees the error.

An overage guard that halts on the first surprise

The moment an upstream response bills to anything other than your subscription pool, dario halts the proxy instead of bleeding requests in the same shape. It's an allow-list, not a match on one word — anything that isn't a known subscription bucket trips it — and you resume with dario resume, a keypress in the TUI, or the cooldown.

A live control panel, and stays current

Run dario with no args for a full-screen TUI — live request stream, per-model burn rate, rate-limit utilization, billing-bucket breakdown, in-place config editor. Drift watchers track Claude Code's wire shape across releases and auto-open fixes, so your routing keeps working without a config change. Deterministic, zero required runtime deps, MIT-licensed.


03Where it sits

Part of The Substrate.

dario carries the routing; The Substrate is the layer every model call flows through — a router you own, local-first inference, and a cache so you don't pay for the same answer twice.

Own the routing, not just the bill.

dario is open source and MIT-licensed. Read the code, run it on your own box, point your tools at one endpoint you control.

View dario on GitHub →