Codeburn Claude Cost Dashboard

by reason-machines2384a003145aNo license83 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 3 months ago

Interactive TUI dashboard for visualizing Claude Code token usage, costs, and task breakdowns by project, model, and activity type.

AI-generated overview

Interactive terminal dashboard that reads local Claude Code session transcripts to show token usage and costs.

What it does
CodeBurn reads Claude Code session transcripts from the local ~/.claude/projects/ directory and visualizes token usage, costs, and task breakdowns by project, model, activity type, MCP server, and tool. It provides an interactive TUI with period switching, a compact status summary, CSV and JSON exports, and an optional macOS menu bar widget. Costs are computed from LiteLLM model prices, cached locally, with hardcoded fallbacks, and sessions are deduplicated by API message ID.
When to use it
Use it to check Claude Code spending for today, the last 7 days, or the month, to see which projects, models, or activity types consume the most tokens, or to export cost reports for scripts and scheduled reporting.
Requirements
Node.js 20+, Claude Code installed with session data at ~/.claude/projects/, and network access to fetch LiteLLM pricing (falls back to hardcoded prices). The macOS menu bar widget requires SwiftBar. Ships no scripts; instructions only.

CodeBurn

Skill by ara.so — Daily 2026 Skills collection.

CodeBurn is an interactive TUI dashboard that reads Claude Code session transcripts directly from disk (~/.claude/projects/) and visualizes token usage, costs, and task breakdowns by project, model, activity type, MCP server, and tool. No API keys, no proxy — pure local file analysis.

Install

bash
npm install -g codeburn# or run without installingnpx codeburn

Requirements: Node.js 20+, Claude Code installed (session data at ~/.claude/projects/)

Key Commands

bash
# Interactive TUI dashboard (default: last 7 days)codeburn
# Time period shortcutscodeburn todaycodeburn monthcodeburn report -p month      # explicit period flag
# Compact one-liner summarycodeburn statuscodeburn status --format json
# Export datacodeburn export               # CSV: today, 7d, 30dcodeburn export -f json       # JSON export
# macOS menu bar widget (requires SwiftBar)codeburn install-menubarcodeburn uninstall-menubar

TUI Keyboard Navigation

KeyAction
← → arrow keysSwitch between Today / 7 Days / Month
1 2 3Period shortcuts
qQuit

What CodeBurn Tracks

13 Task Categories (deterministic, no LLM calls)

CategoryTrigger Pattern
CodingEdit, Write tools
DebuggingError/fix keywords + tool usage
Feature Dev"add", "create", "implement" keywords
Refactoring"refactor", "rename", "simplify"
Testingpytest, vitest, jest in Bash
ExplorationRead, Grep, WebSearch without edits
PlanningEnterPlanMode, TaskCreate tools
DelegationAgent tool spawns
Git Opsgit push/commit/merge in Bash
Build/Deploynpm build, docker, pm2
Brainstorming"brainstorm", "what if", "design"
ConversationNo tools, pure text exchange
GeneralSkill tool, uncategorized

One-Shot Rate

For edit-heavy categories, CodeBurn detects Edit → Bash → Edit retry cycles. The 1-shot rate shows what percentage of edit turns succeeded without retries. 90% means the AI got it right first try 9/10 times.

Pricing

Fetched from LiteLLM model prices, auto-cached 24h at ~/.cache/codeburn/. Covers input, output, cache write, cache read, and web search costs. Falls back to hardcoded prices if fetch fails.

Data Source

Claude Code stores session transcripts as JSONL:

~/.claude/projects/<sanitized-path>/<session-id>.jsonl

Each assistant entry contains: model name, token usage (input/output/cache_read/cache_write), tool_use blocks, timestamps. CodeBurn deduplicates by API message ID to prevent double-counting across sessions.

macOS Menu Bar Setup

bash
# 1. Install SwiftBarbrew install --cask swiftbar
# 2. Install the CodeBurn plugincodeburn install-menubar
# 3. Launch SwiftBar — CodeBurn flame icon appears in menu bar# Refreshes every 5 minutes, shows today's cost + breakdown dropdown

To remove:

bash
codeburn uninstall-menubar

Export Examples

bash
# Export CSV (three sheets: today, 7d, 30d)codeburn export# Output: codeburn-export-2026-04-14.csv
# Export JSONcodeburn export -f json# Output: codeburn-export-2026-04-14.json

JSON Export Structure

json
{  "exported_at": "2026-04-14T10:00:00Z",  "periods": {    "today": {      "total_cost": 1.42,      "total_tokens": 284000,      "by_project": { "my-app": 0.89, "other-project": 0.53 },      "by_model": { "claude-sonnet-4-5": 1.10, "claude-opus-4-5": 0.32 },      "by_activity": {        "Coding": { "cost": 0.65, "turns": 34, "one_shot_rate": 0.88 },        "Debugging": { "cost": 0.41, "turns": 18, "one_shot_rate": 0.72 }      }    },    "7d": { ... },    "30d": { ... }  }}

Project Structure

src/  cli.ts          # Commander.js entry point  dashboard.tsx   # Ink TUI (React for terminals)  parser.ts       # JSONL reader, dedup, date filter  models.ts       # LiteLLM pricing, cost calculation  classifier.ts   # 13-category task classifier  types.ts        # Type definitions  format.ts       # Text rendering (status bar)  menubar.ts      # SwiftBar plugin generator  export.ts       # CSV/JSON multi-period export

Programmatic Usage (TypeScript)

If you want to integrate CodeBurn's parsing logic into your own scripts:

typescript
import { parseSessions } from 'codeburn/parser';import { calculateCost } from 'codeburn/models';import { classifyTurn } from 'codeburn/classifier';
// Parse all sessions for a date rangeconst sessions = await parseSessions({  startDate: new Date('2026-04-01'),  endDate: new Date('2026-04-14'),});
// Sessions are deduplicated by API message IDfor (const turn of sessions.turns) {  const category = classifyTurn(turn);  const cost = await calculateCost(turn.model, turn.usage);  console.log(`${category}: $${cost.toFixed(4)}`);}
typescript
// Get a status summary programmaticallyimport { getStatus } from 'codeburn/format';
const status = await getStatus();console.log(status);// → "🔥 Today: $1.42 (284k tokens) | Month: $18.30 (3.6M tokens)"
// JSON format for scriptingconst statusJson = await getStatus({ format: 'json' });const data = JSON.parse(statusJson);// { today: { cost: 1.42, tokens: 284000 }, month: { cost: 18.30, tokens: 3600000 } }

Common Patterns

Daily Cost Check in CI/Shell Scripts

bash
#!/bin/bash# Add to .zshrc or run in CI to log daily AI spendSPEND=$(codeburn status --format json | jq '.today.cost')echo "Today's Claude spend: \$$SPEND"
# Alert if over thresholdif (( $(echo "$SPEND > 5.00" | bc -l) )); then  echo "⚠️  High AI spend today: \$$SPEND"fi

Export and Analyze with jq

bash
# Export JSON and analyze by modelcodeburn export -f json | jq '.periods["7d"].by_model'
# Find most expensive project this monthcodeburn export -f json | jq '  .periods["30d"].by_project  | to_entries  | sort_by(-.value)  | .[0]'

Automate Weekly Reports

bash
#!/bin/bash# weekly-ai-report.sh — run via cron on MondaysOUTPUT_DIR="$HOME/ai-cost-reports"mkdir -p "$OUTPUT_DIR"
DATE=$(date +%Y-%m-%d)codeburn export -f json > "$OUTPUT_DIR/week-$DATE.json"codeburn status >> "$OUTPUT_DIR/history.log"echo "[$DATE] Report saved to $OUTPUT_DIR/week-$DATE.json"

Troubleshooting

No data shown / "No sessions found"

bash
# Verify Claude Code session files existls ~/.claude/projects/
# Check a specific project's sessionsls ~/.claude/projects/<project-name>/# Should see *.jsonl files
# Confirm Node version is 20+node --version

Pricing fetch fails / shows $0.00

bash
# Clear the price cache and retryrm -rf ~/.cache/codeburn/
# CodeBurn falls back to hardcoded prices automatically# Run again — it will re-fetch from LiteLLMcodeburn today

Menu bar widget not updating

bash
# Reinstall the plugincodeburn uninstall-menubarcodeburn install-menubar
# Ensure SwiftBar is running and plugin directory is set# SwiftBar → Preferences → Plugin folder should point to ~/Library/Application Support/SwiftBar/Plugins/

Double-counted costs

CodeBurn deduplicates by API message ID automatically. If you see unexpectedly high numbers, check for duplicate JSONL files:

bash
# List all session files sorted by sizefind ~/.claude/projects/ -name "*.jsonl" | xargs wc -l | sort -rn | head -20

TUI rendering issues

bash
# Ensure terminal supports 256 colorsecho $TERM# Should be xterm-256color or similar
# Force color modeCOLORTERM=truecolor codeburn

Related

  • ccusage — inspiration for this project
  • LiteLLM — model pricing data source
  • SwiftBar — macOS menu bar plugin host

Source and attribution

Source:reason-machines/trending-skillsinskills/codeburn-claude-cost-dashboardat commit2384a00

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal