overspill
Self-host it
Seventeen panels · shipping today

Everything it measures.

Every screenshot on this page is the running product, captured against a synthetic six-developer database. Nothing here is a mockup and nothing here is anyone's real data.

01 Money
At a glance

What the last thirty days cost.

Tokens, sessions, events and tool calls for whatever window you pick — 24 hours, 7 days, 30, 90, all time, or a custom range that every panel on the page respects at once.

The headline figure is notional: your tokens priced against the public API rate card. On a flat-rate subscription there is no bill to shrink, so read it as what this work would have cost on the meter.

Four headline tiles: 1.5 billion tokens, 353 sessions, 33.4 thousand events, 19.2 thousand tool calls.
Where it went

Cost by project, ranked.

Every session carries the directory it ran in, so spend attributes to a repository without anyone tagging anything. The bar is share of cost; the line under it is the sessions, events and tokens that produced it.

Beyond the top twelve, the remainder folds into a single "other" row rather than a tail of noise.

Seven repositories ranked by cost, northgate-api at $324.97 down to docs-site at $44.08.
Which model

The expensive model is rarely the busy one.

Split by cost or by tokens, as a donut or as bars. Opus doing a third of the turns and two thirds of the spend is the normal shape, and it is the first thing worth knowing.

Donut chart splitting cost across Opus 5, Sonnet 5, Fable 5 and Haiku 4.5 with per-model percentages and dollar figures.
The biggest lever

Cache efficiency, which almost nobody measures.

Prompt caching means most of what a long session re-reads costs a tenth of fresh input. The panel shows the ratio, what it saved, and the effective discount — so a change in how your team prompts shows up as a number rather than a feeling.

Cache efficiency at 99.6 percent of input tokens served from cache, 4,303 dollars saved, 90 percent effective discount.
Over time

Shape, not just totals.

Usage bucketed by hour or day with the four token classes stacked, a per-model series, and a cumulative curve that makes a step change obvious the week it happens rather than the month the invoice arrives.

Cumulative cost curve rising across the selected range.
02 Waste

Tokens you paid for and threw away.

A failed tool call still cost you the turn that produced it. These are the panels that find the spend with nothing to show for it.

Tool failure rate over time with a per-tool breakdown of error counts.
Which tools fail, and when. A daily error rate plus the offenders behind it — a spike here is usually a broken assumption, not a broken tool.
Top tools by call count with error counts, average duration and total result bytes.
Top tools. Call counts with the error count, average duration and bytes returned alongside — the last column is often where the context budget went.
Latency trend chart showing median and upper-percentile response times over the window.
Speed trends. Turn latency over time, so "it feels slower this week" becomes a measurement.
Web usage panel counting WebSearch and WebFetch calls per day.
Web usage. Search and fetch calls counted separately, because they are billed separately and they pull large pages into context.
03 Limits
Plan headroom

How close you are, and how you got there.

Session, weekly and Sonnet-specific usage against your plan's limits — as gauges for right now, and as a history so you can see whether Thursday is always the problem.

Captured from Claude Code's own /usage readout, so the numbers are the ones the tool itself would show you.

Plan limit history: session, weekly and Sonnet usage percentages plotted over time.
04 Rhythm

When the work actually happens.

Useful for capacity, and quietly useful for noticing that a "quick experiment" ran every night for three weeks.

A year-long activity calendar in the style of a contribution graph, shaded by daily cost.
A year at a glance. Fifty-three weeks, shaded by spend.
Punchcard of day of week against hour of day, sized by activity.
Punchcard. Day against hour, sized by activity.
Activity by hour of day, split by model.
By hour. Split by model, so the overnight batch is visible.
05 Sessions
The list

Every session, with the numbers attached.

Project, branch, machine, duration, model, tokens and cost — sortable and filterable, so "which session cost eleven pounds" is a question you can answer.

Full-text search over transcripts is separate, off by default, and self-host only. It is the one surface that touches conversation text, so it is gated behind an explicit server flag and only has anything to search if you also raised the capture level. The hosted service will never offer it.
The sessions list: rows of sessions with project, host, duration, model, tokens and cost.
06 Beyond the dashboard

The parts that are not a chart.

Most of the engineering in this project is in making the numbers trustworthy, not in drawing them.

An unpriced model can't hide

A model with no rate card silently costs $0 — that is how a whole month of Opus usage once reported as free. Overspill distinguishes priced, genuinely free (a local model) and unknown, and warns about the third in a banner above the headline figure.

Streamed turns counted once

A single assistant message arrives as several physical lines, each repeating the running token count. Counting them naively overstates spend — measurably, by a third in one reproduced case. Every group is recomputed from the database, which is the only place that holds all of it.

Subagents included

Much of a team's Sonnet and Haiku usage lives in subagent transcripts, not the main session file. Those are read too — a tool that quietly skipped them would under-report the cheap models and flatter the expensive one.

A CLI, not a clone

login, backfill, sweep, watch, status, capture and hook install. Installed from npm, Node 20+, no repository to clone and no jq. The hook installer backs your settings up, leaves other hooks alone, and refuses to write at all if the file is unparseable.

Capture levels, enforced twice

metadata by default, commands and full opt-in. The agent will not send what the level forbids and the server will not store it either — the effective level is the lower of the two, so content requires opting in at both ends.

One database per customer

There is no tenant column anywhere in the schema, and there is not going to be one — the database is the tenant. Self-hosting is simply the single-tenant case of the same code, which is why both editions share one storage layer instead of forking it.

Coming in M2: Cursor. Cursor's local store has no model name and no cost — we checked rather than assumed — so it is a server-side pull from the Cursor Admin API instead. That makes the figures invoiced money rather than a rate card applied to a subscription, and because only a team admin can mint the key, it is a paid-tier feature by construction. The poll runtime is built and tested; wiring it to a live database is the remaining work.

Point it at your own transcripts.

It reads what is already on your disk. Five minutes to a dashboard of your own numbers.

Read the quickstart