getagentseal/codeburnPublic

Free, local tool to track AI coding token usage and cost across 31 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn

AI summary: A local tool to track AI coding token usage and costs.

Stars
9.2K
+34 today
Forks
720
Watchers
28
Open issues
24
Open PRs
32
Contributors
~71
Commits
1.2K
Branches
212

TypeScriptMITCreated Apr 13, 2026Last push 3d agoLatest release desktop-v0.9.19+143 stars this week+195 this month

Star history

since Apr 12, 2026
02.5K5K7.5KApr 2026May 2026Jun 2026Aug 2026
9.2K stars as of Aug 7, 2026, tracked back to Apr 12, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 8 commits2026-04-14: 35 commits2026-04-15: 41 commits2026-04-16: 43 commits2026-04-17: 28 commits2026-04-18: 20 commits2026-04-19: 43 commits2026-04-20: 34 commits2026-04-21: 14 commits2026-04-22: 8 commits2026-04-23: 4 commits2026-04-24: 13 commits2026-04-25: 10 commits2026-04-26: 0 commits2026-04-27: 4 commits2026-04-28: 14 commits2026-04-29: 5 commits2026-04-30: 5 commits2026-05-01: 2 commits2026-05-02: 14 commits2026-05-03: 6 commits2026-05-04: 11 commits2026-05-05: 11 commits2026-05-06: 13 commits2026-05-07: 1 commit2026-05-08: 5 commits2026-05-09: 8 commits2026-05-10: 7 commits2026-05-11: 18 commits2026-05-12: 2 commits2026-05-13: 2 commits2026-05-14: 4 commits2026-05-15: 8 commits2026-05-16: 3 commits2026-05-17: 5 commits2026-05-18: 5 commits2026-05-19: 3 commits2026-05-20: 2 commits2026-05-21: 4 commits2026-05-22: 4 commits2026-05-23: 1 commit2026-05-24: 12 commits2026-05-25: 1 commit2026-05-26: 2 commits2026-05-27: 10 commits2026-05-28: 2 commits2026-05-29: 2 commits2026-05-30: 13 commits2026-05-31: 6 commits2026-06-01: 3 commits2026-06-02: 9 commits2026-06-03: 4 commits2026-06-04: 1 commit2026-06-05: 0 commits2026-06-06: 12 commits2026-06-07: 1 commit2026-06-08: 0 commits2026-06-09: 14 commits2026-06-10: 4 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 1 commit2026-06-14: 2 commits2026-06-15: 0 commits2026-06-16: 5 commits2026-06-17: 1 commit2026-06-18: 15 commits2026-06-19: 9 commits2026-06-20: 11 commits2026-06-21: 5 commits2026-06-22: 11 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 1 commit2026-06-27: 1 commit2026-06-28: 8 commits2026-06-29: 1 commit2026-06-30: 1 commit2026-07-01: 7 commits2026-07-02: 12 commits2026-07-03: 17 commits2026-07-04: 1 commit2026-07-05: 2 commits2026-07-06: 3 commits2026-07-07: 0 commits2026-07-08: 2 commits2026-07-09: 12 commits2026-07-10: 30 commits2026-07-11: 29 commits2026-07-12: 25 commits2026-07-13: 1 commit2026-07-14: 4 commits2026-07-15: 0 commits2026-07-16: 75 commits2026-07-17: 15 commits2026-07-18: 7 commits2026-07-19: 3 commits2026-07-20: 36 commits2026-07-21: 2 commits2026-07-22: 5 commits2026-07-23: 3 commits2026-07-24: 6 commits2026-07-25: 0 commits2026-07-26: 4 commits2026-07-27: 4 commits2026-07-28: 1 commit2026-07-29: 7 commits2026-07-30: 0 commits2026-07-31: 6 commits2026-08-01: 2 commits2026-08-02: 5 commits2026-08-03: 9 commits2026-08-04: 19 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
992 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Breakout launch

    9,183 stars in 116 days

  • Very active

    992 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What codeburn does

Codeburn is a free, locally hosted utility that monitors AI token usage and associated costs across more than 30 coding tools and agents. It tracks consumption by model, project, and specific task, providing a comprehensive overview of AI expenditure. It features a web dashboard and terminal UI, ensuring that token usage data remains observable and manageable for developers relying heavily on AI assistance.

Software engineers, engineering managers, and teams who use multiple AI coding assistants and need to track their token usage and costs accurately.

  • Comprehensive Tracking: Monitors usage across 31 different AI tools and agents.
  • Granular Analysis: Breaks down costs by model, project, and individual task.
  • Local Execution: Runs entirely locally, keeping usage data private.
  • Dual Interface: Provides both a terminal UI and a web-based dashboard.
  • Broad Compatibility: Supports popular tools like Claude Code, Cursor, and Gemini.

Where teams use it

Managing AI Spend

Freelancers and small teams needing to monitor and control their monthly expenditure on various AI coding assistants.

Project Cost Allocation

Agencies tracking API costs per project to accurately bill clients for AI usage.

Model Comparison

Developers comparing the token efficiency and cost-effectiveness of different LLMs for specific tasks.

Getting started: npx codeburn

README

main branch

Codex and Claude for Open Source Recipient

CodeBurn

See where your AI spend goes.

npm version total downloads license node version Discord Follow @_codeburn on X Sponsor

If CodeBurn shows you something your bill never did, star the repo so other developers find it, and consider sponsoring to keep 36 integrations honest.

Desktop
CodeBurn Desktop
Download for macOS (Apple Silicon) Download for macOS (Intel) Get CodeBurn from the Microsoft Store Download for Linux (.deb) Download for Linux (.rpm) Download for Linux (AppImage)
Web
CodeBurn Web dashboard
npx codeburn web
Terminal
CodeBurn TUI dashboard
npx codeburn
macOS Menubar
CodeBurn macOS menubar
codeburn menubar

Four surfaces, one source of truth: everything reads the session files already on your disk.

CodeBurn is a free, open-source, local-first tool that tracks AI coding token usage and cost across 36 tools and agents (Claude Code, Cursor, Codex, Gemini, Grok and more), broken down by model, project, and task.

You pay for Claude, Codex, Cursor, and a stack of other AI tools. The bill tells you the total. It never tells you that half of it went to conversation instead of code, or that an expensive model burned your budget on work a cheaper one would have one-shot.

CodeBurn does. It reads the session files your tools already write to disk and breaks down every token and dollar by task, model, tool, and project, across 36 AI tools.

Everything runs locally. No wrapper, no proxy, no API keys, nothing leaves your machine. Pricing comes from LiteLLM, refreshed daily.

Quick start · Find waste · Apply fixes · Guard · Compare models · Track what shipped · MCP · Supported tools · Commands · Features · How it reads data

Quick start

Run it instantly, no install needed:

npx codeburn

That opens the interactive dashboard (last 7 days by default). Arrow keys switch periods, q quits. That is the 30-second version. You now know where your AI budget goes.

Install it for a permanent codeburn command:

npm install -g codeburn

Also runs via bunx codeburn or pnpm dlx codeburn, or brew install codeburn on macOS.

Menu bar app for macOS, with your spend always in the menu bar:

codeburn menubar

On Linux, a GNOME Shell extension gives the same panel view; see Linux (GNOME).

Requires Node.js 22.13+ and at least one supported tool with session data on disk. For Cursor and OpenCode, better-sqlite3 installs automatically.

Your month at a glance

codeburn overview                                    # this month, clean tables
codeburn overview --no-color                         # plain text, ready to paste
codeburn overview --from 2026-06-01 --to 2026-06-15  # any date range
codeburn overview -p all                             # last 6 months
codeburn overview -p lifetime                        # full history (uncapped)
codeburn overview --provider claude                  # one tool only

codeburn overview prints a copy-pasteable summary of where your AI spend went: totals (cost, tokens, cache hit), a breakdown by tool and by top model, your highest-value days, top projects, a per-day table, and activity and tool usage. Pipe it anywhere (into pbcopy, a PR, Slack, or a tweet); color drops automatically when the output is not a terminal, or pass --no-color.

CodeBurn  June 2026

Totals
  Cost       $2,795.10
  Tokens     3.49B   in 23.9M / out 20.2M / cache-w 72.5M / cache-r 3.38B
  Calls      14,755   sessions 753
  Cache hit  99.3%

By tool
┌──────────┬───────────┬────────┬───────┐
│ Tool     │      Cost │ Tokens │ Share │
├──────────┼───────────┼────────┼───────┤
│ claude   │ $2,662.37 │  3.34B │   95% │
│ codex    │   $119.12 │ 128.1M │    4% │
└──────────┴───────────┴────────┴───────┘

(plus Top models, Highest-value days, Top projects, a per-day table, By activity, and Tools)

Find and fix waste

codeburn optimize                       # scan the last 30 days
codeburn optimize -p today              # today only
codeburn optimize -p week               # last 7 days
codeburn optimize --provider claude     # restrict to one provider
codeburn optimize --format json         # setup health + findings as JSON

codeburn optimize scans your sessions and your ~/.claude/ setup for waste patterns:

  • Files Claude re-reads across sessions (same content, same context, over and over)
  • Low Read:Edit ratio (editing without reading leads to retries and wasted tokens)
  • Wasted bash output (uncapped BASH_MAX_OUTPUT_LENGTH, trailing noise)
  • Unused MCP servers still paying their tool-schema overhead every session
  • Ghost agents, skills, and slash commands defined in ~/.claude/ but never invoked
  • Bloated CLAUDE.md files (with @-import expansion counted)
  • Cache creation overhead and junk directory reads
  • Context-heavy sessions where effective input/cache tokens swamp output
  • Possibly low-worth expensive sessions with no edit turns or repeated retries when no git/gh delivery command is observed

Each finding shows the estimated token and dollar savings plus a ready-to-paste fix: a CLAUDE.md line, an environment variable, or a mv command to archive unused items. Findings are ranked by urgency (impact weighted against observed waste) and rolled up into an A to F setup health grade. Repeat runs classify each finding as new, improving, or resolved against a 48-hour recent window.

You can also open it inline from the dashboard: press o when a finding count appears in the status bar, b to return.

Apply fixes, undo anytime

codeburn optimize --apply             # review and apply fixes interactively
codeburn optimize --apply --dry-run   # print the plan, change nothing
codeburn optimize --apply --yes       # apply every appliable fix without prompting
codeburn act list                     # every change CodeBurn has made
codeburn act undo --last              # roll the most recent change back
codeburn act report                   # realized vs estimated savings

codeburn optimize finds the waste; --apply fixes the config-class findings for you: settings values, environment variables, archiving unused agents and skills. Every change is backed up and journaled before it lands. codeburn act list shows the history and codeburn act undo <id> restores the original files (it refuses if the files changed since being applied, unless you pass --force).

The loop closes on honesty: once an applied fix is at least 3 days old, codeburn act report compares its estimated savings against what your sessions actually did, and later codeburn optimize runs show that realized figure in the header. Estimates get checked against reality, not just claimed.

Guard your budget

codeburn guard install            # hooks into this project's .claude/settings.json
codeburn guard install --global   # or into ~/.claude/settings.json
codeburn guard status             # caps, install locations, flagged projects
codeburn guard uninstall          # removes cleanly, leaves your own hooks alone

Guard installs opt-in hooks into Claude Code that watch session cost while you work:

  • Soft cap (default $5): a one-time in-session warning when a session passes it.
  • Hard cap (default $15): stops the session; codeburn guard allow lifts it for that session only.
  • Checkpoint (default $3): if a session ends past this with no edits and no commits, a nudge suggests starting fresh with a named deliverable.
  • Session openers: projects where optimize found waste get a one-line flag at session start.

Caps are edited in ~/.config/codeburn/guard.json (set a value to null to disable it). Add --statusline to show session cost in the Claude Code status line. Installs go through the same journal as everything else, so codeburn act undo removes them too. Hooks fail open: a broken guard never blocks a session.

Compare models

codeburn compare                        # interactive model picker (default: last 6 months)
codeburn compare -p week                # last 7 days
codeburn compare -p today               # today only
codeburn compare --provider claude      # Claude Code sessions only

Which model is actually better for your work? Press c in the dashboard, or run codeburn compare. Arrow keys switch periods, b to return.

Section Metric What it measures
Performance One-shot rate Edits that succeed without retries
Performance Retry rate Average retries per edit turn
Performance Self-correction Turns where the model corrected its own mistake
Efficiency Cost per call Average cost per API call
Efficiency Cost per edit Average cost per edit turn
Efficiency Output tokens per call Average output tokens per call
Efficiency Cache hit rate Proportion of input from cache

Also compares per-category one-shot rates, delegation rate, planning rate, average tools per turn, and fast mode usage.

Track what shipped

codeburn yield                  # last 7 days (default)
codeburn yield -p today         # today only
codeburn yield -p 30days        # last 30 days
codeburn yield -p month         # this calendar month
codeburn yield --format json    # productive/reverted/abandoned/ambiguous spend as JSON

Did the spend actually ship? codeburn yield correlates AI sessions with git commits by timestamp:

Category Meaning
Productive Commits from this session landed in main
Reverted Commits were later reverted
Abandoned No commits near session, or commits never merged
Ambiguous Session ran parallel to another and its window's commits were attributed to the tighter one

Attribution is timestamp-window based (heuristic): each commit is credited to at most one session, the tightest window containing it. The JSON report carries methodology: "timestamp-window".

Requires a git repository. Run from your project directory.

Browser dashboard

codeburn web                    # opens http://localhost:4747 in your browser
codeburn web -p 30days          # start on a different period
codeburn web --port 8080        # pick a port (falls back to a free one if taken)
codeburn web --no-open          # start the server without opening a browser

A local web dashboard with the same task, model, tool, and project breakdowns as the TUI, rendered with charts. The usage graph follows the selected period with 15-minute, hourly, or daily buckets and can switch between per-session and per-model lines. Everything is read from disk on your machine and the server binds to localhost; nothing is uploaded.

Combine usage across your devices

See one total across your laptop, desktop, and work machine on the same network. On each other device, share its usage:

codeburn share --pair           # opens a pairing window and prints a PIN

Then add it once from your main device (the PIN authorizes the pairing):

codeburn devices add            # find nearby devices and pair, or: add <host> --pin <pin>
codeburn devices                # combined totals by machine
codeburn devices rm <name>      # forget a device

Pairing is PIN-authorized and stays on your local network. You can also discover and pair devices straight from the browser dashboard.

Menu bar

codeburn menubar

One command: downloads the latest .app, installs into ~/Applications, and launches it. Re-run with --force to reinstall. The native Swift and SwiftUI app lives in mac/ (see mac/README.md for build details).

The menubar icon shows the spend period selected in Settings (Today by default; Week, Month, and 6 Months are also available). Non-today periods add a short suffix such as $42 / mo so the menu bar value stays clear. Click to open a popover with agent tabs, period switcher (Today, 7 Days, 30 Days, Month, All), Trend, Forecast, Pulse, Stats, and Plan insights, activity and model breakdowns, optimize findings, and CSV/JSON export. Refreshes every 30 seconds.

You can also set the menubar status period from Terminal:

defaults write org.agentseal.codeburn-menubar CodeBurnMenubarPeriod -string month

Allowed values are today, week, month, and sixMonths. Relaunch the app to apply external defaults changes.

Compact mode shrinks the menubar item to fit the text, dropping decimals (e.g. $110 instead of $110.20):

defaults write org.agentseal.codeburn-menubar CodeBurnMenubarCompact -bool true

Relaunch the app to apply. To revert: defaults delete org.agentseal.codeburn-menubar CodeBurnMenubarCompact.

Refresh cadence is set in Settings under Usage Refresh. Auto (the default) refreshes every 30 seconds on AC power and backs off on battery, in Low Power Mode, and while the display sleeps; fixed 1, 5, or 15 minute cadences and a Manual mode (refresh only when you open the popover or click Refresh Now) are also available. From Terminal:

defaults write org.agentseal.codeburn-menubar CodeBurnMenubarRefreshSeconds -int 300

Seconds between refreshes: 60, 300, or 900; 0 is Manual and -1 is Auto. Takes effect on the next refresh tick, no relaunch needed.

Preferred terminal decides where Full Report and Optimize open. Set it in Settings → General → Terminal, or from Terminal:

defaults write org.agentseal.codeburn-menubar CodeBurnPreferredTerminal -string iterm2

Allowed values are terminal (macOS Terminal.app, the default) and iterm2. Anything else falls back to terminal. Only terminals that can script a command into a live window are offered; if the chosen app is missing or fails to accept the command, CodeBurn tries Terminal.app and then runs the command in the background, logging each step to Console.app. Takes effect on the next launch of a command, no relaunch needed.

Linux (GNOME)

Linux gets the same ambient view through a GNOME Shell extension (GNOME 45+): spend in the top panel, period switcher, compact mode, and daily budget alerts. It lives in gnome/:

git clone https://github.com/getagentseal/codeburn && cd codeburn/gnome
./install.sh
gnome-extensions enable codeburn@codeburn.dev

See gnome/README.md for settings and development notes. On Windows, codeburn web is the always-on view for now.

CodeBurn in your agent (MCP)

claude mcp add codeburn -- npx -y codeburn mcp

codeburn mcp runs a local MCP server over stdio, so Claude Code, Cursor, or any MCP client can ask "where did my tokens go this week?" or "how do I spend less?" mid-conversation. It exposes two tools:

Tool What it returns
get_usage Spend and usage with breakdowns by tool, model, project, and task (fast)
get_savings Cost reductions: waste findings, retry tax, routing waste (slower, deeper analysis)

Everything is read from local disk, same as the CLI. Project names are pseudonymized by default; the agent only sees real names if it asks with include_project_names: true. For other MCP clients, configure a stdio server with command npx and args -y codeburn mcp.

Supported tools

CodeBurn auto-detects which AI tools you use. Each logo links to its provider doc.

Claude Code & Claude Desktop Cline CodeWhale Codex (OpenAI) Cursor cursor-agent Devin Forge Gemini CLI Mistral Vibe GitHub Copilot IBM Bob Kiro OpenCode OpenClaw Pi OMP (Oh My Pi) Droid Roo Code KiloCode Qwen Kimi Code CLI LingTai TUI Goose Antigravity Crush Warp Mux (coder) Vercel AI Gateway Zerostack Grok Build ZCode Zed Hermes Agent

If multiple providers have session data on disk, press p in the dashboard to toggle between them.

Each provider doc lists the exact data location, storage format, and known quirks. Linux and Windows paths are detected automatically. If a path has changed or is wrong, please open an issue.

The --provider flag filters any command to a single provider: codeburn report --provider claude, codeburn today --provider codex, codeburn export --provider cursor. Works on all commands: report, today, month, overview, status, export, web, optimize, compare, yield.

Adding a new provider is a single file. See src/providers/codex.ts for an example.

Commands

All commands and keyboard shortcuts

Run codeburn for the dashboard, or use a subcommand below. Most commands also accept --provider, --project / --exclude, and a period flag (-p today|week|30days|month|all|lifetime).

Dashboard & reports

Command What it does
codeburn Interactive dashboard, last 7 days (the default view)
codeburn today Today's usage
codeburn month This calendar month's usage
codeburn overview Plain-text monthly summary, copy-pasteable (--no-color, --from/--to)
codeburn report -p 30days Rolling 30-day window
codeburn report -p all Every recorded session
codeburn report --from 2026-04-01 --to 2026-04-10 An exact date range
codeburn report --format json Full dashboard data as JSON, printed to stdout
codeburn report --refresh 60 Auto-refresh every 60s (default 30s; --refresh 0 disables)

Status & export

Command What it does
codeburn status Compact one-liner: today + month totals
codeburn status --format json The same totals as JSON
codeburn export CSV covering today, 7 days, and 30 days
codeburn export -f json Export as JSON instead of CSV

Sync (team telemetry) preview

Command What it does
codeburn sync setup <url> One-time setup: OIDC login via browser, stores token securely
codeburn sync push Push unsent usage to remote endpoint (default: last 7 days)
codeburn sync push --since 30d Push a larger window
codeburn sync status Show endpoint, auth state, last sync time
codeburn sync logout Revoke token and remove credentials
codeburn sync reset --confirm Clear sent-ledger (re-send all data on next push)

Sync sends token counts, costs, models, and projects, never prompts or code. This feature is in preview; the protocol may change between releases. See docs/sync/ for details.

Web & devices

Command What it does
codeburn web Local browser dashboard with charts (http://localhost:4747)
codeburn share --pair Share this device's usage to your other devices (PIN pairing)
codeburn devices add Find and pair a nearby device
codeburn devices Combined usage totals across your paired devices

Analysis

Command What it does
codeburn doctor Per-provider detection status: paths probed, sessions found, parse health (--json, --provider)
codeburn audit Per provider-model token source table: where every number comes from
codeburn context What fills a session's context window: interactive browser (Claude Code and Codex)
codeburn context <id> --json The same context tree, scriptable
codeburn optimize Scan for waste and print copy-paste fixes (last 30 days)
codeburn optimize -p week Scope the waste scan to the last 7 days
codeburn compare Side-by-side model comparison
codeburn yield Productive vs reverted/abandoned spend, correlated against git
codeburn yield -p 30days Yield analysis for the last 30 days

Fix & control

Command What it does
codeburn optimize --apply Interactively apply config-class fixes (--yes, --dry-run, --only <ids>)
codeburn act list Every change CodeBurn has applied, newest first
codeburn act undo <id> Roll a change back (--last for the most recent, --force if files drifted)
codeburn act report Realized vs estimated savings for applied fixes
codeburn guard install Budget-cap hooks for Claude Code (--global, --statusline)
codeburn guard status Show caps, install locations, and flagged projects
codeburn guard allow Lift the hard cap for the current session
codeburn mcp MCP server (stdio) exposing usage and savings to AI agents

Models

Command What it does
codeburn models Per-model token + cost table (last 30 days)
codeburn models --by-task Break each model into per-task-type rows
codeburn models --by-agent Break each model into per-agent rows: which agent drove which model's spend ((main) covers non-agent sessions; --min-cost 0 shows sub-cent agents)
codeburn models --top 10 Only the 10 most expensive models
codeburn models --format markdown Emit a paste-friendly markdown table
codeburn models --task feature Filter to feature-development work
codeburn models --provider claude Filter to a single provider

Left/right arrow keys switch between Today, 7 Days, 30 Days, Month, 6 Months, and Lifetime (use --from / --to for an exact historical window). The main Daily Activity panel always shows scrollable full history: use up/down to move one day, Page Up/Page Down (or Shift+Space/Space) to page, and g/G to jump to either end. These keys update the panel in place instead of moving terminal scrollback. Press q to quit, 1 2 3 4 5 6 as period shortcuts, c to open model comparison, or o to open optimize. The dashboard auto-refreshes every 30 seconds by default (--refresh 0 to disable). It also shows average cost per session and the five most expensive sessions across all projects.

Features

Pricing, task categories, plans, currency, filtering, and more

Pricing

Prices every API call using input, output, cache read, cache write, and web search token counts, with a fast mode multiplier for Claude. Prices are fetched from LiteLLM and cached locally for 24 hours at ~/.cache/codeburn/. Hardcoded fallbacks for all Claude and GPT-5 models prevent fuzzy-matching mispricing.

Task Categories

13 categories classified from tool usage patterns and user message keywords. No LLM calls, fully deterministic.

Category What triggers it
Coding Edit, Write tools
Debugging Error/fix keywords + tool usage
Feature Dev "add", "create", "implement" keywords
Refactoring "refactor", "rename", "simplify"
Testing pytest, vitest, jest in Bash
Exploration Read, Grep, WebSearch without edits
Planning EnterPlanMode, TaskCreate tools
Delegation Agent tool spawns
Git Ops git push/commit/merge in Bash
Build/Deploy npm build, docker, pm2
Brainstorming "brainstorm", "what if", "design"
Conversation No tools, pure text exchange
General Skill tool, uncategorized

Breakdowns

Daily cost chart, per-project, per-model (Opus, Sonnet, Haiku, GPT-5, GPT-4o, Gemini, Kiro, and more), per-activity with one-shot rate, core tools, shell commands, and MCP servers.

One-Shot Rate

For categories that involve code edits, CodeBurn tracks file-aware retry cycles. A retry is when the same file is re-edited after a shell command in between (Edit foo.ts, Bash, Edit foo.ts). Editing different files across shell steps is not a retry. The one-shot column shows the percentage of edit turns that succeeded without retries. Coding at 90% means the AI got it right first try 9 out of 10 times. File-level tracking is available for Claude, Codex, and Goose; other providers fall back to tool-name-based detection.

Plans

codeburn plan set claude-max                                  # $200/month
codeburn plan set claude-pro                                  # $20/month
codeburn plan set cursor-pro                                  # $20/month
codeburn plan set custom --monthly-usd 200 --provider codex   # ChatGPT Pro-style custom plan
codeburn plan reset --provider codex                          # remove one provider plan
codeburn plan set none                                        # disable plan view
codeburn plan                                                 # show configured plans
codeburn plan reset                                           # remove plan config

Subscription tracking for Claude Pro, Claude Max, Cursor Pro, and custom provider plans. Plans are stored per provider, so you can track Claude and Codex/Cursor subscriptions at the same time; the dashboard shows one overage line per active provider plan. A legacy/custom all plan remains a single aggregate plan and is replaced when you add a provider-specific plan, avoiding double-counted overage rows. Existing single-plan config is still read as a fallback. Presets use publicly stated plan prices (as of April 2026); they do not model exact token allowances, because vendors do not publish precise consumer-plan limits.

Currency

codeburn currency GBP          # set to British Pounds
codeburn currency AUD          # set to Australian Dollars
codeburn currency JPY          # set to Japanese Yen
codeburn currency CNY          # set to Chinese Yuan
codeburn currency RON          # set to Romanian Leu
codeburn currency              # show current setting
codeburn currency --reset      # back to USD

Any ISO 4217 currency code is supported (162 currencies). Exchange rates fetched from Frankfurter (European Central Bank data, free, no API key) and cached for 24 hours. Config stored at ~/.config/codeburn/config.json. The currency setting applies everywhere: dashboard, status bar, menu bar, CSV/JSON exports, and JSON API output.

Model Aliases

If you see $0.00 for some models, the model name reported by your provider does not match any entry in the LiteLLM pricing data. This commonly happens when using a proxy that rewrites model names.

codeburn model-alias "my-proxy-model" "claude-opus-4-6"   # add alias
codeburn model-alias --list                                # show configured aliases
codeburn model-alias --remove "my-proxy-model"             # remove alias

Aliases are stored in ~/.config/codeburn/config.json and applied at runtime before pricing lookup. The target name can be anything in the LiteLLM model list or a canonical name from the fallback table (e.g. claude-sonnet-4-6, claude-opus-4-5, gpt-4o). Built-in aliases ship for known proxy model name variants. User-configured aliases take precedence over built-ins.

Local Models, Custom Prices, and Proxies

codeburn price-override my-model --input 0.27 --output 1.10   # USD per 1M tokens
codeburn model-savings "llama3.1:8b" gpt-4o                   # local model, counted as savings
codeburn proxy-path ~/work/copilot-repo                       # subscription-covered project

price-override sets exact rates for any model (input, output, cache read, cache creation), useful for private deployments or models LiteLLM prices wrong. model-savings maps a free local model to a paid baseline: the local calls stay $0, and the dashboard shows what the same tokens would have cost on the baseline. proxy-path marks a project routed through a subscription-backed proxy (e.g. Claude Code over GitHub Copilot), so its API-rate cost is reported as subscription-covered and your net out-of-pocket stays honest. All three support --list and --remove.

Filtering

codeburn report --project myapp                  # show only projects matching "myapp"
codeburn report --exclude myapp                  # show everything except "myapp"
codeburn report --exclude myapp --exclude tests  # exclude multiple projects
codeburn month --project api --project web       # include multiple projects
codeburn export --project inventory              # export only "inventory" project data

Filter by provider, project name (case-insensitive substring), or exact date range. The --project and --exclude flags work on all commands and can be combined with --provider.

codeburn report --from 2026-04-01 --to 2026-04-10   # explicit window
codeburn report --from 2026-04-01                    # this date through today
codeburn report --to 2026-04-10                      # earliest data through this date

Either flag alone is valid. Inverted or malformed dates exit with a clear error. In the TUI, the custom range sets the initial load only; pressing 1 through 6 switches back to predefined periods.

Diagnosing detection

When a tool shows zero (or a number that looks wrong), codeburn doctor explains why. It runs fully offline and read-only, and never writes to caches or config.

codeburn doctor                     # every provider, human-readable table
codeburn doctor --provider opencode # diagnose one provider
codeburn doctor --json              # machine-readable, pipe to jq

For each provider it shows the exact directories or databases probed (with any env override such as CLAUDE_CONFIG_DIR, CODEX_HOME, or OPENCODE_DATA_DIR and whether the path exists), how many session files were found, how many of a bounded sample parsed cleanly, the cached file count, and a one-line verdict: OK (n sessions), NOTHING FOUND with the likely cause (directory missing, override points at an empty dir, or the tool is not installed), or ERRORS (n parse failures). A provider that throws is caught and reported as its own error row, never crashing the rest of the report.

JSON Output

report, today, and month support --format json to output the full dashboard data as structured JSON to stdout:

codeburn report --format json             # 7-day JSON report
codeburn today --format json              # today's data as JSON
codeburn month --format json              # this month as JSON
codeburn report -p 30days --format json   # 30-day window

The JSON includes all dashboard panels: overview (cost, calls, sessions, cache hit %), daily breakdown, projects (with avgCostPerSession), models with token counts, activities with one-shot rates, core tools, MCP servers, and shell commands. Pipe to jq for filtering:

codeburn report --format json | jq '.projects'
codeburn today --format json | jq '.overview.cost'

For lighter output, use status --format json (today and month totals only), optimize --format json (setup health, findings, and copy-paste fixes), yield --format json (productive/reverted/abandoned/ambiguous spend), or file exports (export -f json).

Reading the dashboard

Signals and what they might mean

CodeBurn surfaces the data; you read the story. A few patterns worth knowing:

Signal you see What it might mean
Cache hit < 80% System prompt or context is not stable, or caching is not enabled
Lots of Read calls per session Agent re-reading same files, missing context
Low 1-shot rate (Coding 30%) Agent struggling with edits, retry loops
Opus 4.8 dominating cost on small turns Overpowered model for simple tasks
dispatch_agent / task heavy Sub-agent fan-out, expected or excessive
No MCP usage shown Either you don't use MCP servers, or your config is broken
Bash dominated by git status, ls Agent exploring instead of executing
Conversation category dominant Agent talking instead of doing

These are starting points, not verdicts. A 60% cache hit on a single experimental session is fine. A persistent 60% cache hit across weeks of work is a config issue.

How it reads your data

Per-tool data locations and parsing
Provider Data location Notes
Claude Code ~/.claude/projects/<sanitized-path>/<session-id>.jsonl Each assistant entry carries model name, token usage (input, output, cache read, cache write), tool_use blocks, and timestamps.
Claude (multiple config dirs) Set via CLAUDE_CONFIG_DIRS (e.g. ~/.claude-work:~/.claude-personal) Scans every listed directory and merges sessions into one row per project so totals reflect all your Claude usage. Use : on POSIX, ; on Windows; overrides CLAUDE_CONFIG_DIR. Missing or unreadable directories are skipped.
Codex (OpenAI) ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl, ~/.codex/archived_sessions/rollout-*.jsonl Reads token_count events (per-call and cumulative usage) and function_call entries for tool tracking; attributes cost by project working directory. codeburn report --provider codex views Codex alone.
Cursor SQLite state.vscdb under globalStorage: macOS ~/Library/Application Support/Cursor/User/globalStorage/, Linux ~/.config/Cursor/User/globalStorage/, Windows %APPDATA%/Cursor/User/globalStorage/; results cached at ~/.cache/codeburn/cursor-results.json Input tokens come from Cursor's own per-conversation context meter (composerData.promptTokenBreakdown), credited once per conversation on a stable anchor; tool calls and shell commands are read from the agent stream (agentKv), and Composer house models are priced from Cursor's published rates. Output is a reply-text estimate and cache tokens are server-side only, so figures are marked estimated and undercount the Cursor admin console for long conversations. The cache auto-invalidates when the database changes; the first run on a large database can take a minute.
OpenCode SQLite ~/.local/share/opencode/opencode*.db or file-based ~/.local/share/opencode/storage/ (respects XDG_DATA_HOME; OPENCODE_DATA_DIR/OPENCODE_DB_PREFIX for renamed/forked builds) Queries session, message, and part read-only and recalculates cost via LiteLLM (falling back to OpenCode's own cost field for unpriced models). Subtask sessions (parent_id IS NOT NULL) are excluded to avoid double counting; multiple channel databases are supported.
Gemini CLI ~/.gemini/tmp/<project>/chats/session-*.json One JSON file per session with real token counts (input, output, cached, thoughts) per message, so no estimation is needed. Input is reported inclusive of cached, so CodeBurn subtracts cached before pricing to avoid double charging.
Antigravity (CLI & IDE) Session files under .gemini/ folders, plus the running language server Pulls granular trajectory and pricing from the language server process. For the short-lived CLI, optionally install a status-line hook with codeburn antigravity-hook install so usage is captured between menubar refreshes. The IDE is detected via the --app-data-dir antigravity-ide flag on Windows.
GitHub Copilot ~/.copilot/session-state/ (legacy CLI); VS Code/VSCodium workspaceStorage/* chat sessions, GitHub.copilot-chat/transcripts/, and the agent-traces.db OpenTelemetry store; JetBrains IDEs (IntelliJ, PyCharm, …) under ~/.config/github-copilot/<ide>/<kind>/<storeId>/copilot-*-nitrite.db The OTel SQLite store is preferred when present (it carries real input/output/cache token counts). Other sources carry no explicit counts, so tokens are estimated from content length and the model is inferred from tool call ID prefixes. JetBrains sessions read from a Nitrite (H2 MVStore) .db; project comes from the plugin's projectName field (else the .git root of a referenced file). See docs/providers/copilot.md.
Kiro .chat JSON files Token counts are estimated from content length. The model is not exposed, so sessions are labeled kiro-auto and costed at Sonnet rates.
Mistral Vibe ~/.vibe/logs/session/ (or $VIBE_HOME/logs/session/); each folder has meta.json + messages.jsonl Reads cumulative prompt/completion totals and model pricing from meta.json, then the first user prompt and tool calls from messages.jsonl. Emits one record per session (source data is cumulative, not per turn); subagent sessions under agents/ are counted separately.
OpenClaw ~/.openclaw/agents/*.jsonl (legacy .clawdbot, .moltbot, .moldbot) Token usage comes from assistant message usage blocks; the model from modelId or message.model.
Warp ~/Library/Group Containers/2BBY89MBSN.dev.warp/Library/Application Support/dev.warp.Warp-Stable/warp.sqlite (Preview fallback) Reads agent_conversations, ai_queries, and blocks, emitting one call per finalized exchange. Exchange token share is estimated from prompt-size weighting normalized to conversation totals; run_command blocks attach to the nearest preceding exchange by timestamp.
Zed SQLite ~/Library/Application Support/Zed/threads/threads.db (Linux ~/.local/share/zed/threads/) One row per agent thread; the blob is zstd-compressed JSON with per-request token usage (input, output, cache read, cache write) and the thread's model. Threads are topped up to the exact cumulative counter so totals match the store. Needs Node 22.15+ for built-in zstd.
Forge SQLite ~/.forge/.forge.db Queries conversations read-only and parses context.messages. Assistant usage entries provide prompt, completion, and cached counts; CodeBurn subtracts cached from prompt for input pricing, emits one call per assistant message, and extracts tool calls plus shell commands.
Pi / OMP ~/.pi/agent/sessions/<sanitized-cwd>/*.jsonl (Pi), ~/.omp/agent/sessions/<sanitized-cwd>/*.jsonl (OMP) Each assistant message carries usage (input, output, cacheRead, cacheWrite) plus inline toolCall blocks. Tool names normalize to the standard set (bashBash, dispatch_agentAgent); bash commands come from toolCall.arguments.command.
Codebuff (formerly Manicode) ~/.config/manicode/projects/<project>/chats/<chatId>/chat-messages.json (honors CODEBUFF_DATA_DIR; walks manicode-dev / manicode-staging) Bills in credits, so each completed assistant message is costed at the public rate of $0.01/credit via msg.credits. When an upstream provider's stashed RunState records token-level usage (message.metadata.runState.sessionState.mainAgentState.messageHistory[*].providerOptions), the real tokens and LiteLLM cost take precedence. Native tool names (read_files, str_replace, run_terminal_command, spawn_agents) normalize to Read, Edit, Bash, Agent.
Cline / Roo Code / KiloCode VS Code globalStorage across VS Code, VS Code Insiders, and VSCodium (Cline at saoudrizwan.claude-dev, plus ~/.cline/data) Cline-family agents. CodeBurn reads ui_messages.json from each task directory, extracting token counts from type: "say" entries with say: "api_req_started".
Cline CLI ~/.cline/data/sessions/<session-id>/ (honors CLINE_SESSION_DATA_DIR, CLINE_DATA_DIR, CLINE_DIR) The Cline command-line agent, whose layout is unrelated to the VS Code extension's. Reads <session-id>.json for session metadata and the rolled-up usage, and <session-id>.messages.json for the per-message metrics block (input, output, cacheRead, cacheWrite, cost) that becomes one call each.
CodeWhale ~/.codewhale/sessions/*.json plus unmigrated legacy ~/.deepseek/sessions/*.json; $CODEWHALE_HOME/sessions is an exact override Emits one cumulative record per saved session. CodeWhale exposes only total_tokens, so CodeBurn preserves that aggregate in the input column rather than inventing an input/output split. Cost is the exact stored parent-session plus subagent USD total; model pricing is used only when the cost snapshot is absent. Tool blocks, shell commands, skills, and subagent types are retained.
IBM Bob User/globalStorage/ibm.bob-code/tasks/<task-id>/ (GA IBM Bob and preview Bob-IDE app folders) Reads ui_messages.json for API request token/cost records and api_conversation_history.json for the selected model.
Kimi Code CLI $KIMI_SHARE_DIR/sessions/<workdir-hash>/<session-id>/ or ~/.kimi/sessions/<workdir-hash>/<session-id>/ Reads wire.jsonl StatusUpdate.token_usage records, mapping input_other, input_cache_read, input_cache_creation, and output into the standard token columns; includes subagents under each session's subagents/ folder.
LingTai TUI ~/.lingtai/<agent>/logs/token_ledger.jsonl plus project homes from ~/.lingtai-tui/registry.jsonl (<project>/.lingtai/<agent>/logs/token_ledger.jsonl); honors LINGTAI_HOME / LINGTAI_TUI_HOME Reads LingTai's append-only token ledger, mapping input - cached to fresh input, cached to cache reads, output to output, and thinking to reasoning. Nested daemon ledgers are skipped because parent ledgers already mirror daemon usage with source/run_id tags.
Vercel AI Gateway Vercel AI Gateway reporting API (cloud, not local logs) Set AI_GATEWAY_API_KEY or VERCEL_OIDC_TOKEN (from vercel env pull / vercel dev); requires a Vercel plan with Custom Reporting. Without credentials, it's skipped silently in the combined dashboard.

CodeBurn deduplicates messages (by API message ID for Claude, by cumulative token cross-check for Codex, by conversation/timestamp for Cursor, by session ID for Gemini, by session+message ID for OpenCode, by responseId for Pi/OMP, by chat folder + message ID for Codebuff, by session+message ID for Kimi), filters by date range per entry, and classifies each turn.

Environment Variables

Override data directories and paths
Variable Description
CLAUDE_CONFIG_DIR Override Claude Code data directory (default: ~/.claude)
CLAUDE_CONFIG_DIRS OS-delimited list of Claude data directories to scan together (e.g. ~/.claude-work:~/.claude-personal). Sessions merge into one row per project. Overrides CLAUDE_CONFIG_DIR when set.
CODEX_HOME Override Codex data directory (default: ~/.codex)
CODEBUFF_DATA_DIR Override Codebuff data directory (default: ~/.config/manicode)
CODEWHALE_HOME Overri

(README truncated)

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 8

Releases and announcements

48 total
  1. v0.9.19v0.9.19Jul 20, 2026

    One version across every surface: CLI, macOS menubar, and the desktop app all ship as 0.9.19. ### Accuracy - **Every surface now shows the same numbers.** CLI, TUI, menubar, desktop app, and web dashboard totals all come from one durable aggregation path and match exactly, including history whose session logs have since been deleted; the terminal overview notes how much was preserved from expired logs. (#755, #760, #759) - **Never lose history again.** The daily cache carries forward every (day, provider) slice a re-parse can no longer derive, and adopts days from older cache generations instead of wiping them on schema changes. (#755) - **True Lifetime period** on the CLI, dashboard, desktop app, and menubar. The desktop tab formerly labeled "All time" showed a 6-month window; it now says "Last 6 months", and Lifetime is the real all-time view. (#753, #759) - Yield repo grouping is case-correct on macOS/Windows; skills usage is attributed regardless of turn category; daily-activity history scans are bounded. (#751, #745, #727) - **Days before recorded history render as "No data recorded"**, never as a currency zero, in the desktop heatmap, daily charts, and web dashboard. Genuine

  2. Menubar v0.9.19mac-v0.9.19Jul 20, 20263.9K downloads

    Install with: ``` npm install -g codeburn codeburn menubar ``` That command drops the app into `~/Applications`, records the persistent `codeburn` CLI path used by the menubar, verifies the downloaded checksum, clears quarantine after bundle verification, and launches it. If you download the zip from this page directly and macOS shows "cannot verify developer", right-click the app in Finder and pick Open to whitelist it once.

  3. Desktop v0.9.19desktop-v0.9.19Jul 20, 20262K downloads

    One version across every surface: CLI, macOS menubar, and the desktop app all ship as 0.9.19. ### Accuracy - **Every surface now shows the same numbers.** CLI, TUI, menubar, desktop app, and web dashboard totals all come from one durable aggregation path and match exactly, including history whose session logs have since been deleted; the terminal overview notes how much was preserved from expired logs. (#755, #760, #759) - **Never lose history again.** The daily cache carries forward every (day, provider) slice a re-parse can no longer derive, and adopts days from older cache generations instead of wiping them on schema changes. (#755) - **True Lifetime period** on the CLI, dashboard, desktop app, and menubar. The desktop tab formerly labeled "All time" showed a 6-month window; it now says "Last 6 months", and Lifetime is the real all-time view. (#753, #759) - Yield repo grouping is case-correct on macOS/Windows; skills usage is attributed regardless of turn category; daily-activity history scans are bounded. (#751, #745, #727) - **Days before recorded history render as "No data recorded"**, never as a currency zero, in the desktop heatmap, daily charts, and web dashboard. Genuine

  4. v0.9.16v0.9.16Jul 17, 2026

    ## What's New The biggest release yet: roughly sixty merged changes since v0.9.15, every one re-verified against the release tree before shipping. ### Added (CLI) - **`codeburn doctor`.** Per-provider detection diagnostics: the exact paths probed (with any env override shown), sessions found, parse health, and a one-line verdict, so an empty or wrong number explains itself. Fully offline and read-only. (#685, from @avs-io's audit in #642) - **Spend budgets.** `codeburn budget` sets daily, weekly, or monthly caps, the overview shows progress with a projection, and `budget --check` exits nonzero when over, ready for scripts and CI. (#562 by @ozymandiashh) - **`codeburn models --by-agent`.** Which agent drove which model's spend, one row per (provider, model, agent), in table, markdown, CSV, and JSON. Per-record exports now carry `subagentType` and `model` so you can build any cross yourself. (#710, #712 by @ozymandiashh, requested by @alexandrekm in #708) - **`act apply-model` + quality tripwire.** Apply a per-project model default recommended from your own compare data; `act report` watches the one-shot rate afterwards and tells you to undo if quality regressed. (#616 by @ozymandi

  5. Menubar v0.9.16mac-v0.9.16Jul 17, 20261.5K downloads

    Install with: ``` npm install -g codeburn codeburn menubar ``` That command drops the app into `~/Applications`, records the persistent `codeburn` CLI path used by the menubar, verifies the downloaded checksum, clears quarantine after bundle verification, and launches it. If you download the zip from this page directly and macOS shows "cannot verify developer", right-click the app in Finder and pick Open to whitelist it once.

Code frequency

additions and deletions
+34.5K-34.5KWeek of 2026-04-12: +23,922 linesWeek of 2026-04-12: -3,479 linesWeek of 2026-04-19: +11,043 linesWeek of 2026-04-19: -1,679 linesWeek of 2026-04-26: +5,466 linesWeek of 2026-04-26: -766 linesWeek of 2026-05-03: +14,549 linesWeek of 2026-05-03: -2,763 linesWeek of 2026-05-10: +20,262 linesWeek of 2026-05-10: -3,551 linesWeek of 2026-05-17: +4,972 linesWeek of 2026-05-17: -813 linesWeek of 2026-05-24: +6,256 linesWeek of 2026-05-24: -1,469 linesWeek of 2026-05-31: +7,763 linesWeek of 2026-05-31: -844 linesWeek of 2026-06-07: +5,456 linesWeek of 2026-06-07: -962 linesWeek of 2026-06-14: +11,941 linesWeek of 2026-06-14: -1,449 linesWeek of 2026-06-21: +1,314 linesWeek of 2026-06-21: -128 linesWeek of 2026-06-28: +15,992 linesWeek of 2026-06-28: -1,012 linesWeek of 2026-07-05: +20,424 linesWeek of 2026-07-05: -2,069 linesWeek of 2026-07-12: +34,520 linesWeek of 2026-07-12: -3,937 linesWeek of 2026-07-19: +16,575 linesWeek of 2026-07-19: -1,524 linesWeek of 2026-07-26: +5,358 linesWeek of 2026-07-26: -391 linesWeek of 2026-08-02: +3,966 linesWeek of 2026-08-02: -280 linesApr 12, 2026Aug 2, 2026
+209.8K lines added, -27.1K removed over the last year.

Commits per week

last 52 weeks
1750Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 175 commitsWeek of 2026-04-19: 126 commitsWeek of 2026-04-26: 44 commitsWeek of 2026-05-03: 55 commitsWeek of 2026-05-10: 44 commitsWeek of 2026-05-17: 24 commitsWeek of 2026-05-24: 42 commitsWeek of 2026-05-31: 35 commitsWeek of 2026-06-07: 22 commitsWeek of 2026-06-14: 43 commitsWeek of 2026-06-21: 18 commitsWeek of 2026-06-28: 47 commitsWeek of 2026-07-05: 78 commitsWeek of 2026-07-12: 127 commitsWeek of 2026-07-19: 55 commitsWeek of 2026-07-26: 24 commitsWeek of 2026-08-02: 33 commitsAug 10, 2025Aug 2, 2026
992 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 4 commitsSun 1:00 — 2 commitsSun 2:00 — 4 commitsSun 3:00 — 10 commitsSun 4:00 — 2 commitsSun 5:00 — 16 commitsSun 6:00 — 9 commitsSun 7:00 — 4 commitsSun 8:00 — 3 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 6 commitsSun 12:00 — 7 commitsSun 13:00 — 13 commitsSun 14:00 — 2 commitsSun 15:00 — 13 commitsSun 16:00 — 13 commitsSun 17:00 — 3 commitsSun 18:00 — 4 commitsSun 19:00 — 3 commitsSun 20:00 — 5 commitsSun 21:00 — 4 commitsSun 22:00 — 1 commitsSun 23:00 — 3 commitsMon 0:00 — 3 commitsMon 1:00 — 4 commitsMon 2:00 — 3 commitsMon 3:00 — 5 commitsMon 4:00 — 1 commitsMon 5:00 — 5 commitsMon 6:00 — 3 commitsMon 7:00 — 3 commitsMon 8:00 — 2 commitsMon 9:00 — 7 commitsMon 10:00 — 6 commitsMon 11:00 — 8 commitsMon 12:00 — 2 commitsMon 13:00 — 4 commitsMon 14:00 — 5 commitsMon 15:00 — 12 commitsMon 16:00 — 10 commitsMon 17:00 — 14 commitsMon 18:00 — 14 commitsMon 19:00 — 10 commitsMon 20:00 — 7 commitsMon 21:00 — 6 commitsMon 22:00 — 7 commitsMon 23:00 — 8 commitsTue 0:00 — 12 commitsTue 1:00 — 11 commitsTue 2:00 — 10 commitsTue 3:00 — 7 commitsTue 4:00 — 12 commitsTue 5:00 — 7 commitsTue 6:00 — 4 commitsTue 7:00 — 6 commitsTue 8:00 — 3 commitsTue 9:00 — 6 commitsTue 10:00 — 3 commitsTue 11:00 — 6 commitsTue 12:00 — 1 commitsTue 13:00 — 9 commitsTue 14:00 — 12 commitsTue 15:00 — 3 commitsTue 16:00 — 3 commitsTue 17:00 — 0 commitsTue 18:00 — 1 commitsTue 19:00 — 3 commitsTue 20:00 — 3 commitsTue 21:00 — 7 commitsTue 22:00 — 4 commitsTue 23:00 — 3 commitsWed 0:00 — 12 commitsWed 1:00 — 9 commitsWed 2:00 — 3 commitsWed 3:00 — 6 commitsWed 4:00 — 22 commitsWed 5:00 — 14 commitsWed 6:00 — 3 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 1 commitsWed 10:00 — 5 commitsWed 11:00 — 0 commitsWed 12:00 — 0 commitsWed 13:00 — 2 commitsWed 14:00 — 4 commitsWed 15:00 — 2 commitsWed 16:00 — 4 commitsWed 17:00 — 1 commitsWed 18:00 — 1 commitsWed 19:00 — 3 commitsWed 20:00 — 2 commitsWed 21:00 — 3 commitsWed 22:00 — 9 commitsWed 23:00 — 5 commitsThu 0:00 — 1 commitsThu 1:00 — 14 commitsThu 2:00 — 8 commitsThu 3:00 — 7 commitsThu 4:00 — 6 commitsThu 5:00 — 15 commitsThu 6:00 — 12 commitsThu 7:00 — 5 commitsThu 8:00 — 4 commitsThu 9:00 — 9 commitsThu 10:00 — 8 commitsThu 11:00 — 5 commitsThu 12:00 — 9 commitsThu 13:00 — 11 commitsThu 14:00 — 8 commitsThu 15:00 — 8 commitsThu 16:00 — 7 commitsThu 17:00 — 6 commitsThu 18:00 — 6 commitsThu 19:00 — 4 commitsThu 20:00 — 3 commitsThu 21:00 — 13 commitsThu 22:00 — 10 commitsThu 23:00 — 4 commitsFri 0:00 — 5 commitsFri 1:00 — 5 commitsFri 2:00 — 3 commitsFri 3:00 — 0 commitsFri 4:00 — 1 commitsFri 5:00 — 4 commitsFri 6:00 — 1 commitsFri 7:00 — 6 commitsFri 8:00 — 13 commitsFri 9:00 — 2 commitsFri 10:00 — 3 commitsFri 11:00 — 4 commitsFri 12:00 — 7 commitsFri 13:00 — 14 commitsFri 14:00 — 8 commitsFri 15:00 — 12 commitsFri 16:00 — 10 commitsFri 17:00 — 12 commitsFri 18:00 — 9 commitsFri 19:00 — 13 commitsFri 20:00 — 6 commitsFri 21:00 — 2 commitsFri 22:00 — 1 commitsFri 23:00 — 5 commitsSat 0:00 — 9 commitsSat 1:00 — 7 commitsSat 2:00 — 6 commitsSat 3:00 — 5 commitsSat 4:00 — 1 commitsSat 5:00 — 2 commitsSat 6:00 — 2 commitsSat 7:00 — 1 commitsSat 8:00 — 7 commitsSat 9:00 — 12 commitsSat 10:00 — 3 commitsSat 11:00 — 14 commitsSat 12:00 — 9 commitsSat 13:00 — 8 commitsSat 14:00 — 5 commitsSat 15:00 — 1 commitsSat 16:00 — 8 commitsSat 17:00 — 6 commitsSat 18:00 — 2 commitsSat 19:00 — 3 commitsSat 20:00 — 6 commitsSat 21:00 — 5 commitsSat 22:00 — 7 commitsSat 23:00 — 4 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript