How it works
Last updated July 27, 2026
Three rungs, in order of truth
- Estimate: an on-page calculator. Instant, no data of yours involved, and approximate by design.
- Live (local connector): a small program you install once on your machine. It runs the pinned usage engine over your agent logs and serves normalized numbers on
127.0.0.1:41414. Your browser tab reads that address. This is the real number, and it is the path we recommend. - Provider APIs: Anthropic, OpenAI, and OpenRouter reporting endpoints give billing truth. They are shown separately from machine-observed numbers with a reconciliation delta; totals are never silently merged.
What gets read — and what never does
The engine whitelists usage fields only: token counts, model IDs, timestamps, and session identifiers. message.content— your prompts and the model's responses — is never read into normalized output. The browser can read only a folder you explicitly select through its file-access picker; that processing stays in a Web Worker. The connector path requests only127.0.0.1, which never leaves your machine.
The local connector, precisely
- Bundles a pinned engine version — never fetched at runtime, so your numbers do not change because an upstream package did.
- Binds loopback only, answers
GETonly, and validates both theHostandOriginheaders. That combination is what makes it safe to leave running. - Rescans every 60 seconds; the dashboard refreshes while the tab is open.
- Makes no outbound usage request by default. Explicit account pairing enables allowlisted aggregate sync; deleting
sync.jsondisables it. - The uninstall action removes Usage Radar files and leaves your agent logs alone.
Exactness
- Claude Code: per-assistant-message usage (
input_tokens,output_tokens, cache reads/writes including 5-minute/1-hour write splits), deduplicated bymessage.id + requestId— resumed and branched sessions never double-count. - Codex: per-turn
token_countevents (schema verified against real session files, not guessed), cached-input subset arithmetic, model switches tracked mid-session. - Other agents: the engine detects 15 agents in total;
/statusreports only the ones actually found on your machine, with the date range of their logs.
Costs
Dollar figures from machine logs are API-equivalent costs, not invoices. Pricing is pinned and versioned. The formula prices uncached input, output, cache reads, five-minute writes, and one-hour writes separately. Unknown models show tokens with cost "n/a" — never a fake $0. Subscription users (Claude Max, Copilot) don't pay per token, which is why the plan-vs-API comparison exists.
Provider connections
Provider requests go directly from your browser when the provider permits it, or through the local connector. The production provider relay is disabled, so a CORS-blocked request does not send the key to Usage Radar servers. Cloud-scheduled reconciliation is not represented as available until separate consent and managed KMS-backed credential storage are configured.
Your history outlives the logs
Claude Code deletes transcripts after roughly 30 days. Usage Radar archives every deduplicated usage event in your browser's IndexedDB, so your totals keep their history even after the source logs rotate. Event-level CSV export (with dedupe keys) makes every aggregate auditable.