Skip to content
budi / getbudi.dev
AI coding cost tracker · local-first · open source · MIT

Local-first cost tracker for AI coding agents.

Tracks CursorClaude CodeCodexCopilot Chat

After brew install, three things run on your machine: a small daemon that tails the transcripts your agents already write to disk, a status bar in your editor, and a CLI for repo / branch / ticket attribution. Nothing in your network path.

brew install siropkin/budi/budi && budi init

Installs v8.4.2. One command. macOS / Linux / Windows. No account needed. Editor wiring →

~ budi stats project
Today                                           7d        30d
─────────────────────────────────────────────────────────────────
$ 4.92 session    🟢 healthy        $ 38.10    $ 162.44

Top repos (last 7d)                          cost      msgs
─────────────────────────────────────────────────────────────────
siropkin/budi                              $ 18.40    21,402
acme/web                                   $ 11.05     9,118
acme/infra                                 $  6.32     2,845
personal/notes                             $  2.33       661

Top models (last 7d)                         cost     share
─────────────────────────────────────────────────────────────────
claude-opus-4-7                            $ 22.18    58.2 %
claude-sonnet-4-6                          $  9.41    24.7 %
claude-haiku-4-5                           $  4.02    10.6 %
gpt-5-codex                                $  2.49     6.5 %

Branch hot list                              cost    ticket
─────────────────────────────────────────────────────────────────
budi/feat/cloud-ingest                     $  6.91    BUD-214
acme/web/fix/checkout-retry                $  4.38    WEB-1180
acme/web/feat/analytics-v3                 $  3.12    WEB-1199

What it does

Multi-agent. Real attribution. Zero interception.

Claude Code, Codex CLI, Copilot CLI, and Cursor — tracked by tailing the transcripts each agent already writes to disk. No proxy, no gateway, nothing in your network path.

Multi-agent, no interception

Claude Code, Codex CLI, Copilot CLI, and Cursor — all attributed by the same daemon. Reads the transcript files those tools already write to disk. Nothing in your network path.

Reads transcripts from disk — no proxy

Per repo, branch, and ticket

Cost attributed to the repo and branch you were on, with ticket IDs lifted from branch names. Filter by ticket, activity, file, model, or custom tag.

budi stats branch · ticket · file

Live status line

Rolling 1d / 7d / 30d cost in Claude Code, Cursor, VS Code, and JetBrains IDEs — scoped per host. The Cursor line shows Cursor spend only; the VS Code and JetBrains lines show their own Copilot Chat spend only.

_projects/budi · main · budi · $3.47 session · $0.06 message

Session health on demand

budi sessions <id> shows context growth, cache reuse, cost acceleration, and retry loops in plain English. Not a wall of emoji by default — quiet unless you ask.

budi sessions <id>
Cursor — payments.ts

// src/lib/payments.ts

export async function refundCharge ( id : string ) {

return stripe.refunds. create({ charge: id });

}

main
budi · $0.42 1d · $3.18 7d · $14.92 30d
Cursor — status bar scoped to cursor. Each editor shows only its own host's spend.
VS Code — payments.ts

// src/lib/payments.ts

export async function refundCharge ( id : string ) {

return stripe.refunds. create({ charge: id });

}

main
budi · $0.31 1d · $2.04 7d · $9.87 30d
VS Code — status bar scoped to copilot_chat. Each editor shows only its own host's spend.
~ budi sessions <id>
  Session 2968337c-1e4
  ──────────────────────────────────────────────────
  Agent      claude_code
  Models     claude-opus-4-7
  Started    2026-05-06T02:22:27.194+00:00
  Duration   2m22s
  Repos      github.com/siropkin/budi-cloud
  Branches   151-repos-companion-tables, main
  Outcome    no_commit
             …explanation…

  Messages   22
  Input      32
  Output     10.8K
  Est. cost  $1.70

  Tags
    file_path: src/lib/dal.ts
    …

  🟢 Vitals: GREEN
budi sessions <id> — session health in plain English. No dashboard required.

What budi tracks

Provider coverage, with the caveats spelled out.

See coverage

Local-log parsing is the primary path for every provider. APIs (Cursor Usage, GitHub Billing) are supplementary truth-up, never the only signal — so attribution keeps working offline, without auth tokens, and when an upstream API breaks.

Cursor

Live
Data source
Local SQLite ( cursorDiskKV ) primary; Cursor Usage API supplementary
Notes
All Cursor plans. Local-tail produces real tokens × pricing-manifest dollars; the Usage API is a supplementary truth-up that can lag ~10 min.

Claude Code

Live
Data source
Local JSONL transcripts
Notes
All plans. Real per-message tokens parsed from the transcripts Claude Code already writes to disk.

Codex CLI

Live
Data source
Local JSONL transcripts
Notes
Real per-message tokens parsed from disk.

Copilot CLI

Live
Data source
Local JSONL session-state
Notes
Standalone GitHub Copilot CLI — not the VS Code extension.

Copilot Chat (VS Code)

8.4.0
Data source
Local JSON/JSONL primary; GitHub Billing API supplementary
Notes
Three sub-states for cost accuracy — see the breakdown below.

Cost accuracy by sub-state — see breakdown below the matrix.

Continue, Cline, Roo Code, Aider, Gemini CLI

8.5.0 (planned)
Data source
Local logs
Notes
The 8.5.0 breadth round. Same provider-plugin pattern as Cursor and Copilot Chat — local logs primary, no proxy.

Copilot Chat (VS Code) — cost accuracy by sub-state

Three sub-states determine how close the dollar number gets to the actual bill.

Individual licence + GitHub Billing API PAT

exact

GitHub-side dollar truth-up — the authoritative number per (date, model) bucket.

Individual licence, no PAT

estimated · output-only

Local-tail tokens × manifest pricing. May-2026+ VS Code builds persist response tokens but drop prompt-token counts client-side, so the dollar number is output-only — meaningful as a relative trend, but a fraction of the actual bill.

Org-managed licence

estimated · output-only

Same output-only manifest pricing, with no Billing API truth-up — the user-level Billing API endpoint returns empty for org-managed Copilot licences.

Org-managed Copilot licences see local-tail tokens × pricing-manifest dollars only — the GitHub-side reconciliation that individually-licensed users get is unavailable because the user-level Billing API endpoint is empty for org-managed seats. Local-tail still produces real tokens; the truth-up is the missing piece for that subset.

Why not just use X?

The realistic alternatives, named honestly.

If one of these already fits your workflow, use it. Budi exists for the case where you run more than one agent, care about per-repo attribution, and are not willing to upload prompts.

Provider dashboards

Anthropic Console · OpenAI usage · Cursor usage

Good at
Official, authoritative totals. Free.
Stops at
Single-provider. No repo, branch, or ticket attribution. Nothing cross-agent.

Open-source CLI usage tools

ccusage · codeburn · claude-usage

Good at
Local, lightweight, correct for the one agent they target.
Stops at
Single-agent. No cross-agent rollups, no branch/ticket attribution, no team view.

SaaS cost trackers that upload prompts

Generic observability vendors that ingest LLM payloads

Good at
Central dashboard with deep analytics.
Stops at
Your prompts, code, and responses leave your machine — a hard no for most source code.

Budi

Local daemon · transcript tailing · multi-agent · opt-in cloud

Good at
Multi-agent via local transcript tailing — nothing in your network path. Repo/branch/ticket attribution. Live session health vitals. Optional team dashboard with aggregates only.
Caveats
You run a small daemon. Live rows lag by seconds; Cursor cost can additionally lag ~10 min via the Cursor Usage API. Not every agent supported yet (Gemini deferred).

Privacy contract

Local-first, by design.

A small Rust daemon on your machine watches the transcript files your agents already write to disk. Nothing sits in your network path. Three things in plain English:

Never leaves

Prompts, code, AI responses, file paths, email addresses, raw payloads, and tag values. There is no "full upload" mode in the code.

Can optionally leave

Pre-aggregated daily numbers — tokens, cost, model name, hashed repo ID, branch name, ticket ID. Push-only, HTTPS-only. Off by default.

How to turn it on

Sign up at app.getbudi.dev, drop your API key into ~/.config/budi/cloud.toml, set enabled = true, restart the daemon.

Analytics. This site (getbudi.dev) counts anonymous page views via Vercel Web Analytics: cookieless, IP hashed daily, no session replay, no cross-site tracking. It only runs on this site — not part of the product.

Install

One paste, then four steps to verify.

The command below installs budi and runs budi init — the daemon is up and the autostart service is wired. Editor statusline + extension wiring is the second step in the checklist below.

brew install siropkin/budi/budi && budi init

Installs v8.4.2. Latest release on GitHub. Prefer to install the editor extension on its own? Pick VS Code or Cursor below.

Four steps to verify.

If anything looks wrong, budi doctor is the source of truth. For a live session health read, run budi sessions <id>.

  1. budi init

    Starts the daemon on port 7878 and installs the platform-native autostart service. The hero install runs this for you — listed here so you know what just happened.

  2. budi integrations install

    Wires the Claude Code statusline and offers the VS Code / Cursor extension if either editor is detected. Restart Claude Code afterwards so it picks up the new statusLine command.

  3. budi doctor

    End-to-end verifier: daemon, tailers, schema, transcript visibility, and attribution health. When "All checks passed." you are done.

  4. budi status

    Today-cost snapshot: daemon state and today's spend. For the full breakdown, use budi stats projects / branches / tickets.

Editor extension.

Adds the budi status bar to VS Code, Cursor, or a JetBrains IDE. budi init offers VS Code / Cursor automatically; the JetBrains plugin ships on the JetBrains Marketplace and is installed from inside the IDE. Pick your editor:

Other install methods
Bundled extension via budi CLI

Same path budi init uses. Picks the right editor automatically.

budi integrations install --with cursor-extension
Manual VSIX in VS Code (offline / pinned)

Download cursor-budi.vsix from the budi-cursor releases page first.

code --install-extension cursor-budi.vsix --force
Manual VSIX in Cursor (offline / pinned)

Same VSIX file works in Cursor — Open VSX is just a discovery surface.

cursor --install-extension cursor-budi.vsix --force
Daemon from source (Rust toolchain)
git clone https://github.com/siropkin/budi.git && cd budi && ./scripts/install.sh

For teams (opt-in)

One dashboard for the team — aggregates only, no prompts or code.

Daily cost per user, repo, model, branch, and ticket at app.getbudi.dev. Privacy contract spells out exactly what does and doesn't leave your machine.

Sign up

FAQ

The questions we keep getting asked.

Editor coverage, Copilot, JetBrains, and why budi reads local logs instead of going through a proxy. If yours isn't here, open an issue.

What leaves my machine when using Budi?

By default, nothing. Optionally, only pre-aggregated daily numbers (tokens, cost, model, hashed repo ID, branch, ticket ID). Never prompts, code, responses, file paths, or emails. Budi itself is open source (MIT) and free — the optional cloud dashboard at app.getbudi.dev is the only piece you ever pay for.

Does budi work in VS Code, Cursor, and JetBrains?

Yes. One extension covers Cursor and VS Code (v8.4.0+, May 2026); a sibling Kotlin plugin covers JetBrains IDEs via the JetBrains Marketplace. Use whichever editor you use day-to-day — a user with multiple installed sees each host's own data in its status bar.

What about GitHub Copilot?

Copilot Chat is supported in 8.4.0 — real per-message tokens parsed from VS Code's local session files. GitHub-side dollar reconciliation works for individually-licensed users via the GitHub Billing API; org-managed users see local-tail tokens priced through budi's pricing manifest.

Do I need a GitHub PAT for Copilot Chat?

Optional, but recommended for accuracy. Without a PAT, on May-2026+ VS Code builds you get output-only token dollars — useful as a relative trend, but typically a fraction of the actual bill. With a PAT scoped to billing, budi reconciles to GitHub's exact dollar number per (date, model) bucket. Org-managed licences see output-only forever (the user-level Billing API endpoint is empty for them).

What about Continue / Cline / Roo Code / Aider / Gemini CLI?

Planned for 8.5.0 (the breadth round). Same provider-plugin pattern as Cursor and Copilot Chat — local logs primary, no proxy.