Usage Stats
Usage Stats is a full-page view of what your agents are spending. Open it from the chart icon in the title bar (beside the Agent Monitor’s activity icon) or with Ctrl+Shift+U / Cmd+Shift+U, and close it the same way. It shows cost, tokens, sessions, tool calls, line churn, and burn rate for the current project or for every project on the machine, over any time range from the trailing two hours to all time.
The status bar shows only the agent and task counts; every usage metric lives here.
A scope picker switches between two views:
- Current project - usage for the active project only.
- All projects - an app-wide rollup across every project registered on the machine, including a per-project comparison table so you can see which project is spending the most.
The selected scope is one global value: it persists across project switches and app restarts.
Ranges and metrics
Section titled “Ranges and metrics”Pick a time range: Live (the trailing 2 hours), Today, This Week, This Month, All Time, or a custom month. Click a day in a chart to drill into that single day. Like the scope, the selected range persists globally across restarts.
A Cost / Tokens toggle switches between two views, and since v0.46.0 they are different charts, not one chart relabeled:
| View | First chart | Second chart | Per-project table |
|---|---|---|---|
| Cost | Cost per day by model | Cumulative spend | Cost and Cost Share |
| Tokens | Tokens per day by model | Cache hit rate per day | Cache Read and Token Share |
The bucket follows the range: hourly inside a single day, daily for a week or a month, weekly for all time. The Tokens charts read the per-turn ledger, the same source as the Tokens tile, so their bars add up to the tile. Before v0.46.0 they summed the agents’ status-line totals, which could draw several times the tile’s figure. The cache hit rate is cache read over all input, with quiet buckets left out rather than drawn as zero, and its axis fits the data. The Burn Rate tile shows the selected rate as its value and the other one under it. The breakdowns rank by the selected metric and show its share, with the other metric in each row’s tooltip.
KPI tiles and breakdowns
Section titled “KPI tiles and breakdowns”Three hero tiles carry a sparkline each: Tokens, Cost, and Burn Rate (cost or tokens per hour, following the toggle). Under them sits a strip of eight: Sessions, Tool Calls, Lines, Files, Cache Reads, Subagents, Compactions, and Avg Active. Most carry a “vs previous period” delta so you can tell whether this week is heavier than last week at a glance; a tile with nothing measured in the range shows a dash and no delta, since “not measured” is not “measured as nothing”.
Below the tiles, the usage series breaks down by model, by agent, by reasoning effort, and, when a session fanned out to subagents, by subagent type, so a mixed board (some tasks on Opus at high effort, others on a lighter model) shows exactly where the spend goes.
What the numbers count
Section titled “What the numbers count”Four things are worth knowing before you read a figure off a tile. Each one is also on the tile’s own tooltip.
Tokens are four disjoint types, and there is no combined total. The Tokens tile shows fresh input plus output; cache writes and cache reads are counted and priced separately, and the Cache Reads tile gives the read share with the absolute beside it. One blended number would be dominated by cache reads, which run an order of magnitude larger than fresh traffic and cost a fraction of it. Since v0.43.0 these come from the per-turn ledger, which is what the agents themselves report; before that the tile summed a context-window reading that newer Claude Code builds publish as current context occupancy rather than consumption.
Token coverage can start later than cost coverage. The cost ledger reaches back to the install’s first session, but per-turn capture shipped later and the CLIs prune the transcripts that would fill the gap. On a range that starts before your first captured turn, the Tokens tile names the date its coverage begins, so a figure covering half the window is not read as covering all of it.
Cost is API-equivalent list price, priced from the tokens each agent reported, not what a subscription was billed. A session on a subscription plan reports $0 and still contributes its tokens. Since v0.43.0 a resumed conversation is counted once rather than once per resume: agents report cost as a running total for the whole conversation, and each --resume is a separate session record, so the old flat sum re-counted every earlier leg. The ledger now stores the raw running total alongside a per-leg delta and sums the delta.
Avg Active is over a smaller population than Sessions. It reads agent-working time, idle excluded, from the activity-interval ledger, and that ledger covers fewer sessions than the usage ledger does, so the tile names its own denominator rather than dividing by the Sessions count beside it. Sessions itself counts CLI invocations, each resume separately, which is the convention the agents use.
Both burn-rate lines divide the same elapsed hours, so each one multiplied by the range reproduces the tile above it.
Subagents
Section titled “Subagents”The Subagents tile counts the tokens spent by the subagents a session fans out: the finders a /code-review spawns, the agents a /test runs. Those tokens are additive to the Tokens tile, which stays main-thread so the historical series keeps meaning the same thing, and they are already inside the Cost tile, since a session’s cost covers its whole tree. The by-subagent-type breakdown answers which kind of subagent costs the most, rather than only what a review cost in total. The tile’s tooltip adds how many of those subagents another subagent spawned.
Only Claude Code reports subagent usage today. Rather than showing a dash that reads as “nothing fanned out”, the tile names any agent in the range that cannot report it, so a Codex or Gemini range says so. For one task’s fan-out, grouped by the driver turn that started each one, an agent can call kangentic_get_task_stats with a taskId.
Background calls
Section titled “Background calls”Kangentic runs some agent calls itself, headless and outside any task’s terminal: Condition checks and workflow steps for the Automation agent, task titles and Command Terminal names, and the Knowledge Graph’s task summaries. Since v0.46.0 every one of them is recorded in its project’s ledger with its model, tokens, cost, time, and how it ended. None of them is a session, so none is in the Sessions, Tokens, or Cost tiles.
The Background card under the tiles has a Total and one cell per job: Condition checks, Workflow steps, Task summaries, Task titles, and Terminal names. Each cell shows its value in the selected metric, its call count, and the models it ran on. An agent whose CLI reports no usage shows a dash and “Agent default” rather than a 0, because a 0 would claim the call was free, and the cell’s tooltip names that agent. The tooltip also counts calls that failed or timed out, which still cost what the agent reported.
Background calls by day sits below Burn rate: one row per day and job, with the model, calls, failures, the four token types, average time, and cost. It is hidden when the range has no calls. One task’s calls are on the Background calls card of its completed task view.
Durable ledgers
Section titled “Durable ledgers”Totals are read from durable usage ledgers, not from live session records, so they survive task and session deletion. Deleting a finished task does not erase what it cost.
Pop out
Section titled “Pop out”The dashboard is a detachable surface: a pop-out button moves it into its own OS-level window, so you can keep it on a second monitor while you work the board. The window remembers its size, position, and monitor between openings.
For agents and automation
Section titled “For agents and automation”The same data is available to agents through the MCP server tool kangentic_get_usage_stats, which returns tokens, cost, burn rate, active time, and by-model / by-agent / by-effort / by-subagent-type usage for a project or all projects over a time range, plus a Background line for the background calls, kept out of the totals above it.
Two config keys back the dashboard’s persistence: usageStatsPeriod (the saved range) and usageStatsScope (the saved scope). See the Configuration reference for details.
See also
Section titled “See also”- Notifications - the status bar and attention signals
- Session persistence - where per-session usage records come from
- Tool reference - query usage stats from an agent
- Knowledge Graph - ask questions of past tasks, their cost and duration included
- Hotkeys - rebind the dashboard toggle
Kangentic is free and open source. A star helps other people find it.
Star on GitHub