[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1618":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":15,"starSnapshotCount":15,"syncStatus":47,"lastSyncTime":48,"discoverSource":49},1618,"dario","askalf\u002Fdario","askalf","Your Claude Pro\u002FMax subscription in any tool — Cursor, Cline, Aider, Agent SDK — at subscription pricing, not per-token bills. One local endpoint that replays Claude Code's wire shape so your traffic stays in the subscription pool.","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario",null,"JavaScript",257,44,1,0,11,25,71,33,4.96,"MIT License",false,"master",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"ai","anthropic","api","claude","claude-max","claude-pro","cli","developer-tools","groq","litellm","llm","llm-router","multi-provider","oauth","ollama","openai","openai-compat","openrouter","proxy","2026-06-12 02:00:30","\u003Cp align=\"center\">\n  \u003Ch1 align=\"center\">dario\u003C\u002Fh1>\n  \u003Cp align=\"center\">\u003Cstrong>Use your Claude Pro\u002FMax subscription with Cursor, Aider, Cline, Zed, the Claude Agent SDK — any tool that speaks Anthropic or OpenAI.\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp align=\"center\">A local LLM router. One endpoint, every provider. Your Claude subscription — Pro ($20), Max 5x ($100), or Max 20x ($200) — stops sitting idle in Claude Code while you pay per-token everywhere else. Speaks both the Anthropic Messages API and the OpenAI Chat Completions API at \u003Ccode>http:\u002F\u002Flocalhost:3456\u003C\u002Fcode>.\u003C\u002Fp>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@askalf\u002Fdario?color=blue\" alt=\"npm version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Factions\u002Fworkflows\u002Fcodeql.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Factions\u002Fworkflows\u002Fcodeql.yml\u002Fbadge.svg\" alt=\"CodeQL\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fblob\u002Fmaster\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002F@askalf\u002Fdario\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@askalf\u002Fdario\" alt=\"Downloads\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fask_alf\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ffollow-@ask_alf-1da1f2?style=flat-square\" alt=\"Follow on X\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Faskalf.org\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Faskalf.org-platform-00ff88?style=flat-square\" alt=\"askalf\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Cem>Zero runtime dependencies. \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario\">SLSA-attested\u003C\u002Fa> on every release. Nothing phones home. Independent, unofficial, third-party — see \u003Ca href=\"DISCLAIMER.md\">DISCLAIMER.md\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fp>\n\n> **dario is the open-source wedge of [askalf](https:\u002F\u002Faskalf.org)** — the AI workforce platform we're building. Dario solves the Claude subscription problem so the rest of the workforce can run on flat-rate billing. Star this repo or follow [@ask_alf](https:\u002F\u002Fx.com\u002Fask_alf) for platform updates.\n\n---\n\n## 30 seconds\n\n```bash\n# 1. Install\nnpm install -g @askalf\u002Fdario\n\n# 2. Log in to your Claude subscription (Pro, Max 5x, or Max 20x)\ndario login                      # or `dario login --manual` for SSH \u002F headless setups\n\n# 3. Start the local Claude API proxy\ndario proxy\n\n# 4. Point any Anthropic-compat tool at it\nexport ANTHROPIC_BASE_URL=http:\u002F\u002Flocalhost:3456\nexport ANTHROPIC_API_KEY=dario\n```\n\nDone. Every tool that honors those env vars — Claude Code, Cursor, Aider, Cline, Roo Code, Continue.dev, Zed, Windsurf, OpenHands, OpenClaw, Hermes, the [Claude Agent SDK](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@anthropic-ai\u002Fclaude-agent-sdk), your own scripts — now routes through your **Claude subscription** (Pro \u002F Max 5x \u002F Max 20x) instead of per-token API pricing. Dario sends the same request shape Claude Code itself sends, which is the shape the subscription-billing path recognizes.\n\nFor OpenAI \u002F Groq \u002F OpenRouter \u002F Ollama \u002F LiteLLM \u002F vLLM, add one backend line and reuse the same proxy:\n\n```bash\ndario backend add openai     --key=sk-proj-...\ndario backend add groq       --key=gsk_...    --base-url=https:\u002F\u002Fapi.groq.com\u002Fopenai\u002Fv1\ndario backend add openrouter --key=sk-or-...  --base-url=https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\ndario backend add local      --key=anything   --base-url=http:\u002F\u002F127.0.0.1:11434\u002Fv1\n\nexport OPENAI_BASE_URL=http:\u002F\u002Flocalhost:3456\u002Fv1\nexport OPENAI_API_KEY=dario\n```\n\nSwitching providers is a **model-name change** in your tool — `claude-opus-4-7`, `gpt-4o`, `llama-3.3-70b`, any OpenRouter \u002F Groq \u002F local model — not a reconfigure. Force a specific backend with a prefix: `openai:gpt-4o`, `claude:opus`, `groq:llama-3.3-70b`, `local:qwen-coder`.\n\nSomething not right? `dario doctor` prints a single paste-ready health report. Paste that when you file an issue.\n\n---\n\n## What it actually does\n\nYou point every tool at one URL. Dario reads each request, decides which backend owns it, and forwards in that backend's native protocol.\n\n| Client speaks | Model in request | dario routes to | What happens |\n|---|---|---|---|\n| Anthropic Messages API | `claude-*` \u002F `opus` \u002F `sonnet` \u002F `haiku` | Claude backend | OAuth swap + (optional) CC template replay → `api.anthropic.com` |\n| Anthropic Messages API | `gpt-*`, `llama-*`, etc. | OpenAI-compat backend | Anthropic → OpenAI translation, forwarded to configured backend |\n| OpenAI Chat Completions | `gpt-*` \u002F `o1-*` \u002F `o3-*` | OpenAI-compat backend | Passthrough: auth swap, body forwarded byte-for-byte |\n| OpenAI Chat Completions | `claude-*` | Claude backend | OpenAI → Anthropic translation, then the Claude backend path |\n| Either protocol | `\u003Cprovider>:\u003Cmodel>` | Forced by prefix | Explicit override for ambiguous names |\n\nThe tool doesn't know. The backend doesn't know. Dario is the seam.\n\nBeyond routing, the Claude backend is a **full Claude Code wire-level template** — every observable axis (bytes, headers, body key order, TLS stack, inter-request timing, session-id lifecycle, stream-consumption shape) is captured from your installed CC binary and mirrored on outbound requests so the upstream subscription-billing path is the one the request follows. See [`docs\u002Fwire-fidelity.md`](.\u002Fdocs\u002Fwire-fidelity.md).\n\n---\n\n## Cost comparison\n\nClaude subscription tiers: **Pro** ($20\u002Fmo) · **Max 5x** ($100\u002Fmo) · **Max 20x** ($200\u002Fmo). Dario routes through whichever you have — pick by your usage volume, not by what dario needs.\n\n| Setup | Monthly cost (heavy single-tool user) |\n|---|---|\n| Cursor + Anthropic API direct | $80–$300 |\n| Cursor + ChatGPT Plus | $20 + per-token overage |\n| **Cursor + Claude Pro\u002FMax + dario** | **$20 (Cursor) + $20–200 (your Claude tier) flat — every Claude call routes through your subscription** |\n| Multi-tool heavy use (Cursor + Aider + Cline + Continue) without dario | $200–$600+ |\n| **Same multi-tool use with dario** | **$20–200 flat — one Pro\u002FMax subscription routes all of them** |\n\nAlready have **Pro + Max** stacked? Pool mode (`dario accounts add work` \u002F `dario accounts add personal`) routes across both, with session stickiness keeping multi-turn agents pinned to one account so the prompt cache survives. Tiers mix freely — dario only cares about headroom, not which plan an account is on.\n\n---\n\n## Why you'll install this\n\n- **One URL for every provider.** Cursor, Aider, Continue, Zed, OpenHands, Claude Code, your own scripts — every tool you own has its own per-provider config. Dario collapses that into a single `localhost:3456` that speaks both Anthropic and OpenAI protocols and routes by model name.\n- **Your Claude subscription stops sitting idle.** Cursor, Aider, Zed, Continue all want API keys and bill per-token while your Pro \u002F Max 5x \u002F Max 20x plan only gets used in Claude Code. Dario routes them through your plan via Claude Code's exact wire shape.\n- **You hit rate limits on long agent runs.** Add a second \u002F third Claude subscription with `dario accounts add work` and pool mode routes each request to whichever account has the most headroom. Session stickiness pins multi-turn conversations; in-flight 429 failover retries on a different account before your client sees the error. See [`docs\u002Fmulti-account-pool.md`](.\u002Fdocs\u002Fmulti-account-pool.md).\n- **You run a coding agent that isn't Claude Code.** Cline, Roo Code, Cursor, Windsurf, Continue.dev, GitHub Copilot, OpenHands, OpenClaw, Hermes, hands — dario's universal `TOOL_MAP` (59 schema-verified entries) pre-maps their tool names to Claude Code's native set. No flag, no validator errors. See [`docs\u002Fagent-compat.md`](.\u002Fdocs\u002Fagent-compat.md).\n- **You want the proxy off the wire entirely.** Shim mode is an in-process `globalThis.fetch` patch — no HTTP hop, no port to bind, no `BASE_URL`. `dario shim -- claude --print \"hi\"` and CC thinks it's talking directly to `api.anthropic.com`. See [`docs\u002Fshim.md`](.\u002Fdocs\u002Fshim.md).\n- **You want CC's behavioral constraints out of your prompt.** `dario proxy --system-prompt=partial` strips CC's Tone-and-style \u002F Text-output \u002F verbosity \u002F no-comments-by-default bullets and recovers ~1.2–2.8× output capability on open-ended work — empirically without flipping subscription billing (the classifier doesn't read this slot). RLHF refusals on harmful content are unaffected (alignment is in the weights, not the prompt). See [`docs\u002Fsystem-prompt.md`](.\u002Fdocs\u002Fsystem-prompt.md) and the empirical writeup in [`docs\u002Fresearch\u002Fsystem-prompt.md`](.\u002Fdocs\u002Fresearch\u002Fsystem-prompt.md).\n- **You want dario reachable from inside Claude Code or any MCP client.** `dario subagent install` registers a CC sub-agent for in-session diagnostics ([`docs\u002Fsub-agent.md`](.\u002Fdocs\u002Fsub-agent.md)). `dario mcp` turns dario into a read-only MCP server ([`docs\u002Fmcp-server.md`](.\u002Fdocs\u002Fmcp-server.md)).\n- **You want to actually audit it.** ~12,650 lines of TypeScript across 27 files. Zero runtime dependencies. Credentials at `~\u002F.dario\u002F` with `0600` permissions. `127.0.0.1`-only by default. Every release [SLSA-attested](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario). Nothing phones home. Small enough to read in a weekend.\n- **You want a deep-research tool that runs at $0\u002Fmo.** [deepdive](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdeepdive) is dario's companion CLI — `npx @askalf\u002Fdeepdive \"your question\"`, get a cited Markdown report. Replaces Perplexity Pro ($20\u002Fmo), OpenAI Deep Research ($20\u002Fmo), Gemini Deep Research ($20\u002Fmo) — all of which mark up LLM calls on top of LLM calls. The deep-research workload (50k–200k tokens per question, sustained) is exactly what Max was priced for; deepdive is what uses it for that.\n\n---\n\n## Independently reviewed (4 LLMs)\n\nSame prompt to all four ([`reviews\u002FPROMPT.md`](.\u002Freviews\u002FPROMPT.md)). Each reviewer signed a verdict line. Push-back triaged in [`review-feedback`](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues?q=label%3Areview-feedback).\n\n| Reviewer | Verdict | Full review |\n|---|---|---|\n| **Grok 4** | \"Adopt if the use-case fits.\" | [→](.\u002Freviews\u002Fgrok-4-2026-04-21.md) |\n| **Claude Opus 4.7** | \"The fingerprint-replay claim is backed by the code.\" | [→](.\u002Freviews\u002Fclaude-opus-4-7-2026-04-21.md) |\n| **Gemini 2.0 Pro** | \"Technically elite, zero-dependency proxy.\" | [→](.\u002Freviews\u002Fgemini-2-pro-2026-04-21.md) |\n| **GPT-5.3** | \"Disciplined, intentional engineering. Not vibe-coded.\" | [→](.\u002Freviews\u002Fgpt-5.3-2026-04-21.md) |\n\nHighlights:\n\n> \"This is not vibe-coded; it reads like production-grade infrastructure that happens to be open-source.\" — Grok 4\n>\n> \"Comments consistently cite the issue number that motivated the code — which is what scar-tissue code looks like in a project that has actual users.\" — Claude Opus 4.7\n>\n> \"The implementation isn't just a simple header swap; it is a sophisticated request-level deepfake.\" — Gemini 2.0 Pro\n>\n> \"Not 'best-effort mimicry'; it's capture-and-replay of a real client.\" — GPT-5.3\n\n---\n\n## Who this is for\n\n**Best fit:**\n\n- Developers using multiple LLMs across multiple tools tired of juggling base URLs, keys, and per-tool provider configs.\n- Claude Pro \u002F Max subscribers who want their subscription usable from every tool on their machine, not just Claude Code.\n- Teams running local or hosted OpenAI-compat servers (LiteLLM, vLLM, Ollama, Groq, OpenRouter, self-hosted) who want one stable local endpoint every tool can reuse.\n- [Claude Agent SDK](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@anthropic-ai\u002Fclaude-agent-sdk) users who want OAuth-subscription routing under the SDK. Point `baseURL: 'http:\u002F\u002Flocalhost:3456'` and dario translates API-key calls into your Claude subscription auth — agent code stays identical.\n- Power users on multi-agent workloads who want multi-account pooling, session stickiness, and in-flight 429 failover on their own machine, against their own subscriptions.\n\n**Not a fit:**\n\n- You need vendor-managed production SLAs on every request. Use the provider APIs directly.\n- You need a hosted, multi-tenant, managed routing platform with a dashboard, team auth, and support contracts. Dario is a local, single-user tool — the [askalf platform](https:\u002F\u002Faskalf.org) is the right surface for the team \u002F fleet case.\n- You want a chat UI. Use claude.ai or chatgpt.com.\n\n---\n\n## Backends\n\nDario's routing is organized around **backends**. Each is a swappable adapter — add one, your tools reach it through `localhost:3456` in whichever API shape they already speak. Run zero, one, or all concurrently.\n\n### 1. OpenAI-compat backend\n\nAny provider that speaks the OpenAI Chat Completions API.\n\n```bash\ndario backend add openai     --key=sk-proj-...\ndario backend add groq       --key=gsk_...   --base-url=https:\u002F\u002Fapi.groq.com\u002Fopenai\u002Fv1\ndario backend add openrouter --key=sk-or-... --base-url=https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\ndario backend add local      --key=anything  --base-url=http:\u002F\u002F127.0.0.1:4000\u002Fv1\n```\n\nCredentials live at `~\u002F.dario\u002Fbackends\u002F\u003Cname>.json` with mode `0600`. Body forwarded as-is, only the `Authorization` header is swapped, streaming forwarded byte-for-byte. Force a specific backend with a [provider prefix](.\u002Fdocs\u002Fusage.md#provider-prefix) on the model field.\n\n### 2. Claude subscription backend\n\nOAuth-backed Claude Pro \u002F Max 5x \u002F Max 20x, billed against your plan instead of the API. Activated by `dario login` (or `dario login --manual` for SSH \u002F container setups, v3.20). Any tier with Claude Code access works — see [`docs\u002Ffaq.md`](.\u002Fdocs\u002Ffaq.md).\n\nEvery outbound Claude request is rebuilt to match a request Claude Code itself would make — system prompt, tool definitions, identity headers, billing tag, beta flags, header insertion order, static header values, `anthropic-beta` flag set, top-level request-body key order — using a live-extracted template from your actually-installed CC binary that self-heals on every upstream CC release.\n\nKey mechanisms in brief: live template extraction from your installed `claude` binary, drift detection with forced refresh on mismatch, OAuth config auto-detection (so dario picks up Anthropic-side rotations on the next run), atomic cache writes, framework scrubbing (third-party identity markers stripped from system prompt), Bun auto-relaunch (so the TLS ClientHello matches CC's runtime). `dario proxy --passthrough` does an OAuth swap and nothing else — use it when the upstream tool already builds a Claude-Code-shaped request.\n\nWhat this addresses: per-request fidelity. What it can't address alone: cumulative per-OAuth-session aggregates. The v3.22 – v3.28 wire-fidelity track closed six of those axes (body order, TLS, pacing, stream-drain, session-id lifecycle, MCP\u002Fsub-agent surface — see [`docs\u002Fwire-fidelity.md`](.\u002Fdocs\u002Fwire-fidelity.md)); for anything left, [pool mode](.\u002Fdocs\u002Fmulti-account-pool.md) distributes load across multiple subscriptions.\n\n---\n\n## Multi-account pool mode\n\nPool mode activates automatically when `~\u002F.dario\u002Faccounts\u002F` contains 2+ accounts. Each request picks the account with the highest headroom; multi-turn agent sessions pin to one account so the Anthropic prompt cache survives; in-flight 429s retry on a different account before the client sees an error.\n\n```bash\ndario accounts add work\ndario accounts add personal\ndario proxy\n```\n\nFull details, headroom math, sticky-key implementation, inspection endpoints: [`docs\u002Fmulti-account-pool.md`](.\u002Fdocs\u002Fmulti-account-pool.md).\n\n---\n\n## Shim mode (experimental)\n\nTake the proxy off the wire entirely. `dario shim -- \u003Cchild cmd>` patches `globalThis.fetch` inside the child via `NODE_OPTIONS=--require`. No localhost HTTP hop. No port to bind. No `BASE_URL`.\n\n```bash\ndario shim -- claude --print \"hello\"\n```\n\nWhen to use it, when to stay on the proxy, hardening detail: [`docs\u002Fshim.md`](.\u002Fdocs\u002Fshim.md).\n\n---\n\n## Agent compatibility\n\nDario's `TOOL_MAP` (59 schema-verified entries) covers every major coding agent — Cline, Roo Code, Kilo Code, Cursor, Windsurf, Continue.dev, GitHub Copilot, OpenHands, OpenClaw, Hermes, [hands](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fhands). Tool calls translate to CC's native set on the outbound path (subscription wire shape preserved) and rebuild to your agent's exact expected shape on the inbound path.\n\nText-tool clients (Cline \u002F Kilo \u002F Roo) and identity-detected agents (`hands`, `arnie`, Hermes) auto-flip into preserve-tools mode via system-prompt identity markers. A structural fallback catches in-house non-CC agents (3+ tools, ≥80% unmapped) and flips them too.\n\nPer-tool setup (Cursor, Continue, Aider, Cline, Zed, OpenHands), the `--preserve-tools` \u002F `--hybrid-tools` decision matrix, and the full agent table all live in [`docs\u002Fagent-compat.md`](.\u002Fdocs\u002Fagent-compat.md).\n\n### Custom tool schemas\n\nIf your agent's tool names aren't pre-mapped and its tools carry fields CC's schema doesn't have, you have two escape hatches:\n\n- **`--preserve-tools`** — forward your schema verbatim, lose the CC wire shape (and likely the subscription-billing wire shape with it).\n- **`--hybrid-tools`** — keep the CC wire shape, fill request-context fields (`sessionId`, `requestId`, `channelId`, `userId`, `timestamp`) from headers on the reverse path. The compromise that keeps both.\n\nFull when-to-use-which decision matrix and request-context field set: [`docs\u002Fagent-compat.md#custom-tool-schemas`](.\u002Fdocs\u002Fagent-compat.md#custom-tool-schemas).\n\n---\n\n## Trust and transparency\n\n| Signal | Status |\n|---|---|\n| **Source code** | ~12,650 lines of TypeScript across 27 files — small enough to audit in a weekend |\n| **Dependencies** | 0 runtime dependencies. Verify: `npm ls --production` |\n| **npm provenance** | Every release is [SLSA-attested](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@askalf\u002Fdario) via GitHub Actions with sigstore provenance attached to the transparency log |\n| **Security scanning** | [CodeQL](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Factions\u002Fworkflows\u002Fcodeql.yml) on every push and weekly |\n| **Test footprint** | ~1,535 assertions across 57 test suites. Full `npm test` green on every release |\n| **Credential handling** | Tokens and API keys never logged, redacted from errors, stored with `0600` permissions. MCP server (v3.27) redacts keys at the tool boundary too — not even a `sk-…` prefix leaks. |\n| **OAuth flow** | PKCE, no client secret. `--manual` flow for headless setups (v3.20). |\n| **Network scope** | Binds to `127.0.0.1` by default. `--host` allows LAN\u002Fmesh with `DARIO_API_KEY` gating. Upstream traffic goes only to configured backend target URLs over HTTPS. |\n| **SSRF protection** | `\u002Fv1\u002Fmessages` hits `api.anthropic.com` only; `\u002Fv1\u002Fchat\u002Fcompletions` hits the configured backend `baseUrl` only — hardcoded allowlist |\n| **Telemetry** | None. Zero analytics, tracking, or data collection. The MCP server and CC sub-agent are read-only by design. |\n| **Audit trail** | [CHANGELOG.md](CHANGELOG.md) documents every release with file-level rationale |\n\nVerify the npm tarball matches this repo:\n\n```bash\nnpm audit signatures\nnpm view @askalf\u002Fdario dist.integrity\ncd $(npm root -g)\u002F@askalf\u002Fdario && npm ls --production\n```\n\n---\n\n## Commands\n\n`dario login`, `dario proxy`, `dario doctor`, `dario accounts {list,add,remove}`, `dario backend {list,add,remove}`, `dario shim`, `dario mcp`, `dario subagent {install,status,remove}`, `dario usage`, `dario config`, `dario upgrade`, `dario status`, `dario refresh`, `dario logout`, `dario help`.\n\nFull flag\u002Fenv reference + endpoint list: [`docs\u002Fcommands.md`](.\u002Fdocs\u002Fcommands.md).\n\nSDK examples (Python \u002F TypeScript \u002F curl) + per-tool setup: [`docs\u002Fusage.md`](.\u002Fdocs\u002Fusage.md).\n\n---\n\n## FAQ\n\nThe most-asked questions. Full FAQ in [`docs\u002Ffaq.md`](.\u002Fdocs\u002Ffaq.md).\n\n**Does this violate Anthropic's terms of service?**\nMechanically: dario uses your existing Claude Code credentials with the same OAuth tokens CC uses. It authenticates you as you, with your subscription, through Anthropic's official endpoints. Whether any particular use complies with their current terms is between you and Anthropic — consult their terms and your subscription agreement. Independent, unofficial, third-party — see [DISCLAIMER.md](DISCLAIMER.md).\n\n**Do I need Claude Code installed?**\nRecommended, not strictly required. With CC installed, `dario login` picks up your credentials automatically and the live template extractor reads your CC binary on every startup. Without CC, dario runs its own OAuth flow and falls back to the bundled (scrubbed) template snapshot.\n\n**Do I need Bun?**\nOptional, strongly recommended for Claude-backend requests so the TLS ClientHello matches CC's runtime. Without Bun it works fine — `dario doctor` surfaces the mismatch as of v3.23 and `--strict-tls` refuses to start until resolved.\n\n**Can I use dario without a Claude subscription?**\nYes. Skip `dario login`, `dario backend add openai --key=...` and you have a local OpenAI-compat router with no Claude involvement.\n\n**Something's wrong. Where do I start?**\n`dario doctor`. One command, paste-ready report. If you're inside CC, `dario subagent install` once and ask CC to \"use the dario sub-agent to run doctor.\"\n\n**I'm seeing `representative-claim: seven_day` in my rate-limit headers — am I being downgraded?**\n**No.** Both `five_hour` and `seven_day` are subscription billing — different accounting buckets inside the same subscription mode. `overage` is the one that flips you to per-token. See [Discussion #1](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F1) for the full rate-limit-header breakdown.\n\n---\n\n## Technical deep dives\n\n- [#183 — CC's system prompt is 27kB. Modifying it doesn't change your billing. Stripping its behavioral constraints recovers 1.2–2.8× output capability.](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F183) — productized as `--system-prompt=partial` in v3.34.0\n- [#178 — Anthropic's billing classifier fingerprints `openclaw.inbound_meta.v1`](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F178) — reproducing Theo Browne's finding with controlled variants\n- [#172 — Re-testing #13: the system prompt is not a fingerprint signal](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F172)\n- [#68 — dario vs LiteLLM \u002F OpenRouter \u002F Kong AI Gateway (when each one wins)](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F68)\n- [#14 — Template Replay: why we stopped matching signals](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F14)\n- [#13 — Claude Code's \"defaults\" are detection signals, not optimizations](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F13)\n- [#39 — Why your Claude Max usage is burning in minutes](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F39)\n- [#9 — Why Opus feels worse through other proxies and how to fix it](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F9)\n- [#8 — Billing tag algorithm and fingerprint analysis](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F8)\n- [#1 — Rate limit header analysis](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fdiscussions\u002F1)\n\nThe CHANGELOG documents every v3.22 – v3.28 wire-fidelity release with file-level rationale; each one is worth reading as a standalone post on the axis it closes.\n\n---\n\n## Contributing\n\nPRs welcome. Small TypeScript codebase — ~12,650 lines, 27 files, zero runtime dependencies. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the architecture overview and the file-by-file map.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\ncd dario\nnpm install\nnpm run dev   # runs with tsx, no build step\nnpm test      # ~1,535 assertions across 57 suites\nnpm run e2e   # live proxy + OAuth (requires a working Claude backend)\n```\n\n---\n\n## Contributors\n\n| Who | Contributions |\n|---|---|\n| [@GodsBoy](https:\u002F\u002Fgithub.com\u002FGodsBoy) | Proxy authentication, token redaction, error sanitization ([#2](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fpull\u002F2)) |\n| [@belangertrading](https:\u002F\u002Fgithub.com\u002Fbelangertrading) | Billing classification investigation ([#4](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F4)), cache_control fingerprinting ([#6](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F6)), billing reclassification root cause ([#7](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F7)), OAuth client_id discovery ([#12](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F12)), multi-agent session-level billing analysis ([#23](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F23)) |\n| [@iNicholasBE](https:\u002F\u002Fgithub.com\u002FiNicholasBE) | macOS keychain credential detection ([#30](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fpull\u002F30)) |\n| [@boeingchoco](https:\u002F\u002Fgithub.com\u002Fboeingchoco) | Reverse-direction tool parameter translation ([#29](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F29)), SSE event-group framing regression catch (v3.7.1), provider-comparison diagnostic, motivating case for hybrid tool mode ([#33](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F33), v3.9.0), OpenClaw tool-mapping root cause ([#36](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F36)) |\n| [@tetsuco](https:\u002F\u002Fgithub.com\u002Ftetsuco) | Framework-name path corruption in scrubber ([#35](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F35)), OpenClaw Bash\u002FGlob reverse-mapping collisions ([#37](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F37)), 20x-tier capture-artifact + OAuth-scope rejection report ([#42](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F42)) |\n| [@mikelovatt](https:\u002F\u002Fgithub.com\u002Fmikelovatt) | Silent subscription-percent drain surfaced via friendly billing buckets ([#34](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F34)) |\n| [@ringge](https:\u002F\u002Fgithub.com\u002Fringge) | Fingerprint-fidelity concern motivating `--no-auto-detect` for text-tool-client auto-preserve ([#40](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fissues\u002F40), v3.20.1) |\n| [@earlvanze](https:\u002F\u002Fgithub.com\u002Fearlvanze) | OpenClaw tool mappings + missing CC tools ([#19](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fpull\u002F19)), OAuth manual-override escape hatch ([#47](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fpull\u002F47)), HTTPS warning for non-secure overrides ([#53](https:\u002F\u002Fgithub.com\u002Faskalf\u002Fdario\u002Fpull\u002F53)) |\n\n---\n\n## Disclaimers\n\n**dario is an independent, unofficial, third-party project.** Not affiliated with, endorsed by, or sponsored by Anthropic, OpenAI, or any other vendor referenced in the code or documentation. Provided as-is with no warranty. You are solely responsible for compliance with your subscription's terms of service, the security of your credentials, and the content you send through the proxy. Not intended for safety-critical, regulated, or production-grade environments without your own independent review. See [DISCLAIMER.md](DISCLAIMER.md) for full text.\n\n---\n\n## License\n\nMIT — see [LICENSE](LICENSE) and [DISCLAIMER.md](DISCLAIMER.md).\n","dario是一个本地的LLM（大语言模型）路由工具，支持通过单一端点接入Claude Max\u002FPro、OpenAI、OpenRouter等多种LLM服务。其核心功能包括提供统一的API接口、支持OAuth认证以管理多个账户订阅、以及作为MCP服务器运行等，特别强调了对Anthropic和OpenAI兼容性的支持。该工具无运行时依赖，确保了部署环境的简洁与安全。适用于需要跨多种LLM服务进行开发或集成的应用场景中，尤其是当开发者希望利用已有的Claude订阅来替代其他按次计费的服务时。",2,"2026-06-11 02:45:02","CREATED_QUERY"]