cd /news/ai-tools/i-built-a-tray-app-to-see-where-my-c… · home › topics › ai-tools › article
[ARTICLE · art-151570] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

I built a tray app to see where my Claude Code tokens actually go

A developer built Bumeter, a free, open-source (GPL-3.0) desktop tray app that reads the local JSONL session logs Claude Code and Kiro already write to disk and attributes token usage to individual turns, skills, and sessions. Testing it against 38 MB of personal logs (~16,500 lines, ~757M tokens) showed that 97% of tokens were cache reads, that long sessions grow expensive because each request re-reads the full context, and that unused skills still incur a per-request cost. The app derives 5-hour and 7-day quota percentages by wrapping the Claude Code status line command with a pass-through tee, stores results in a local SQLite database, and uploads nothing.

by read4 min views1 publishedOct 16, 2026

You're deep in a refactor with Claude Code, everything is flowing, and then:

You've hit your limit. Resets at 3:10 PM.

Two hours of nothing. And the worst part isn't the wait — it's that I had no idea what burned the quota. Was it that one giant conversation? The 20 skills I installed "just in case"? A turn that re-read half the repo?

So I built Bumeter: a small desktop app that reads the logs Claude Code and Kiro already write on your machine and answers two questions:

It's free, open source (GPL-3.0), and nothing is uploaded — it only reads files that are already on your disk.

The tray menu shows one bar per tool. The mascot, Bum 🔥, changes face with your usage — calm, happy, worried, on fire, or asleep — and the highest percentage sits next to it in the top bar.

Claude Code
▰▰▰▰▰▱▱▱▱▱ 🟢  5 hours · 49% · reset 13:10
▰▰▰▰▰▰▰▰▰▱ 🔴  7 days · 90% · reset Oct 16
Kiro
▰▰▰▱▱▱▱▱▱▱ 🟢  Month · 27% · 271/1000 credits · reset Nov 1

You also get a notification when a quota passes your thresholds (70% / 90% by default) or when a single turn costs far more than usual.

Every conversation, grouped by day, with a fuel bar showing how much it cost. Filter by project, model, "costly", "large context", "interrupted" or starred, then open a conversation to see every turn: what you asked, which tools ran, and why it was expensive.

For any session: what is filling the context window (your messages, tool output, re-reads…), when it was compacted, and which tool calls were huge.

This one surprised me. A skill's description sits in the system prompt of every request in every session, whether you use the skill or not. Bumeter shows each skill's always-on cost next to how often you actually used it — and you can disable, resize or remove skills with undo.

Claude Code writes a JSONL log for every session under ~/.claude/projects/. Each API call records its token usage: input, cache writes, cache reads, output. Bumeter tails those files, de-duplicates the streamed entries, attributes each call to the turn and skill that caused it, and stores the result in a local SQLite database.

The 5-hour / 7-day percentages are trickier: they aren't in the logs. But Claude Code passes them to your status line command as JSON. So Bumeter puts a tiny bum statusline --tee in front of your existing status line command: it saves the numbers and passes the input through untouched, so your status line keeps working. The change to ~/.claude/settings.json is backed up and has an undo button.

Kiro doesn't log tokens at all, so context size is estimated from the per-turn context percentage, and cost is shown in credits. The monthly limit comes from kiro-cli /usage (only when it's installed and you're logged in), or you can type it in.

Each tool is an adapter behind one interface, so adding Codex, Cursor or Gemini CLI is a new adapter plus one line in a registry — the UI already has per-tool tabs.

h() helper, Vite, Vitest)bum CLI: bum status, bum scan, bum session, bum skills, and bum audit I checked it against my own data (38 MB of logs, ~16,500 lines):

97% of my tokens were cache reads. Of ~757M tokens, ~735M were cache reads. A "2 million token conversation" sounds scary, but most of it is the same context being re-read on every request — which is much cheaper than fresh input. Raw token counts can make you panic about the wrong thing.

Long sessions get expensive by themselves. Every request re-reads the whole context, so the same short question costs more at turn 200 than at turn 2. Watching context size per turn makes it obvious when /compact or a fresh session is worth it.

Skills you never use still cost something. Small per request, but paid on every request. Worth pruning.

.deb and AppImage.exe / .msi) The UI is in English and Vietnamese, with light and dark themes.

/compact or a new session when the context is large and being re-read heavily. If you use Claude Code or Kiro every day, I'd love to hear what you'd want from a tool like this — and which assistant I should support next. Issues and PRs are welcome. ⭐

── more in #ai-tools 4 stories · sorted by recency
── more on @bumeter 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-a-tray-app-t…] indexed:0 read:4min 2026-10-16 · —