TokmeterDocsGitHub

Tokmeter / Help

Troubleshooting

The daemon, the menu bar, updates, and numbers that look wrong.

Common symptoms and what they mean. Tokmeter is an accounting tool, so when a number looks wrong the first question is always which number — a live display, or the durable ledger. They are not the same thing.

The menubar bar

“The update is improperly signed and could not be validated”

The copy of TokmeterBar you’re running has no Sparkle public key embedded (or a mismatched one), so it can’t validate any update signature — including a perfectly valid release. This happens when the installed app was a local/dev build rather than the notarized release.

Fix: install the real notarized build — brew upgrade --cask tokmeterbar, or download TokmeterBar-<version>.zip from the releases page and replace the app in /Applications. From a correctly-signed build onward, auto-update works.

As of 1.14.1, a build produced without a signing key no longer advertises auto-update at all, so it can’t produce this error again — only properly signed releases ever point at the appcast.

The bar shows “?”, “offline”, or zeros

The daemon isn’t answering. Check and start it:

tokmeter-mcp daemon status
tokmeter-mcp daemon start

On macOS, install the always-on LaunchAgent so it starts at login and respawns on crash:

tokmeter-mcp daemon install-agent

A bar that shows “offline” while the daemon is actually healthy is usually a stale /tmp pidfile; the daemon self-heals within ~10s, or daemon restart forces it.

If the daemon is running but not answering (the bar stays on “?” and curl http://127.0.0.1:9877/api/ready times out), restart it with tokmeter-mcp daemon restart. Under the LaunchAgent that is the same as launchctl kickstart -k gui/$(id -u)/com.tokmeter.daemon.

Numbers look wrong

“My history is shrinking / tokens are disappearing”

Sealed days are immutable — they live in ~/.cache/tokmeter/aggregates/ and are frozen at the prices of the day they were sealed. A normal scan never re-derives them. If a displayed total dropped, suspect a display issue (daemon in-memory drift, or one project fragmented across subfolders) before a data-loss one: sum the aggregate files on disk and reconcile. The disk ledger is almost never wrong.

A genuine shrink only happens on an explicit forced/deep rescan, which is gated precisely because raw transcripts age out and the relay becomes the only copy.

“The cost seems off”

Estimated cost is not a bill. Where a tool reports its own cost, that’s used; otherwise cost is derived from token counts and a public price catalog. Long-context tiers, negotiated rates and subscription plans are not modeled. Lifetime totals also mix pricing eras — prefer today/week/month when showing a number to a human.

Pricing shows as stale

The price catalog (“kosha”) refreshes on a schedule. Only today reprices when the catalog updates (since 1.15.0, also when ~/.tokmeter/pricing-overrides.json changes); past days stay frozen by design. Force a refresh from the bar’s settings or re-run the daily refresh.

Performance

High CPU or memory

Never call a full scan in a loop, a poll, or a hot path — a full scan parses the whole corpus and is memory-heavy. Anything running more than once a minute should read the daemon (127.0.0.1:9877) or the MCP server, which hold warm state.

If the daemon itself spikes, a common cause is old session files whose modification time was bumped (e.g. editing or re-saving old transcripts), making them look like “today” and forcing re-parses. Tokmeter filters on the path date to resist this, but editing large old transcripts in place can still trigger a rescan.

MCP

The registry shows an old version

io.github.sriinnu/tokmeter keeps every published version in the MCP registry; a search response lists them all, oldest first. The newest active entry is the latest — don’t read the first row as “current.” Clients resolve the latest automatically.

Cleanup tool deleted more than expected

tokmeter_cleanup_execute deletes whole source files; a file can hold records outside your filter. Always run tokmeter_cleanup_preview first and read its partial-file warnings. Everything is backed up to ~/.cache/tokmeter/backups/ first (unless you passed backup: false) — restore with tokmeter_restore (confirm: "RESTORE"). See Backup, Snapshot & Restore.

See also

Something wrong or out of date? This page is generated from its source on GitHub.