@greymoth/ccwrapped
v0.1.2
Published
Local-only Claude Code usage analytics + a shareable risograph 'Wrapped' card. Reads ~/.claude transcripts, sends nothing.
Maintainers
Readme
ccwrapped ✺
See your Claude Code usage — then share it. A local-only CLI that reads your ~/.claude
transcripts: a clean usage breakdown in your terminal, plus a beautiful, risograph-style
Wrapped card on demand — messages, est. value, top model/project, and how much prompt caching
quietly saved you.
No account. No servers. Nothing leaves your machine — and the card prints itself.
npm i -g @greymoth/ccwrapped
ccwrapped --wrapped # → claude-code-wrapped.svg (open in a browser, screenshot, share)
ccwrapped # last 30 days, by model (terminal)
ccwrapped --all # lifetime
ccwrapped --by project # where your tokens actually goWhy a card?
Because “I ran 12,480 messages through Claude Code this month” is a thing people want to show,
not a number buried in a table. --wrapped writes a self-contained SVG (fonts embedded) — open it
in any browser, screenshot, post it. Drop --anon and it hides your project names for a clean public
share. Seasonal flex, built in: Claude Code Wrapped.
Pairs with
ccusage: ccusage is the spreadsheet, ccwrapped is the poster. Same~/.claudedata, different job — numbers vs. a thing you share.
Two looks — pick your share
Add --v2 for the Build Fingerprint: your model mix as one two-ink risograph bar — which models
actually did the work, not just a total. It turns the card from a stat readout into a signature.
ccwrapped --all --wrapped --v2 # → the Build Fingerprint card (example above)In your terminal — the daily driver
ccwrapped prints a clean per-model breakdown: messages, tokens, est. cost, and what caching saved you.
Options
ccwrapped [period] [--by model|project|day] [--json] [--wrapped [file.svg]] [--anon] [--v2]
period: --today | --week | --month (default) | --all | --days N
--v2 (--fingerprint): the "Build Fingerprint" card — your model mix as a single 2-ink barHow it works
Reads assistant lines in ~/.claude/projects/**/*.jsonl, deduplicates by message.id (streaming
writes the same message several times), and prices tokens against a bundled per-model rate table
(input / output / cache-read / cache-write 5m & 1h).
Honest about the numbers
- Cost is an estimate (API-equivalent). On a Pro/Max plan it is not what you paid — it's the value you'd have spent at API rates.
- Rates are a bundled snapshot of Anthropic pricing; 1M-context premiums and web-tool fees aren't modelled. Token cost dominates, so totals are close, not exact.
- 100% local. No network calls (grep the source — there are none). Your transcripts never leave the machine.
License
MIT. Bundled fonts: Space Grotesk & JetBrains Mono (SIL Open Font License).
Built by greymoth. If your Wrapped surprised you, a ⭐ helps the next person find it.
