Point your tools at it · Codex CLI · OpenAI SDK · any OpenAI-compatible tool

Codex CLI, the OpenAI SDK and any OpenAI-compatible tool on the plans you already pay for

Two base URLs, one key. Anthropic-shaped clients talk to http://localhost:3456; OpenAI-shaped clients — chat/completions and, since 6.3, the Responses API — talk to http://localhost:3456/v1. The key is dario (any value works until you set DARIO_API_KEY, which then has to match).

Setup

Codex CLI · OpenAI SDK · any OpenAI-compatible tool

export OPENAI_BASE_URL=http://localhost:3456/v1
export OPENAI_API_KEY=dario

Ask for gpt-5.5 and it is served by your ChatGPT plan once you've run dario add altman. Ask for claude-sonnet-5 on the same URL and it is served by your Claude plan, translated both ways. Ask for gpt-4o or anything else your API-key backend lists and it goes there byte-for-byte. Names that don't look like OpenAI's (llama-3.3-70b, qwen-coder) need the provider prefix below; dario refuses them rather than guess:

dario backend add openai     --key=sk-proj-...
dario backend add groq       --key=gsk_...    --base-url=https://api.groq.com/openai/v1
dario backend add openrouter --key=sk-or-...  --base-url=https://openrouter.ai/api/v1
dario backend add local      --key=anything   --base-url=http://127.0.0.1:11434/v1

Force a backend with a prefix: openai:gpt-4o, claude:opus, groq:llama-3.3-70b, local:qwen-coder.

One holdover for old configs: six legacy OpenAI names (gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.3, gpt-4, gpt-3.5-turbo) sent to /v1/chat/completions are translated to Claude models when no other provider claims them.

Before that

Install dario, log in, leave it running

Three commands, once. The proxy binds 127.0.0.1:3456 and holds your login; every tool on the machine shares it. Add a ChatGPT plan with dario add altman and the two fail over to each other.

terminal
$ npm install -g @askalf/dario
$ dario login        # your Claude plan: Pro, Max 5x or Max 20x
  Login successful.
$ dario proxy        # leave it running
  dario · http://localhost:3456
  Your Claude subscription is now an API.
0 runtime dependencies SLSA-attested every release Nothing phones home MIT, independent, unofficial
Other tools

Same URL, same key

Something not listed? If it reads ANTHROPIC_BASE_URL or OPENAI_BASE_URL, or has a "Base URL" field, it works. The compatibility matrix says which tools are exercised end-to-end, which are inferred from a shared code path, and which are untested — one honest cell per tool.