Your connector processes logs on your computer and extracts usage metrics. Prompt text, responses, and source code are excluded from what it sends to the dashboard. Here is exactly what stays local and what the dashboard uses.
Stays on your laptop
The prompt, the completion, the diff
Source trees and file paths beyond the project name
API keys, cookies, environment — no provider secret is ever requested
Home directory names and local filesystem paths
Raw conversation content and source file contents
What Radar sees
Integer token counts: input, output, cache read and cache creation
The exact model id — claude-sonnet-5, gpt-5.3-codex, gemini-3.5-flash
Source agent, project name, and the machine id you chose
Session start time; a paired hub receives only the calendar day
Estimated cost in cents against a dated public rate catalog — a model the catalog does not cover stays unpriced, never $0
How that holds up
Four properties of the build, not four promises.
Zero Prompt & Code Retention
Log ingestion runs 100% on your local machine. Raw prompt strings, file contents, and completions are immediately discarded in-memory. Only integer token counts and model identifiers are retained.
No Secret API Keys Required
Usage Radar does not require your Anthropic, OpenAI, or Google Cloud API secret keys. It calculates costs by analyzing local log output files generated by standard CLI tools.
Local-First Storage
Your agent logs stay where the CLI wrote them. The connector re-reads them on demand and keeps no copy of your usage; the only files it writes are a session key, if you pair a machine, its workspace token, and a cached copy of the public model price list it fetches — all readable by your user alone. The dashboard caches the normalized counters in this browser's local storage. We do not sell, train on, or monetize developer telemetry.
Opt-In Aggregate Sync
Sync is off until you pair a machine. Once paired, the connector posts day, agent, model and token totals over TLS — the hub schema rejects every field it does not name. Those counters are stored on our server in plaintext.
Coverage boundary:Codex CLI and Codex-in-VS-Code threads that run locally are read from their rollout logs. Codex threads that run in ChatGPT's cloud (the ChatGPT desktop app's hosted Codex) execute on OpenAI's servers, so no token log is written here — they are detected and counted as threads, but their tokens and cost are not observable locally. The dashboard says so instead of silently omitting them. Even the per-day count stays on the machine: the connector serves it over loopback only, and it is never part of the hub sync payload.
End-to-end encryption is not implemented. Do not treat the hub as zero-knowledge: an operator with database access can read the synced counters. Only the counters — prompts, completions and code never reach it. Usage Radar holds no SOC 2 or ISO 27001 certification, and no third party has audited it.
Deterministic parsing
Counting is done by ccusage, the open-source engine our connector pins and wraps. Every line of the parser that produces your numbers is public and auditable.
The connector reads local logs and never sends them anywhere. It does fetch a current model price list when the network is reachable — a price list, not your usage — because the catalog bundled in the package cannot price models newer than itself and silently reports them as $0. Without a network it uses the bundled catalog and says so. No remote telemetry endpoints, no ad networks, and no outbound destination for your data until you pair a hub.
Your data, exportable
Export all normalized telemetry at any time as JSON, or wipe local storage with one click in Data Controls.