-
name: codeburn
-
description: CodeBurn is a local-first cost and usage tracker for AI coding tools (Claude Code, Codex CLI, Cursor, Copilot, and 40+ others). It reads the session logs those tools already write on the user’s machine and turns them into itemized cost analytics: by project, model, session, day, and pull request. Everything is parsed locally; there are no accounts and no uploads.
-
snapcraft: The snapcraft.yaml is generated at build time by electron-builder. The snap configuration lives in the repository below at app/package.json (“snap” section), and the CI build that produces the snap is at .github/workflows/build-snap.yml on the main branch.
-
upstream-relation: I am the upstream author and maintainer; the upstream project itself publishes the snap.
-
supported-category: developer tools. CodeBurn is a companion utility for development environments: its sole function is inspecting state written by other developer tools (AI coding agents) into the user’s home directory.
-
reasoning: The application’s entire purpose is reading session logs that other developer tools write into hidden directories in the user’s home: ~/.claude, ~/.codex, ~/.cursor, ~/.gemini, ~/.qwen, and more than a dozen others. Under strict confinement:
- The
homeinterface deliberately excludes hidden files and directories, so it grants access to none of the data the app exists to read. personal-fileswould require enumerating every directory. The supported tool list is currently 40+ and grows with each release as new AI coding tools appear, so each addition would need a new store declaration and review round. Users of a newly supported tool would see silent empty results until that round is completed.
Access needed is read-only and confined to per-tool state directories; the app never modifies other tools’ files. No existing interface combination provides read access to an open-ended set of hidden directories in $HOME, which is why classic confinement is requested.
- The
I understand that strict confinement is generally preferred over classic.
I’ve tried the existing interfaces to make the snap to work under strict confinement.