overspill
Self-host it
Pre-release · Claude Code today

Where your AI coding budget actually goes.

Usage, spend and waste analytics for AI coding tools. An agent on each machine reads your Claude Code transcripts and pushes metrics, not conversations, to a server you control.

One email when the team tier ships. Nothing else, ever — or just write to hello@overspill.dev.

The Overspill dashboard: a warning that one model has no price set, a notional cost of $1,185.88 for the last 30 days, a stacked token chart, cost split by model, and cache efficiency at 99.6%.
The real dashboard, rendered against a synthetic six-developer database. No customer data appears anywhere on this site.
01 The problem

Nobody can tell you where it went.

One developer on a flat-rate plan has notional spend and one real question: will I hit my weekly limit?

A team is a different problem. Claude Code on Max plans, Cursor on seats, a couple of API keys someone expensed — the spend is real, it is invoiced, and the invoice does not say which project, which model, or which of the four things you are paying for actually did the work.

The usual answer is to hand a vendor your source code in exchange for a chart. Overspill answers the question without that trade.

Flat-rate hides the shape

A subscription bills the same whether a session cost a penny or twenty pounds. The usage is still there in the transcript — it is simply never priced.

Four tools, four dashboards

Each vendor shows you their own slice. Nobody shows you the total, per project, per person, on one axis.

The privacy tax

Most analytics want the conversation to compute the metric. It does not need the conversation, and asking for it is what stops the tool getting installed.

02 How it works

Three commands, then it keeps itself current.

Claude Code already writes a full transcript of every session to your disk. Overspill reads those files where they are, extracts the numbers, and forgets the rest.

Point the agent at your server

login checks the address and the token before it writes anything, so a typo fails now rather than silently on the first sweep.

Import what is already there

backfill reads every transcript on disk, including the subagent runs where much of your Sonnet and Haiku usage actually lives.

Let the hook keep it fresh

hook install registers a Claude Code Stop hook that sweeps incrementally after each turn. Additive, idempotent, and reversible.

# on each machine where you use Claude Code
$ npm install -g overspill

$ overspill login --url https://spend.acme.dev --token $TOKEN
 server reachable · token accepted · capture level metadata

$ overspill backfill
 66 transcripts · 4,641 events · 1,285 tool calls · 0.27s

$ overspill hook install
 Stop hook registered · settings.json backed up

What actually leaves the machine

Token counts, model ids, timestamps, latencies, tool names, error flags and the project directory. That is enough to compute every number on the dashboard.

Not your prompts, not the model's replies, not the contents of your files, not your shell commands. Those are never read into the payload at the default capture level — and the server refuses to store them regardless of what an agent sends.

Read the privacy model

Node 20 or newer. Nothing to clone, no jq, no Docker required on the developer's machine — only on whatever runs the server.

03 What you see

A dashboard that answers questions, not one that shows numbers.

Every panel below is a screenshot of the running product. Seventeen of them ship today.

Cache efficiency panel: 99.6% of input tokens served from cache, 1.4B cached against 6.1M fresh, $4,303.97 saved, 90% effective discount.
Cache efficiency. The single largest lever on cost, and the one nobody measures.
By project panel: seven repositories ranked by notional cost, from northgate-api at $324.97 down to docs-site at $44.08, each with session, event and token counts.
Cost by project. Which repository is expensive, ranked, with the session count behind it.
Tool error panel showing which tools fail and when, as a daily rate with a per-tool breakdown.
Waste. Failed tool calls are tokens you paid for and threw away. This is the panel that finds them.
Plan limit panel tracking session, weekly and Sonnet-specific usage percentages over time.
Distance from the limit. Not just where you are now — the shape of how you got there.

All seventeen panels

04 Privacy

The promise and the guarantee are two different things.

The default capture level is metadata only. Richer levels exist, are opt-in per machine, and the highest never leaves your own hardware.

This is enforced in two places on purpose. The agent will not send what the level forbids — that is the promise. The server will not store it either, whatever arrives — that is the guarantee. Both call the same function, because two definitions of "content" would drift, and the day they drift the promise stops matching the guarantee.

The full privacy model

Capture levels and what each transmits
Level What leaves your machine
metadata Token counts, model ids, timings, tool names, error flags, costs. The default.
commands The above, plus redacted tool inputs.
full The above, plus prompt and response text. Self-hosted only — the hosted service will never accept it.

Self-hosted builds never phone home for licence validation. A licence check is telemetry, and telemetry in a tool that promises not to look at your code would be self-defeating.

05 Pricing

Free for one developer. Priced for the team that has a budget.

The single-user tool is free and stays free. It is not a trial.

Free
£0Self-host it, or one seat in the cloud when it lands.
  • Every dashboard panel — nothing is held back
  • Unlimited machines, unlimited history
  • Full-text session archive, if you turn it on
  • Source-available under PolyForm Small Business
Read the quickstart

Running a team already and want to talk before it ships? hello@overspill.dev.

06 Roadmap

Honest about what exists.

This is pre-release software. Here is exactly where it is.

M1

Foundation

Shared parser, installable CLI, metadata-only default, the self-host server and its dashboard.

working
M2

Cursor

A server-side pull from the Cursor Admin API, so the figures are money somebody was billed rather than a rate card applied to a flat-rate plan.

in progress
M3

Alerts and a weekly digest

The part you can act on. A dashboard tells you; an alert interrupts you.

planned
M4

Hosted team tier

Seats, budgets and connectors, with one database per customer rather than a shared table and a tenant column.

planned
07 Questions
Is this open source?

No, and it would be dishonest to imply otherwise. Overspill is source-available under PolyForm Small Business 1.0.0, verbatim. You can read every line, run it, modify it, and use it commercially for free if your company is under 100 people and under $1M in revenue. Above that threshold it needs a licence.

A named, standard licence was chosen deliberately over a bespoke clause: a legal team approves PolyForm on sight and escalates a homebrew paragraph.

Does it work if I only use Claude Code?

Yes — that is what ships today, and it is the whole product for a single developer. Cursor support is a server-side pull that is still being built; it needs a team admin key, so it will be a paid-tier feature by construction rather than by choice.

What are the dollar figures, exactly?

For Claude Code they are notional: your tokens priced against the public API rate card. On a flat-rate subscription there is no bill to reduce, so treat them as an API-equivalent measure of what a session, project or person consumed — useful for comparison, not for reconciliation.

Vendor connectors are the opposite: those figures are what was actually charged, stored as integers to the millionth of a cent so a year of rows still reconciles against the invoice. The two are kept in separate tables precisely so the distinction never blurs.

And if a model has no rate card, the dashboard says so in a banner above the headline figure rather than quietly reporting $0.

Can I put the self-hosted dashboard on the internet?

No. The self-host build has no authentication at all — it is designed to sit behind a reverse proxy, a VPN or a tailnet. This is stated as plainly in the README as it is here, because the failure mode is somebody's session history being publicly indexed.

How much data does the agent send?

At the default metadata level, a few kilobytes a day per developer. The agent tracks a byte offset into each transcript file, so a sweep reads only what is new — a full backfill of 66 transcripts and 4,641 events took 0.27 seconds in testing.

What happens to my data if someone leaves?

Every record is keyed to an opaque person id, never an email address. Honouring an erasure request clears one field in one row; the id survives, so a year of spend figures does not silently change because somebody left the company.

Find out what you are actually spending.

Self-host it this afternoon, or leave an address and hear once when the team tier is ready.

or read the quickstart — it takes about five minutes.