Product·Analytics

Know exactly what
your agents burn.

Spend and tokens by repo, by provider, by model, and by day. It's the receipt no metered dashboard gives you.

spend over time
Claude Codex Gemini Cursor Grok Z.ai
7d30d
$20 $40
01 · The pipeline

Parsed from logs you already have.

Every agent CLI keeps a running transcript on disk while it works. Continuum reads those files in place. Claude writes JSONL under ~/.claude/projects, Codex under ~/.codex/sessions, OpenCode into a local SQLite database, Antigravity into its conversation stores, and Cursor and Grok into their own state directories. There is no SDK to install, no wrapper to launch your agent through, and nothing sitting in the request path.

That makes the history retroactive. Install Continuum on a machine that has been running agents for six months and the first parse covers all six months, not just the sessions that start after today. A provider whose store isn't on the machine is skipped cleanly instead of zeroing a column.

01

Read

Each provider's store is walked in parallel. Files are matched on path, mtime, and size, so a second launch re-reads only what changed. The newest file per provider always bypasses the cache, because a live session is still appending to it.

02

Reconcile

Claude repeats an assistant message across resumed transcripts, so events collapse on message id with a request id qualifier. Codex records a cumulative total per turn, so Continuum stores the delta and drops zero-delta rows. Duplicates that cross files get caught again at merge.

03

Price

Every event is priced at its own model's rate from a bundled LiteLLM snapshot, tiered where a model charges more past a context threshold. An override file covers models the snapshot hasn't caught up to. Models with no published rate still count their tokens in an unpriced bucket.

This is the same aggregation ccusage performs, re-implemented natively so it runs beside your live gauges instead of in a separate terminal. ccusage daily is the ground truth we validate against: if the two ever disagree, ccusage is right. If you want to walk the same math by hand first, the cost-tracking guide does exactly that.

02 · By repo

Which repo is burning your tokens.

Every event carries a working directory, so Continuum canonicalizes it back to a repo - through worktrees, through Conductor branches - and rolls spend up per project. One glance tells you where the tokens actually went.

Open any repo to see its own per-provider split: which agent did the work, and what it cost.

Attribution survives the layouts that usually break it. A plain .git directory, a worktree pointer file, a Conductor workspace, and a repo nested one level down all resolve to the same project row. Paths that resolve to nothing - a temp directory, a home directory, a bare UUID - land in Other rather than inflating a real project.

worktree-aware per-provider split $ and tokens
spend by repo · 30d $134.65 total
03 · By model

Tokens by model.

Every model you ran, ranked by tokens - fable-5, gpt-5.5, glm-5.2, gemini-3.5-flash and the long tail below them. Priced with a LiteLLM snapshot; unpriced models still count their tokens so nothing goes missing.

The heavy hitters sit up top. Expand to see the smaller models you forgot you were still calling.

This is where model choice stops being a guess. A cheap model carrying 80% of your turns and an expensive one carrying 6% is a very different bill from the reverse, and the ranking tells you which one you actually have. Read it next to the model reference when you're deciding what to route where.

04 · Live gauges

Live gauges, always in reach.

Per-provider mini gauges sit in your menu bar, each with the window percentage and reset countdown. Hover to drop a panel with the full picture: every provider and its rails, updated live.

No app to open, no tab to check. The number that matters is a glance away.

Gauges and history answer different questions and come from different places. A gauge is a live quota reading from the provider: how much of the current rolling window you've spent, and when it resets. History is your own logs, priced. You need both, because a quota that resets in forty minutes is a scheduling problem while a repo that costs $60 a week is a budgeting one.

05 · Ranges and rollups

Five windows, four rollups.

One range selector drives everything: today, 7 days, 30 days, 90 days, or all time. Windows are calendar-aligned to your local timezone, not UTC. That reads as pedantry until a session that starts at 11pm and ends at 1am gets split across two days in one tool and counted on one day in another. Local alignment is what makes the daily chart match the day you actually worked.

The same range feeds four rollups at once, so you never have to reconcile two views that disagree about the period they cover.

run timebillable minutes per device
spendstacked by provider, by day
by repoproject cost, provider split
by modelranked token leaderboard

Switching ranges is instant because the parse is incremental. The cache checkpoints after each provider, so an interrupted run resumes instead of restarting, and the schema is versioned, so an update that changes the shape re-parses once and then goes quiet. When the numbers point at an obvious problem, the cost-reduction guide covers what to change first, and the usage-dashboard guide compares the surfaces you can read them on.

06 · Local-first

Your logs never leave your machine.

Everything is calculated on your Mac, from files that are already on it. Nothing is uploaded, nothing is tracked, and you don't need an account to see your own numbers.

The math is exact - every token counted once, priced at each model's real rate. Your numbers are your numbers.

The only thing that ever crosses a network is the small aggregate the Mac mirrors to your own iCloud key-value store so your iPhone can render the same totals. Prompts, transcripts, file paths, and raw logs stay on the machine that produced them. If a Mac is linked to an organization, detailed per-repo data is never mirrored to a personal iCloud account at all.

localparsed on your Mac
0 bytesuploaded to us
8providers covered
exacttoken-level math
07 · Questions

Where the numbers come from.

Short answers here, long answers in the docs.

The JSONL session logs your CLIs already write to disk - ~/.claude/projects for Claude, ~/.codex/sessions for Codex, and the equivalent per-provider logs for the rest. Continuum reads them, dedups events, and prices tokens against a LiteLLM snapshot. Nothing is fabricated; every dollar traces to a real event you can open.

No. Analytics parsing is entirely local - no telemetry, no upload, no account required. When you pair a phone, the Mac mirrors usage metadata to your own iCloud key-value store so your devices agree; the raw logs, prompts, and transcripts stay on the machine that produced them.

All eight analytics columns: Claude, Codex, Gemini, Cursor, Grok, OpenCode, Z.ai, and Continuum hosted. Antigravity usage lands in the Gemini column. Each rolls into the aggregate spend, the by-repo split, and the by-model leaderboard.

Yes - cost per repo is a first-class view. Continuum canonicalizes each event's working directory back to its git repo (resolving worktrees and Conductor branch checkouts), then rolls spend and tokens up per project, with a per-provider breakdown inside each repo.

ccusage is a CLI that prints a table. Continuum runs the same aggregation natively, beside live quota gauges, per-repo attribution, a 90-day chart, and the sessions that produced the numbers - on Mac, web, and iPhone. The dedup key and the LiteLLM pricing snapshot are the same, and ccusage daily stays the reference we check against. For the wider picture of what Continuum adds on top of the CLI you already run, see Continuum vs Claude Code.

Yes. Add a second account and its history joins the totals on the next refresh, read from that account's own isolated config root. There is no per-account column yet: the totals are aggregate. Billing is still exact, because every session is pinned to the account that ran it before it spawns.

They answer different questions. A provider dashboard reports what it billed, on its own clock and its own rounding. Continuum prices every event you ran at that model's published rate, in your timezone, including work on flat-rate plans that never meter anything. On a subscription, the dollar figure is what the same tokens would have cost on the API - a value, not an invoice. That number is the whole reason a second subscription can beat a metered key.

08 · Begin

Know your
token burn rate.

Point Continuum at the logs you already have and see exactly what your agents cost.

local-first · token-exact · 8 providers