@askalf/dario 6.13.16 → 6.13.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -15
- package/dist/live-fingerprint.d.ts +1 -1
- package/dist/live-fingerprint.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# `dario`
|
|
6
6
|
|
|
7
|
-
### Your Claude and ChatGPT subscriptions each work in exactly one place.<br/>dario makes them work **everywhere
|
|
7
|
+
### Your Claude and ChatGPT subscriptions each work in exactly one place.<br/>dario makes them work **everywhere**, at subscription pricing, not per-token API bills.
|
|
8
8
|
|
|
9
9
|
<p>
|
|
10
10
|
<a href="https://www.npmjs.com/package/@askalf/dario"><img src="https://img.shields.io/npm/v/@askalf/dario?color=6f42c1&label=npm&logo=npm" alt="npm version"></a>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
You're already paying $20, $100 or $200 a month for Claude,[^plans] or for a ChatGPT plan. Then Cursor wants an API key. Aider wants an API key. Cline, Continue, Zed, your own scripts
|
|
39
|
+
You're already paying $20, $100 or $200 a month for Claude,[^plans] or for a ChatGPT plan. Then Cursor wants an API key. Aider wants an API key. Cline, Continue, Zed, your own scripts: every one of them bills you **again**, per token, while the plan you bought sits idle in the one app it shipped with.
|
|
40
40
|
|
|
41
41
|
**dario is one local endpoint that routes all of them through the plans you already pay for.** Point any Anthropic- or OpenAI-compatible tool at `http://localhost:3456` and you're done. No per-tool config, no second bill, and when one plan hits its limit the other one takes the request.
|
|
42
42
|
|
|
@@ -57,7 +57,7 @@ Anthropic-shaped tools: `export ANTHROPIC_BASE_URL=http://localhost:3456 ANTHROP
|
|
|
57
57
|
|
|
58
58
|
**Works with:** Claude Code, Cursor, Aider, Cline, Roo Code, Kilo Code, Continue.dev, Zed, OpenHands, OpenClaw, Hermes, Codex CLI, the [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk), the Anthropic and OpenAI SDKs, curl, your own scripts. **[Per-tool setup →](docs/tools.md)**
|
|
59
59
|
|
|
60
|
-
Prefer Docker? `ghcr.io/askalf/dario:latest
|
|
60
|
+
Prefer Docker? `ghcr.io/askalf/dario:latest`, multi-arch (`amd64` + `arm64`), published from the same workflow as every npm release ([guide](./docs/docker.md)). Something off? `dario doctor` prints one paste-ready health report.
|
|
61
61
|
|
|
62
62
|
## Why people pick it
|
|
63
63
|
|
|
@@ -117,7 +117,7 @@ dario runs entirely on your machine, authenticates as you with your own Claude l
|
|
|
117
117
|
|---|---|
|
|
118
118
|
| Source | **~41k** lines of TypeScript across **79** files, auditable in a weekend. One credential path since v5: the pool. |
|
|
119
119
|
| Dependencies | **0 runtime.** Verify: `npm ls --production` |
|
|
120
|
-
| Provenance | Every release [SLSA-attested](https://www.npmjs.com/package/@askalf/dario) via GitHub Actions + Sigstore, published with OIDC trusted publishing
|
|
120
|
+
| Provenance | Every release [SLSA-attested](https://www.npmjs.com/package/@askalf/dario) via GitHub Actions + Sigstore, published with OIDC trusted publishing: no long-lived npm token exists to leak |
|
|
121
121
|
| Scanning | [CodeQL](https://github.com/askalf/dario/actions/workflows/codeql.yml) on every push to master, every PR and weekly · [ClusterFuzzLite](./.github/workflows/cflite.yml) fuzzes the SSE translator, the rejection parsers and the cch stamper weekly · [OpenSSF Scorecard](https://scorecard.dev/viewer/?uri=github.com/askalf/dario) and [Best Practices](https://www.bestpractices.dev/projects/13638) badges above are live |
|
|
122
122
|
| Tests | **241 test files** run in parallel by `npm test` on Node 18, 20 and 22; the live e2e / compat / stealth suites have their own entry points. Green on every release |
|
|
123
123
|
| Credentials | Your own subscription tokens, never logged, redacted from errors, `0600` on disk in `0700` dirs |
|
|
@@ -136,13 +136,13 @@ Security reports go to **security@askalf.org**, not a public issue: [SECURITY.md
|
|
|
136
136
|
|
|
137
137
|
## Deep dives
|
|
138
138
|
|
|
139
|
-
- [Claude Code wire drift](https://askalf.github.io/dario/drift-feed/)
|
|
139
|
+
- [Claude Code wire drift](https://askalf.github.io/dario/drift-feed/): every change to what Claude Code sends on the wire, as the template watcher observed it; [RSS](https://askalf.github.io/dario/drift-feed/feed.xml) · [JSON Feed](https://askalf.github.io/dario/drift-feed/feed.json)
|
|
140
140
|
|
|
141
|
-
- [#183
|
|
142
|
-
- [#68
|
|
143
|
-
- [#14
|
|
144
|
-
- [#13
|
|
145
|
-
- [#1
|
|
141
|
+
- [#183: Modifying Claude Code's system prompt doesn't change billing; stripping its constraints recovers 1.2–2.8× output](https://github.com/askalf/dario/discussions/183)
|
|
142
|
+
- [#68: dario vs LiteLLM / OpenRouter / Kong AI Gateway (when each wins)](https://github.com/askalf/dario/discussions/68)
|
|
143
|
+
- [#14: Template replay: why we replay the shape instead of matching signals](https://github.com/askalf/dario/discussions/14)
|
|
144
|
+
- [#13: Claude Code's request shape, documented](https://github.com/askalf/dario/discussions/13)
|
|
145
|
+
- [#1: Rate-limit header analysis](https://github.com/askalf/dario/discussions/1)
|
|
146
146
|
- [system-prompt-classifier-study.md](./docs/research/system-prompt-classifier-study.md), the measurements behind `--system-prompt=partial`
|
|
147
147
|
|
|
148
148
|
## Contributing
|
|
@@ -184,7 +184,7 @@ Two easy ways to help beyond code: **star the repo**, the clearest signal this i
|
|
|
184
184
|
| [@belangertrading](https://github.com/belangertrading) | Billing-classification investigation ([#4](https://github.com/askalf/dario/issues/4), [#6](https://github.com/askalf/dario/issues/6), [#7](https://github.com/askalf/dario/issues/7), [#12](https://github.com/askalf/dario/issues/12), [#23](https://github.com/askalf/dario/issues/23)), multi-agent billing FAQ ([#27](https://github.com/askalf/dario/pull/27)) |
|
|
185
185
|
| [@wysie](https://github.com/wysie) | ESM `require` crash in `dario login` ([#15](https://github.com/askalf/dario/issues/15)), OAuth for Max-plan accounts ([#18](https://github.com/askalf/dario/issues/18)) |
|
|
186
186
|
| [@earlvanze](https://github.com/earlvanze) | OpenClaw tool mappings ([#19](https://github.com/askalf/dario/pull/19)), OAuth manual override ([#47](https://github.com/askalf/dario/pull/47)), HTTPS warning ([#53](https://github.com/askalf/dario/pull/53)) |
|
|
187
|
-
| [@nathan-widjaja](https://github.com/nathan-widjaja) | README positioning structure
|
|
187
|
+
| [@nathan-widjaja](https://github.com/nathan-widjaja) | README positioning structure: the promise → who → first use → why-switch spine the page still runs on ([#21](https://github.com/askalf/dario/issues/21)) |
|
|
188
188
|
| [@trinhnvgem](https://github.com/trinhnvgem) | OAuth login failures on first release ([#22](https://github.com/askalf/dario/issues/22)), container and headless callback binding ([#28](https://github.com/askalf/dario/issues/28)) |
|
|
189
189
|
| [@adubkov](https://github.com/adubkov) | The container / headless-SSH case behind the manual OAuth code paste ([#28](https://github.com/askalf/dario/issues/28)) |
|
|
190
190
|
| [@iNicholasBE](https://github.com/iNicholasBE) | macOS keychain credential detection ([#30](https://github.com/askalf/dario/pull/30)) |
|
|
@@ -200,19 +200,19 @@ Two easy ways to help beyond code: **star the repo**, the clearest signal this i
|
|
|
200
200
|
| [@pnewell](https://github.com/pnewell) | `--preserve-output-format` for structured-output SDKs ([#583](https://github.com/askalf/dario/pull/583)) |
|
|
201
201
|
| [@matteo-rama](https://github.com/matteo-rama) | Headless admin bootstrap ([#599](https://github.com/askalf/dario/issues/599)), Analytics `NaN` and per-account rate-limit rows ([#600](https://github.com/askalf/dario/issues/600)), pool-aware `/status` and `/health` ([#636](https://github.com/askalf/dario/issues/636)), `version` on both ([#640](https://github.com/askalf/dario/issues/640)), Accounts TUI reads the live pool ([#641](https://github.com/askalf/dario/issues/641)) |
|
|
202
202
|
| [@miklisanton](https://github.com/miklisanton) | Mid-session `/model` switch 400 ([#744](https://github.com/askalf/dario/issues/744)), empty-turn guards behind the subagent 400s ([#1033](https://github.com/askalf/dario/issues/1033), [#1117](https://github.com/askalf/dario/issues/1117)), named keys, per-key token counts and per-key daily budgets ([#1318](https://github.com/askalf/dario/issues/1318)) |
|
|
203
|
-
| [@p-i-](https://github.com/p-i-) | Independent wire-fidelity audit with a re-runnable harness
|
|
203
|
+
| [@p-i-](https://github.com/p-i-) | Independent wire-fidelity audit with a re-runnable harness; version-blind `bun-match`, and the correction to the packet-identical claim ([#813](https://github.com/askalf/dario/issues/813)) |
|
|
204
204
|
| [@jerzydziewierz](https://github.com/jerzydziewierz) | TUI Config tab clipping and scrolling ([#861](https://github.com/askalf/dario/pull/861)) |
|
|
205
205
|
| [@ramarro123](https://github.com/ramarro123) | Admin bulk re-auth ([#913](https://github.com/askalf/dario/issues/913)), shared state across instances ([#993](https://github.com/askalf/dario/issues/993)), prompt-cache behaviour under litellm ([#1018](https://github.com/askalf/dario/issues/1018)), parked-seat and shared-window reporting ([#1244](https://github.com/askalf/dario/issues/1244)), the configurable headroom floor ([#1333](https://github.com/askalf/dario/issues/1333)), Prometheus `/metrics` and the timing split ([#1341](https://github.com/askalf/dario/issues/1341)) |
|
|
206
206
|
| [@zytegalaxy](https://github.com/zytegalaxy) | The ChatGPT/Codex engine and `dario add altman` ([#1009](https://github.com/askalf/dario/issues/1009)) |
|
|
207
207
|
| [@chaogebaba](https://github.com/chaogebaba) | Auto-release must never fire from a fork ([#1029](https://github.com/askalf/dario/pull/1029)) |
|
|
208
|
-
| [@robincle](https://github.com/robincle) | Utilisation freshness
|
|
208
|
+
| [@robincle](https://github.com/robincle) | Utilisation freshness: `lastObservedAt` / `utilAgeMs` on `/accounts` ([#1032](https://github.com/askalf/dario/issues/1032)), the documented way out of a parked pool ([#1282](https://github.com/askalf/dario/issues/1282)) |
|
|
209
209
|
| [@anupamme](https://github.com/anupamme) | Refresh-lock ownership by server-issued lock id ([#1059](https://github.com/askalf/dario/pull/1059)) |
|
|
210
210
|
| [@LiveNathan](https://github.com/LiveNathan) | Never send or stamp empty text blocks ([#1067](https://github.com/askalf/dario/pull/1067)), empty final user turn from CC's stream-interruption retry ([#1092](https://github.com/askalf/dario/issues/1092), as [@NathanLively](https://github.com/NathanLively)) |
|
|
211
211
|
|
|
212
212
|
### Sponsors
|
|
213
213
|
|
|
214
214
|
<!-- sponsors:start -->
|
|
215
|
-
dario is funded by its users through [GitHub Sponsors](https://github.com/sponsors/askalf)
|
|
215
|
+
dario is funded by its users through [GitHub Sponsors](https://github.com/sponsors/askalf); the live-test seats it is checked against before every release are the biggest line item. Sponsors at $25/month and up are listed here.
|
|
216
216
|
<!-- sponsors:end -->
|
|
217
217
|
|
|
218
218
|
<sub>This block and the thank-you in each release's notes come from <a href="scripts/sponsors.mjs"><code>scripts/sponsors.mjs</code></a>, which reads the public sponsor list; <code>sponsors-readme.yml</code> opens a PR when it changes. Private sponsors are never named.</sub>
|
|
@@ -223,7 +223,7 @@ dario is funded by its users through [GitHub Sponsors](https://github.com/sponso
|
|
|
223
223
|
|
|
224
224
|
## License
|
|
225
225
|
|
|
226
|
-
MIT
|
|
226
|
+
MIT. See [LICENSE](LICENSE) and [DISCLAIMER.md](DISCLAIMER.md). The embedded README font is Space Mono under the [SIL Open Font License](./scripts/readme/fonts/OFL.txt).
|
|
227
227
|
|
|
228
228
|
## Own Your Stack
|
|
229
229
|
|
|
@@ -510,7 +510,7 @@ export declare function detectDrift(t: TemplateData, installedOverride?: string
|
|
|
510
510
|
*/
|
|
511
511
|
export declare const SUPPORTED_CC_RANGE: {
|
|
512
512
|
readonly min: "1.0.0";
|
|
513
|
-
readonly maxTested: "2.1.
|
|
513
|
+
readonly maxTested: "2.1.302";
|
|
514
514
|
};
|
|
515
515
|
/**
|
|
516
516
|
* Compare two dotted-numeric version strings. Returns negative if `a<b`,
|
package/dist/live-fingerprint.js
CHANGED
|
@@ -1211,7 +1211,7 @@ export function detectDrift(t, installedOverride) {
|
|
|
1211
1211
|
*/
|
|
1212
1212
|
export const SUPPORTED_CC_RANGE = {
|
|
1213
1213
|
min: '1.0.0',
|
|
1214
|
-
maxTested: '2.1.
|
|
1214
|
+
maxTested: '2.1.302',
|
|
1215
1215
|
};
|
|
1216
1216
|
/**
|
|
1217
1217
|
* Compare two dotted-numeric version strings. Returns negative if `a<b`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askalf/dario",
|
|
3
|
-
"version": "6.13.
|
|
3
|
+
"version": "6.13.17",
|
|
4
4
|
"description": "Use your Claude and ChatGPT subscriptions in Cursor, Cline, Aider, Claude Code and the Agent SDK — at subscription pricing, not per-token API bills. One local Anthropic + OpenAI-compatible endpoint: either plan answers either wire shape, with automatic failover when one hits its limit.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|