macOS menu-bar app for Claude CLI

See what your Claude CLI actually costs.

A menu-bar app showing daily token count, estimated cost, and per-model, MCP, and Skill breakdown. Read-only, zero intrusion.

View on GitHub
Tokenscope
Day
Week
Month
Total tokens
0.00M14%
Est. cost
$46.10
Input 8.13M Output 4.27M56% cached
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Tokens by model
Claude Sonnet 4.5
5.82M46.9%
Claude Opus 4.1
3.07M24.8%
GPT-5
1.94M15.7%
Gemini 2.5 Pro
910K7.3%
Llama 3.3 70B
660K5.3%

Three ways to slice your usage.

Tokens by model, by MCP call, by Skill call. Spot which models drain your budget and which tools you installed but never touch.

Cost by model

Where the dollars actually go, per period.
$46.10
Opus 4.1$19.10
Sonnet 4.5$18.40
GPT-5$6.20
Gemini 2.5 Pro$2.40
Requests
2,847
143 sessions
Cost trend
$46.10
this week

Tools you actually use

Only the MCP servers and Skills you installed yourself.
MCP calls10 · 5 servers
github
3
playwright
2
figma-dev-mode
2
context7
2
firecrawl
1
Anthropic's bundled MCP and every built-in tool are filtered out.
Skill calls12 · 5 skills
find-skills
4
skill-creator
3
design-taste-frontend
2
seo-audit
2
vercel-react-best-practices
1
Read from your own ~/.claude/skills/ directory.

A year of activity

Daily token volume across the last twelve months.
DecJanFebMarAprMayJun
LessMore

Cache changes everything

56% cached
Heavily cached days show huge token counts but a modest bill. Cache hits are billed at their own cheaper rate, not as fresh input.

Read-only by design.

Tokenscope reads the JSONL logs your Claude CLI already writes to disk. No API keys. No calls to Anthropic. Nothing leaves your Mac.

Read

Scans ~/.claude/projects/**/*.jsonl for every assistant message, its usage, model, and tool calls.

Dedupe

Collapses streaming retries by message.id and merges multi-line messages, so each turn is counted exactly once.

Price

Matches models.dev first, then LiteLLM, then a built-in snapshot. Cached for 24 hours with an offline fallback.

Show

Renders today's total in the menu bar and the full dashboard a click away, refreshed in the background.

Why a cache hit barely costs anything.

Every token is billed by type. The four counts are mutually exclusive, and cached reads run roughly one hundred times cheaper than fresh output.

Input
New prompt tokens sent this turn.
1.25×
Cache write
Context written into the prompt cache.
0.1×
Cache read
Context replayed from cache. The cheap one.
Output
Tokens the model generates. The priciest.

So a day with ninety-nine percent cache reads can log millions of tokens yet cost a few dollars. The panel folds cache into “In” for display only; billing always uses the four rates above.

Install in one line.

Homebrew clears the quarantine flag for you, so it opens on first launch. After that it runs in your menu bar on every boot.

$ brew install --cask hdusy/tokenscope/tokenscope

Prefer a direct download? Grab the universal .dmg from GitHub Releases. It is an unsigned build, so on first launch right-click the app and choose Open, or run xattr -cr /Applications/Tokenscope.app once.

Frequently asked.

The questions that come up before someone runs the brew install.

No. It reads the JSONL logs your Claude CLI already writes to ~/.claude/projects/, prices them against a locally cached snapshot of models.dev / LiteLLM, and renders the result in your menu bar. No telemetry, no account, no API key.
The cask isn't notarized through the Apple Developer program yet. Homebrew clears the quarantine flag for you, so the brew route opens on first launch. For a direct .dmg download, right-click → Open the first time, or run xattr -cr /Applications/Tokenscope.app once.
Each of the four token buckets — input, cache write, cache read, output — is priced by its own rate, pulled from models.dev first, LiteLLM as a fallback, then a built-in snapshot if you're offline. Rates cache for 24 hours on disk. Numbers track Anthropic's billing to the cent for priced Claude models; any model with no published pricing is flagged as “unpriced” in the panel.
The menu-bar process watches the projects directory for file changes and only re-parses files whose mtime moved. Idle CPU is essentially zero; memory hovers in the low tens of MB. Refreshing the panel is a single pass over the new JSONL bytes since the last read.
Today only Claude CLI's JSONL format is parsed. Other tools write different shapes — if you want one supported, open an issue on the repo with a redacted log sample and it'll get a parser.
Yes. MIT licensed, no paid tier, no telemetry to sell. The repo is at github.com/HduSy/tokenscope.

Start watching your tokens.

Free, MIT licensed, and it lives in your menu bar.

View on GitHub