A menu-bar app showing daily token count, estimated cost, and per-model, MCP, and Skill breakdown. Read-only, zero intrusion.
Tokens by model, by MCP call, by Skill call. Spot which models drain your budget and which tools you installed but never touch.
~/.claude/skills/ directory.Tokenscope reads the JSONL logs your Claude CLI already writes to disk. No API keys. No calls to Anthropic. Nothing leaves your Mac.
Scans ~/.claude/projects/**/*.jsonl for every assistant message, its usage, model, and tool calls.
Collapses streaming retries by message.id and merges multi-line messages, so each turn is counted exactly once.
Matches models.dev first, then LiteLLM, then a built-in snapshot. Cached for 24 hours with an offline fallback.
Renders today's total in the menu bar and the full dashboard a click away, refreshed in the background.
Every token is billed by type. The four counts are mutually exclusive, and cached reads run roughly one hundred times cheaper than fresh output.
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.
Homebrew clears the quarantine flag for you, so it opens on first launch. After that it runs in your menu bar on every boot.
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.
The questions that come up before someone runs the brew install.
~/.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..dmg download, right-click → Open the first time, or run xattr -cr /Applications/Tokenscope.app once.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.