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

> Source: <https://dev.to/chieund/i-built-a-tray-app-to-see-where-my-claude-code-tokens-actually-go-20d7>
> Published: 2026-10-16 19:09:20+00:00

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. ⭐
