See which repos are using your AI coding tokens.

RepoSpend tracks Codex, Claude Code, GitHub Copilot, and opt-in experimental Cursor usage by repo, session, model, and source surface. It reads files already on your disk. No login, no local usage telemetry, no prompt uploads.

Cost precision is strongest for Codex and Claude Code; GitHub Copilot support is initial, and Cursor import is experimental and opt-in.

$npx repospend
View on GitHub

GPT-6.1 Sol pricing is here. See what changed →Node.js 20+ · Free and open source

Reads local data fromCodexClaude CodeGitHub CopilotCursor opt-in
216weekly npm downloads16GitHub stars0.1.7current releaseNode 20+runtime
The dashboard

Your local AI coding activity at a glance.

One screen for every signal that matters: source filters, Start here actions, spend, top repos, cache reuse, command issue rate, and file edits. All grouped by Git root, all running on localhost.

localhost:2005 RepoSpend v0.1.7
Animated tour of the RepoSpend overview, repos, and sessions views with fictional Middle-earth demo data

Animated tour with fictional Middle-earth demo data. No private repository data is shown.

Featured release

v0.1.7 improves model pricing accuracy.

Request-level tiers and deduplication keep more estimates aligned with published rates. Your local pricing overrides remain yours as bundled rates are updated.

Featured releasev0.1.7
  • Correct Sonnet 5.5 cached input to $0.10 per 1M tokens after the October 7 price reduction
  • Add Claude Haiku 5.5 request-level tiered rates, including cache writes at both supported TTLs
  • Price deduplicated Claude and Copilot requests before summing session costs; leave aggregate Haiku usage unpriced when request lengths are unknown
  • Preserve custom model cards while bundled pricing and legacy settings are updated
  • Improve pricing diagnostics and cache model resolution within each session calculation
100KHaiku request tierPer requestClaude and Copilot totals$0.10 / 1MSonnet cached inputCustompricing cards preserved

Current model rates

GPT-6.1 Sol gets its own lower cache-read rate. GPT-6 Sol and Sonnet 5.5 retain their separate published cards.

Claude speed matters

Mixed Standard and fast-mode sessions use published fast-mode cards where available, including cache TTL rates.

Your rates stay yours

Custom pricing stays saved locally while new bundled model rates become available.

Defaults use Standard short-context rates, with explicit Claude fast-mode cards where published. Long-context requests and other processing modes can cost differently.

Read pricing detailsRelease notesAI coding price guide →
What it shows

Six signals that explain local usage.

No vanity metrics. Just the things that tell you, repo by repo and session by session, where tokens and cost went.

Repo cost

Walks sessions to their Git root, so apps, packages, and scripts roll up into the project you recognize.

Git rootaggregation

Source coverage

Codex, Claude Code, GitHub Copilot, and opt-in Cursor imports are separated by local source and app surface.

sourcesread-only

Model mix

Compare models by token shape, API-equivalent cost, cache reuse, sessions, and repo concentration.

modelscache

Agent friction

Separates blocking command failures from harmless shell exits, so high-token troubleshooting loops are easier to triage.

signals

Data Doctor

A confidence report explains token coverage, pricing coverage, repo verification, parser issues, and source warnings.

confidencesettings

Export anywhere

Dashboard-style filters now apply consistently to CLI summaries and JSON or CSV exports.

jsoncsvfilters
Screenshots

Every screen, explained.

Click through the real product views. Expand a screenshot when you want to inspect the details without opening the app.

Understand the rates.
Then inspect your usage.

Source-linked guides to model prices, caching, and the local sessions behind your AI coding costs. You can also compare model prices in the browser calculator.

How it works

Three steps. About twelve seconds.

No login, no API keys, no setup wizard. The hardest part is finding your terminal.

01

Run it

One command, and your dashboard opens at localhost:2005.

$ npx repospend
02

Read your files

Scans supported Codex, Claude Code, GitHub Copilot, and enabled Cursor paths in read only mode.

local source files only
03

Review usage

Find the repo using the most tokens, then inspect sessions, command evidence, and data confidence.

localhost:2005
Privacy by design

Your prompts never leave your laptop.

RepoSpend binds to localhost. The app has no hosted usage analytics service and no account to create. It is Apache 2.0 and auditable.

This describes the local application. The public website uses PostHog for pageviews, safe public interaction events, and optional session replay on canonical production pages. Replay and interaction capture are disabled on the calculator; its inputs and results stay in browser memory and outside every PostHog channel. The banner and Privacy settings control PostHog only. Session recordings are retained for 30 days. The existing Cloudflare Web Analytics beacon remains active on production pages, including the calculator. Sentry remains limited to bounded diagnostics and is disabled there.

No login

No account because there is nothing to store.

No telemetry

The dashboard does not report usage back.

No uploads

Prompt and tool output stay local.

No edits

Source client files are read only.

Supported tools

Reads what is already on disk.

RepoSpend was built first for Codex and now reads Claude Code and GitHub Copilot local data too. Cursor stays experimental and opt-in. RTK appears when local RTK data exists.

Claude Code

initial

Sessions, projects, models, timestamps, and tokens when available. Unknown token and cost fields stay unknown instead of guessed.

GitHub Copilot

initial

Reads Copilot CLI OTEL exports, CLI session state, and VS Code Copilot Chat transcript/debug files. Costs stay unknown when local token splits are incomplete.

Cursor

experimental

Best-effort local JSONL and SQLite/vscdb discovery. Tokens and cost remain unknown when Cursor does not persist exact usage locally.

RTK

optional

Surfaces RTK token savings analytics only when local RTK data exists. Otherwise it stays out of the way.

Commands

Most people just type repospend.

Power users get terminal friendly commands and source filters. The full help is one --help away.

~ repospend --help
$repospend

Open the dashboard at localhost:2005

$repospend scan

Scan supported local Codex, Claude Code, GitHub Copilot, and enabled Cursor files again

$repospend doctor

Print local data confidence, pricing coverage, parser issues, and source warnings

$repospend by-repo

Aggregate tokens and cost by Git root

$repospend by-day

Daily timeline of token use and spend

$repospend by-hour

Hourly distribution for spotting unusual bursts

$repospend by-model

Split usage across model names

$repospend by-app

Group by app or surface where detectable

$repospend export --format json

Dump the local usage data as JSON

$repospend export --format csv

Export CSV for a spreadsheet

$repospend by-repo --source copilot

Filter aggregates to one source

$repospend export --format csv --repo my-app --from 2026-05-01

Apply dashboard-style filters to exports

$REPOSPEND_NO_OPEN=1 repospend

Print the URL without opening a browser

FAQ

Reasonable questions, honest answers.

Trust the dashboard before you install it. These are the things people ask first.

Does RepoSpend send my prompts anywhere?

No. RepoSpend binds to localhost and reads files already on your machine. There is no login, no telemetry, and no prompt upload path in the dashboard.

Is the cost number my actual bill?

No. RepoSpend shows API-equivalent cost estimates from local token counts and pricing rules. It is useful for comparing repos and sessions, but it is not an invoice.

How does RepoSpend price Claude cache writes?

When local Claude Code transcripts expose the 5-minute vs 1-hour cache TTL split, RepoSpend prices each bucket at its own rate. Version 0.1.5 adds an explicit Sonnet 5.5 card at $2 input and $10 output per million tokens, and prices mixed Standard/fast turns using published model-specific rates. Unknown fast-mode rates keep the session’s cost unknown.

Does it support GitHub Copilot?

Yes. RepoSpend imports local Copilot CLI OTEL exports, Copilot CLI session state, and VS Code Copilot Chat transcript or debug files. Cost stays unknown when local data lacks full token splits.

Does it edit Codex, Claude, Copilot, or Cursor files?

No. Source client and RTK data are read only. RepoSpend settings, pricing overrides, and parse cache files live under ~/.repospend and can be reset from Settings.

Can I run it without npx?

Yes. Install once with npm install -g repospend, then run repospend. Node.js 20 or newer is required.

Find out where it all went.

One command. No account, no upload, no surprise. The dashboard is already on your machine; RepoSpend just turns it into a map.

$npx repospend
Star on GitHub