Local-first, for real: what Bumeter reads, writes and sends

#privacy#local-first#security

"Nothing leaves your machine" is easy to write on a landing page. This post backs it up with specifics: every place Bumeter reads from, everything it writes, the three times it goes online, and how to remove all of it. If you would rather check than trust, the last section tells you where to look in the source.

No account, no telemetry, no server

Bumeter has no sign-up and no server of its own. It does not collect analytics, crash reports or usage statistics, and it never sends your prompts, code, file names or token counts anywhere. It does not read your Anthropic or Kiro account either: everything it shows comes from files your AI tools already wrote on your disk.

What it reads

WhereWhy
~/.claude/projects/**/*.jsonlClaude Code session logs: turns, tokens, tools and skills used
~/.kiro/sessions/cli/Kiro CLI sessions: turns, context percentage, credits
OpenCode's opencode.dbOpenCode sessions, opened read-only
~/.claude/skills/, ~/.kiro/skills/installed skills and their SKILL.md
~/.claude/settings.jsononly the statusLine entry, to show whether limit tracking is on

If your tools keep their data somewhere else, the log folders can be changed in config.toml (claude_projects_dir, kiro_sessions_dir, opencode_db). Bumeter never writes to any tool's logs or database.

It also runs two local commands when they are installed: claude plugin to list the skills that come with your Claude Code plugins, and kiro-cli chat --no-interactive "/usage" to read your Kiro credit balance. The second one does not call a model and does not create a session.

What it writes

Almost everything goes into one folder:

On Linux and macOS that folder is created readable by you only (mode 0700), and the socket the CLI uses to talk to the app is 0600.

FileHolds
bumeter.dbSQLite: sessions, turns with the text of your question, token counts per call, tool and skill names, compactions. The model's answers are not stored; when you open a conversation, Bumeter reads it from the log file.
limits.jsonthe latest 5-hour and 7-day percentages from Claude Code's status line
tool_quotas.jsonthe latest Kiro credit reading
config.tomlyour settings
notes.jsonnotes you add to turns
skill_ops.jsonl, trash/the journal of skill changes, and uninstalled skills for 30 days
backups/your original settings.json, from before limit tracking was turned on

Outside that folder, Bumeter changes things in two places, and only when you confirm a plan that lists the change first:

The three times it goes online

WhenWhat it contactsWhat it sends
About 20 seconds after the app starts, and when you click "Check for updates"GitHub Releases, for latest.jsonan ordinary HTTPS request for that file
When you browse or search skills in the appskills.sh's public JSON APIyour search words
When you install a skill you pickedthe skill's GitHub repositorya git clone

That is all. The bum CLI and the Claude Code status line hook never touch the network. The app's window loads its interface from inside the app, not from a website.

Removing everything

  1. Turn off limit tracking first: Settings → Limit tracking → Remove. That puts your Claude Code status line back exactly as it was. (If you skip this, the record-only form keeps working without Bumeter, but the "show" form needs it.)
  2. Uninstall the app the usual way for your system. On Windows the uninstaller also takes bum off your PATH.
  3. Delete the data folder listed above. With Homebrew, brew uninstall --zap --cask bumeter removes it along with the app's caches and preferences.

Your AI tools' own files are untouched throughout; Bumeter only ever read them.

Check it yourself

Bumeter is open source under GPL-3.0, so none of this has to be taken on trust. A few places to start:

Or watch it: run Bumeter with your firewall's logging on for a day. You should see the update check go to GitHub after each start, and nothing else unless you went looking for skills.

Bumeter is free and open source (GPL-3.0), and everything stays on your machine. The source is at github.com/chieund/bumeter. Paths are resolved in crates/bum-core/src/paths.rs; the network calls are in app/src-tauri/src/update.rs and crates/bum-skills/src/market.rs.

Download Bumeter