Repository navigation
v6.17.0
Auto-released from merge of PR #1741 (trigger: push).
- A credits rung in the failover chain. A
--pool-fallbackentry writtencredits:<model>names the API credits a Max plan includes as a rung: when every seat is drained or cooling and no subscription rung can serve, the request goes toapi.anthropic.comon the Messages path as a plain API request on the key inDARIO_CREDITS_API_KEY(env only, never a flag), the client's own body with the model swapped,x-api-key, no Claude Code template and no OAuth beta, both wire shapes. The response saysx-dario-pool-fallback: credits:<model>;/analytics,/metricsand the dashboard file it under a new bucket,credits, next to extra usage and API key; the ledger counts it as metered, as spent; and the overage guard does not halt on it. A subscription rung still goes first; between this rung and an openai-compat backend the chain's own order decides, and a tier map takes it too (opus:credits:claude-opus-5). Opt-in twice: without the key the entry is inert, the startup line says so anddario doctorsays so in its Failover line. Nothing changes for a chain that names no such entry. - A dashboard at
/analytics/ui. One page served by the proxy, nothing loaded from outside it: the seats with their headroom and reset timers, who paid for the last hour, the live request tail, the timing split, spend per model and per consumer with a range switch, keys and their daily budgets, and the overage halt with a Resume button. It reads what the TUI reads (/analytics,/accounts,/codex,/health,/analytics/ledger,/admin/keys,/analytics/stream) with the analytics token or an API key, in light or dark, on a phone or a wall display, and every chart has a table view. The seats panel needs an API key, since/accountsrefuses the read-only token./analytics/ledgernow also carriespriced, every row as USD at that day's rate, so the page (or anything else charting the table) needs no price list of its own./analyticscarries two more fields for it:window.perFiveMinutes, the hour in twelve bins, so the sparkline is the whole hour and not the stream's 50-record replay; andoverage, the halt state, so a viewer with the read-only token who missed a resume event is not left on a stale halt.predictionsgainstotalTokenBurnRate, every token kind with cache reads and writes, besidetokenBurnRate, which has always been input and output only;/metricsgainsdario_burn_total_tokens_per_minutethe same way, and the burn tile says which of the two it shows./analytics/viewand/analytics/donuts.svgare unchanged. - Releases cut by a bot are marked pre-release. A bot bump (the
maxTestedrange, the template label, a template rebake) still publishes to npm and GHCR as latest, and its notes list everything that shipped in it, but on GitHub it no longer takes the Latest badge: that stays on the newest release a person cut, as does anything that readsreleases/latest. ThemaxTestedbump now also carries the template label refresh for the same Claude Code version, so one release tracks a version where two did before. - A landing page at https://askalf.github.io/dario/. The Pages site that carried only the wire-drift feed now opens on a page: what dario is, the 60-second start, the dashboard, why people pick it, the routing table, the risk answer, the trust facts and the docs. It ships from the same job as the feed (
drift-feed.yml, since a Pages deploy replaces the whole site), loads nothing from a third party, andtest/site.mjschecks that every link on it resolves to what that job ships. The README shows the dashboard;scripts/readme/dashboard.mjsrenders the two screenshots from the shipped page. Under/tools/, one page per tool (Claude Code, Cursor, Aider, Cline, Codex CLI, the SDKs and the rest), generated fromdocs/tools.mdbyscripts/site-tools.mjswhen the site is built, so the setup for a tool lives in one place;test/site-tools.mjschecks every page and every link on it. - The README and the landing page lead with the order of spending and the receipt. Since October 2026 a Max plan includes monthly API credits spent through a Console key, so "every other tool bills you again" was no longer the whole story. The hero now says what dario does with every request: seats with headroom first, then the fallback chain you configure (the other plan on a 429, a metered backend last), and a ledger of who paid for what. A FAQ entry covers the credits with Anthropic's own numbers; the package description and the who-its-for doc follow.
Built + tested + npm-published inline by cc-drift-auto-release.yml on this run — tokenless via OIDC trusted publishing, provenance-attested. See the workflow log for the publish output.