Skip to content
AgentHub

Usage

Read-only parsing of session logs, six ranges, three counters — and why unpriced models never show zero.

Updated · 2026-11-02


The usage page is a read-only observatory. It does not intercept requests, estimate tokens or truncate history — it parses the session logs already on your disk.

Sources

SourceNotes
Claude Codesession logs
Codexsession logs
CodeBuddy CLIsession logs
CodeBuddy IDEsession logs
WorkBuddysession logs

For every other product, the reason usage is unavailable is stated per row instead of printing a zero.

Normalising the counters

The two families disagree on what input means, so everything is normalised first:

  • Claude family: input_tokens excludes cache hits.
  • OpenAI family (CodeBuddy / WorkBuddy): inputTokens includes cache hits.

Both are converted to “non-cached input” before summing, otherwise two agents are not comparable. The credit field in the logs is ignored entirely.

Three counters

  • non-cached input
  • cache hits
  • output

Cache creation measured zero on every local machine, so it is no longer surfaced separately.

Six ranges

Today (local calendar day), rolling 24 hours, 7 / 15 / 30 days, all time. Today and 24h plot hourly points; the rest plot daily.

Performance

A first pass over a few hundred MB of logs takes roughly 0.8–1.3 seconds. After that, files are cached by size + mtime and the hot path is around 90 milliseconds. Parsing only starts when you open the page — hundreds of megabytes never enter the startup path.

Pricing

Model pricing is a registered structure (input / output / cache read / cache write, per million tokens, plus currency). Enter it by hand, or import candidates from models.dev / OpenRouter and merge the ones you tick.

Unpriced models read “unpriced”, never 0; partial pricing reads “partially unpriced”. The rule exists so an estimate never looks like a bill.