Skip to main content

tokenmap

Your AI coding stats, visualized.

A GitHub-style contribution heatmap that shows how much you actually use AI coding tools. One command. Auto-detected. Shareable.

PyPI version license


tokenmap demo

pip install tokenmap
tokenmap

That's it. It reads your local data and renders a heatmap — plus an estimated cost breakdown — right in your terminal.

By default tokenmap includes your Claude Code data (and auto-detects any other installed tools), uses the dark-green theme, shows the cost breakdown, and stays terminal-only. Pass --export png (or svg/csv) when you want a shareable file.

Supported Tools

Tool Data Source What's Tracked
Claude Code ~/.claude/stats-cache.json Tokens, models, sessions, costs
Codex CLI ~/.codex/sessions/*.jsonl Tokens, models, session durations
OpenCode ~/.local/share/opencode/ Tokens, models, messages
Cursor Cursor API + local state.vscdb Tokens, models, usage events

tokenmap auto-detects which tools you have installed. No configuration needed.

Install

pip install tokenmap

Requires Python 3.10+.

System Dependencies

For PNG export, you need Cairo installed:

# macOS
brew install cairo

# Ubuntu/Debian
sudo apt install libcairo2-dev

# Fedora
sudo dnf install cairo-devel

Usage

# Basic — Claude + any other auto-detected tools, cost breakdown, terminal only
tokenmap

# Add your name to the heatmap
tokenmap --user yourname

# Pick tools (Claude is always included unless you pass --no-claude)
tokenmap --codex                 # Claude + Codex
tokenmap --no-claude             # everything detected EXCEPT Claude
tokenmap --no-claude --cursor    # Cursor only

# Filter by date
tokenmap --year 2025
tokenmap --since 2026-01-01 --until 2026-01-31
tokenmap --since 2026-05-01      # from a date through today

# Filter to one model (substring match)
tokenmap --model claude-opus-4-7
tokenmap --model opus            # every Opus variant

# Change the color theme (default is dark-green)
tokenmap --theme green

# Export a shareable file (off by default)
tokenmap --export png
tokenmap --export svg
tokenmap --export csv            # per-day token + cost rows
tokenmap --out ~/Desktop/my-ai-usage.png   # implies export, format from extension

# Copy PNG to clipboard (implies PNG export)
tokenmap --copy

# Dump raw stats as JSON (to stdout, or to a file with --out)
tokenmap --json
tokenmap --json --out stats.json

# Hide the cost breakdown (shown by default)
tokenmap --no-cost

# See all themes
tokenmap --list-themes

Themes

10 built-in themes — 5 light, 5 dark:

Dark Light
dark-ember green
dark-green (default) purple
dark-purple blue
dark-blue amber
dark-mono mono

Options

Flag Description Default
--user <name> Username shown on the heatmap
--claude / --no-claude Include Claude Code data on
--codex Also include Codex data off
--opencode Also include OpenCode data off
--cursor Also include Cursor data off
--theme <name> Color theme dark-green
--export <fmt> Write a file: png, svg, or csv off (terminal only)
--no-export Force terminal-only output (overrides --export/--out)
--out <path> Custom output path (implies export; format from extension)
--copy Copy PNG to clipboard (implies PNG export)
--year <year> Filter to a specific year last 365 days
--since <date> Start date, inclusive (YYYY-MM-DD)
--until <date> End date, inclusive (YYYY-MM-DD)
--model <name> Filter to models matching this name (substring) all models
--json Output raw stats as JSON (to stdout, or --out file)
--cost / --no-cost Show estimated cost breakdown by model on
--live-pricing / --no-live-pricing Fetch current model pricing (cached 24h; offline falls back to built-in table) on
--list-themes Show all available themes

Programmatic Usage

from tokenmap import aggregate_multi, render_terminal, render_svg, compute_stats
from tokenmap.types import RenderOptions

# Load data from all detected tools
panels = aggregate_multi()

# Render to terminal
render_terminal(panels, RenderOptions(theme="dark-green", user="myname"))

# Generate SVG
svg_string = render_svg(panels, RenderOptions(theme="dark-green", user="myname"))

# Access raw stats
for panel in panels:
    print(f"{panel.tool}: {panel.stats.total_tokens} tokens")

How It Works

tokenmap reads locally stored data from your AI coding tools. It never sends data anywhere — everything stays on your machine.

  1. Detect — scans for installed tool data directories
  2. Aggregate — merges token usage, sessions, and model stats across tools
  3. Render — generates a terminal heatmap + cost breakdown
  4. Export (optional) — with --export, saves a high-res PNG/SVG with stats panel, or a CSV of per-day tokens + cost

Privacy

  • All data is read locally from your filesystem
  • Nothing is uploaded or transmitted
  • Two optional network requests, both disable-able:
    • Cursor's API (to fetch your own usage CSV, using your local auth token) — with a local-only fallback that reads Cursor's state.vscdb on your machine when the API is unavailable.
    • A pricing lookup: a GET of LiteLLM's public pricing catalog (a static JSON file on GitHub) so cost estimates stay current for new models. No data about you is sent — it's a plain download, cached locally for 24 hours. Disable with --no-live-pricing; offline, tokenmap falls back to its built-in pricing table.

Attribution

This project is a Python port of tokenviz by Harsh Kedia. Original source: https://github.com/harshkedia177/tokenviz

Licensed under MIT. Original copyright retained.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tokenmap-0.1.4.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tokenmap-0.1.4-py3-none-any.whl (49.9 kB view details)

Uploaded Python 3

File details

Details for the file tokenmap-0.1.4.tar.gz.

File metadata

  • Download URL: tokenmap-0.1.4.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tokenmap-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d5d15a5f0e770b20299a1bc73485968188d71b4f95f05f8060f6338d9a9c1a77
MD5 40f289d7e51a6b286e0554624a74504f
BLAKE2b-256 d410277a799a141f77e3340fb6ae06acdf2bb3720d4a86da779e28d09c86f945

See more details on using hashes here.

Provenance

The following attestation bundles were made for tokenmap-0.1.4.tar.gz:

Publisher: publish.yml on akshatshaw/tokenmap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tokenmap-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: tokenmap-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 49.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tokenmap-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d48cda82941e42c57e1ad76bbcf1c4421c552fcfb45b234d281f3a69d368166f
MD5 920051cf587c1abc83fe244ea5747410
BLAKE2b-256 22dbed3331b2dc5b0f9bfa096c3bd1be4f5a112aa4639934a9c1b3aa8177a601

See more details on using hashes here.

Provenance

The following attestation bundles were made for tokenmap-0.1.4-py3-none-any.whl:

Publisher: publish.yml on akshatshaw/tokenmap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page