Drop in your numbers, pick one of thirteen designs, deploy a page. Show recruiters what working with machines actually looks like — not just that you do it.
A static page with no runtime, no auth, no telemetry. Your tokens stay on your machine until you deploy. The CLI reads from local logs you already have — no API keys, no signups.
One command reads your local ~/.claude and ~/.codex sessions and writes a data.js with your numbers — by month, by model, by project.
$ npx tokenfolio initThirteen aesthetic worlds reading from the same data. Switch templates with zero data changes — your year, repainted in another language.
$ npx tokenfolio pick wrappedOne-click to Vercel or Netlify; or enable GitHub Pages on the repo you just cloned. Auto-generates an OG image and a README badge for your profile.
$ npx tokenfolio shareFrom Spotify-Wrapped maximalism to a thermal-paper receipt. Each template reads the same window.RESUME_DATA — swap aesthetics without rewriting a line.
tokenfolio reads token counts, model names, project paths and dates from your local sessions. The contents of your conversations are never parsed, sent, or stored.
Only counts, names, paths and dates are read. Prompt content — message lines in
Claude JSONL, response_item lines in Codex — is never touched. Audit the
parser yourself: it's a single file in bin/.
// One file. Every template reads from it. window.RESUME_DATA = { user: { name, handle, title, location, bio, links }, year: 2025, totals: { tokens: 47221890, sessions: 312, projects: 28, cost_usd: 1247.50, avg_session_tokens: 151352 }, by_month: [{ month, tokens, sessions, top_project, peak }, …], by_model: [{ name, tokens, color }, …], top_projects:[{ name, tokens, language, description }, …], highlights: [{ label, value, detail }, …] };
A single npm package, written in plain Node. No build step on your side, nothing to host.
Scans Claude Code and Codex logs, merges them, and previews the resulting data.js without writing it.
Rewrites the root index.html as a redirect to your chosen template — so links point to the look you want.
1200×630 PNG containing your real numbers. Tries Satori first, falls back to Pillow. Drop it at og:image and share away.
Pure-Node SVG: a shields-style chip and a github-readme-stats-style card with a monthly sparkline. Paste into your profile.
Auto-detects your GitHub Pages URL and opens an X intent pre-filled with your stats. Prints a LinkedIn URL to copy.
The whole CLI is a single readable Node file with no transitive dependencies. Audit it. Patch it. Submit a PR.
Fork the template, edit one file, push. The whole loop is under five minutes if your sessions are already on disk.