Features

Usage and cost

Where the tokens went, by project, by model, by day, with a number attached.

Where the numbers come from

Neither Claude nor Codex stores a cost figure after a turn is done, so there is nothing to look up. Termdeck re derives spend by scanning the transcripts already on your machines and counting the tokens each turn recorded.

The scan returns tokens only. Your browser estimates cost using a model pricing table refreshed by the server daily. If the pricing source is unavailable, Termdeck uses the last successful table or bundled fallback rates.

Inside a chat, each finished turn ends on a line with what it cost, its tokens and how long it took. A turn you watched finish shows the engine's own figures. A Claude turn you read back later, after a reload or one that ran in a terminal, adds up its tokens from the transcript and shows the same line with the cost marked ~ as an estimate. Codex and Grok turns read back show how long they took.

Two things the scan gets right that a naive count does not

  • Sub agent work is included. Sub agents write their own transcripts, and on real projects they account for a meaningful slice of total spend. Leaving them out would quietly undercount every number on the page.
  • Duplicated history is counted once when the transcript identifies the request. Claude streaming snapshots and copied messages share a message ID. Codex forks retain turn IDs and cumulative token counters, which let Termdeck recognise copied usage without adding it again. Older Codex records without turn IDs can only be deduplicated within their own session.

Reading the page

The Usage icon opens Overview inside the workspace. You can also open Settings, then Usage. Both views have two tabs.

Overview shows what your plan allows and how much is left. Plan limits has a bar for browser turns this month, with the day it resets and how many are left, a bar for connected machines against your plan's cap, and how far back your usage history goes. Engine limits shows each coding CLI's own rate limit windows, such as Claude Code's 5-hour and weekly windows, for the account signed in on your machines. Only machines that are online can report them.

Analytics is the full report, and /settings/usage?tab=analytics links straight to it. Its top row is the summary for the selected range:

MetricMeaning
API equivalent costWhat these tokens would have cost at published API rates. See the note below.
Input tokensEverything sent to the model, with the share served from cache called out separately.
Output tokensWhat the models generated, alongside the number of agent turns.
SessionsHow many chats contributed, across how many projects, over the selected range.

Below that: cost per day as a bar chart across the full width, then the model mix showing which models are actually consuming your budget, beside the token composition. Under those, a table by project, drilling down to individual runs.

Show under $10, next to the date range at the top of the page, controls which days, models, projects, and sessions are visible. Each day is tested against its combined cost across machines and models. The summary still includes the full selected range, and model percentages keep their share of the full priced total when smaller models are hidden. The project table's Sessions column counts every session in the range, like its Turns and Cost; opening a project lists only the sessions the filter shows.

API equivalent cost is an estimate, not your invoice. It applies standard model rates to recorded token counts. Subscription charges, service tiers, long-context surcharges, historical rate changes, and provider-specific charges can differ. Approximate model matches and tokens without a known price are called out on the page. Cache-write duration details divide the recorded write total; they do not add extra tokens to it.

Date ranges

Presets cover the common questions, and the two date fields take an explicit range for anything else. The report opens on the default range: the last 30 days on Pro or 7 days on Starter. The range you pick stays while you switch between Overview and Analytics.

On Starter the page goes back 7 days. The 14d and 30d presets stay visible and open an upgrade prompt, and the start date cannot go earlier than a week ago. Pro shows your whole history.

This page refetches only when you ask it to, on a preset click, a committed date, or first load. It deliberately does not update live, because a range you are halfway through typing should not be replaced by an event arriving from a machine.

Why cache read matters

Cached input tokens cost a fraction of fresh ones. A high cache read percentage means your chats are reusing context efficiently, which is usually a sign that the work is well scoped. A low one on a long chat often means the context is churning, and compacting or starting a fresh chat will cost less than continuing. The cache also expires when a chat sits idle (an hour for Claude on a subscription, five minutes on an API key, about 30 minutes for Codex), and the composer says so when it has; see Managing the context window.

The What's driving your limits card is an approximate explanation from local Claude transcripts. Repeated blocks and copied messages count as one request, with distinct tool calls preserved. Its percentages describe overlapping characteristics weighted by tokens, so they do not add to 100%. A failed machine read is shown as unavailable, separately from a successful read with no activity.

Questions this page answers well

  • Which project is consuming the budget, when three are running at once.
  • Whether routing routine work to a cheaper engine is actually saving anything.
  • Which day the spend spiked, and which run did it.
  • Whether a premium model is being used for work a smaller one would have handled.

Scope and limits

  • Covers Claude and Codex transcripts. Grok usage appears in the live limits panel rather than here.
  • Covers projects added to Termdeck on your connected machines. Offline machines and failed reads leave gaps, which the page reports.
  • Only transcripts still available in the scanned session directories contribute. Deleted or trashed sessions and Codex's separate archived-session directory are outside the scan.
  • Date ranges use your browser's current timezone offset. A historical daylight-saving change can shift activity near midnight into an adjacent day.
  • For a longer view, Settings, then Profile shows your activity heatmap: a year of turns and API equivalent cost by day, by week or as a running total, plus your current and longest streak. It counts only turns Termdeck ran, so chats you run in a terminal outside Termdeck are not in it, and days are UTC days, so a late evening turn can land on the next day.
  • Scanning a large history takes a moment the first time. Nothing is uploaded: the scan runs on each machine and only the totals cross the wire.
  • Opening the page again within ten minutes shows the last scan at once while a new one runs behind it, so the numbers can be a few minutes behind. Open the page again to see the newer scan.

Usage opens on Overview. Rate-limit meters consistently show the percentage used. The sidebar’s signed pace number compares usage with time elapsed: positive means ahead of pace, negative means behind. The ↺ count shows available reset credits; hover for details. Analytics date inputs follow your browser’s local date format.