# Dario review — Grok 4, 2026-04-21

## Core claim holds.

The project does exactly what the README promises: it turns a Claude Max/Pro subscription into a drop-in localhost Claude API by replaying the exact Claude Code wire fingerprint. The code backs this up. `live-fingerprint.ts` spawns the real `claude` binary against a localhost MITM server, captures the full `/v1/messages` request (system prompt, tools, agent identity, header order, billing tag), and stores it as `TemplateData`. `cc-template.ts` then uses that (or the bundled snapshot) to rebuild outbound bodies byte-for-byte, including JSON key ordering and platform-scoped tool filtering. `proxy.ts` routes Anthropic-protocol requests through `buildCCRequest` + OAuth swap; OpenAI-protocol traffic gets translated and forwarded. Discussion #13 (maintainer reverse-engineering write-up) confirms the classifier is a deterministic rules engine, not ML — eight observable signals trigger `five_hour` vs. overage billing. Dario neutralizes all of them. No hand-waving; the mechanism is coherent and evidenced in both code and public testing.

## Engineering quality is legitimately high for a solo-maintained project.

10k LOC of clean TypeScript, zero runtime dependencies (`package.json` confirms; only `@types/node` + TS in devDeps). Separation of concerns is excellent: proxy/http, live capture, template replay, account pooling, and shim are discrete modules with narrow interfaces. Credential handling is careful — accounts live in `~/.dario/` (0600 perms implied by context), OAuth tokens are loaded via dedicated `oauth.ts` / `accounts.ts` paths, never logged. Failure modes look thoughtful: `pool.ts` implements sticky sessions via first-message SHA-256, headroom-based routing, and 429 in-flight failover; `proxy.ts` has semaphore concurrency limits, body-size caps, and upstream timeouts. Test suite is aggressive (20+ targeted `.mjs` tests covering body order, pacing, drift detection, shim E2E, etc.). SLSA attestation on releases and local-only binding by default are mature choices. This is not vibe-coded; it reads like production-grade infrastructure that happens to be open-source.

## Documentation integrity is strong.

README sections on fingerprint axes, pool mode, shim mode, and trust/transparency match the code exactly — no overclaims. The "six axes closed between v3.22–v3.28" table is verifiable against the live-fingerprint and session-rotation modules. FAQ and warnings are candid about what it can't do (e.g., no magic for rate-limit exhaustion). Discussion #13 is pure technical signal, not marketing.

## Security posture is solid for a local proxy.

No phone-home, credentials never leave disk except over localhost MITM during capture, TLS/ClientHello fidelity is explicitly surfaced in `runtime-fingerprint.ts`. The only surface is `127.0.0.1:3456` unless you explicitly override. OAuth flow is first-party (uses real Claude Code binary). Minor nit: if someone runs it bound to `0.0.0.0` without an API key, it becomes a general proxy — README warns, but a hard default guard would be nicer.

## Who it's for

Power users and agent builders who already pay for Claude Max/Pro and want Cursor/Aider/Continue/OpenHands to consume the subscription instead of burning API credits. Also anyone tired of juggling provider configs.

**Who shouldn't install it:** Enterprises needing SOC2 audit trails, anyone uncomfortable with MITM of their own Claude binary (even localhost-only), or people who treat Anthropic's ToS as gospel. If you just want cheap inference, use Ollama + OpenRouter directly.

## PR push-back I'd give the team

1. Add a one-line `npm audit --production` gate in CI that fails the build (you already have the script).
2. Surface test coverage % in README (the suite is real but opaque).
3. Consider a `--no-live-capture` flag for air-gapped environments.

These are polish items; the foundation is excellent.

---

**Verdict:** Production-ready local router with unusually strong engineering and transparency. Adopt if the use-case fits.

— *Reviewed by Grok 4, 2026-04-21*
