Skip to content

contember/tokens-gone

Repository files navigation

tokens-gone

Local web dashboard for AI coding agent token usage and cost. Reads Claude Code, Codex, and Pi session logs, aggregates tokens and dollars, and lets you slice the data interactively.

Run

npx tokens-gone

That's it — it builds nothing on your machine, starts a local HTTP server, and opens your browser at the dashboard. Subsequent runs reuse the on-disk parse caches (~/.cache/tokens-gone/*.json), so warm scans are sub-second even with thousands of session files.

Flags

-p, --port <n>   Port to listen on (default 27821, or $PORT)
--no-open        Don't open the browser
-h, --help       Show help
-v, --version    Print version

Environment

  • CLAUDE_CONFIG_DIR — override the Claude data dir (default ~/.claude).
  • CODEX_HOME — override the Codex data dir (default ~/.codex).
  • PI_CODING_AGENT_DIR — override the Pi agent dir (default ~/.pi/agent).
  • PI_CODING_AGENT_SESSION_DIR — override the Pi sessions dir directly.
  • PORT — same as --port.

Why

ccusage works but is slow (tens of seconds on real data) and refetches LiteLLM pricing every run. tokens-gone is the same idea but:

  • Cold scan: ~8s for 1.7GB of JSONL (5000+ files); warm: ~700ms.
  • Hardcoded Anthropic pricing — no network requests, ever.
  • Browser UI with click-to-filter on charts, models, projects, sessions.

How it works

  • server/providers/* walk provider-specific JSONL directories, parse logs streamingly, and cache parsed entries on disk keyed by (path, size, mtime). Unchanged files are reused verbatim; appended files are tail-parsed.
  • server/pricing.ts resolves Anthropic Claude pricing by model name substring (matches claude-opus-4-7, anthropic/claude-sonnet-4-6, etc.), with tiered pricing for Sonnet >200k and a 6× fast-mode multiplier for Opus.
  • server/server.ts exposes /api/data (gzipped) and /api/refresh.
  • The SPA loads all entries once and re-aggregates client-side on every filter change — fast enough for ~300k entries.

Development

Requires Bun for the dev/test loop. The published package runs on plain Node 20+.

bun install
bun run dev                # backend on :27821 + vite on :5173 (open :5173)
bun run dev:server         # just the backend (--hot)
bun run dev:client         # just vite

bun test
bun run typecheck
bun run build              # vite build + esbuild bundle of the server CLI

License

MIT

About

Local dashboard for Claude Code token usage and costs. Reads ~/.claude/projects/**/*.jsonl, aggregates spend, slices interactively.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages