Codeburn Claude Cost Dashboard

作者 reason-machines2384a003145a无许可证83 个星标收录于 2026年10月8日更新于 2026年10月8日仓库3个月前更新

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

AI 生成的概览

交互式终端仪表盘,读取本地 Claude Code 会话记录以展示 token 用量与费用。

功能
CodeBurn 从本地 ~/.claude/projects/ 目录读取 Claude Code 会话记录,按项目、模型、活动类型、MCP 服务器和工具可视化 token 用量、费用与任务分布。它提供可交互的 TUI(可切换时间范围)、简洁的状态摘要、CSV 与 JSON 导出,以及可选的 macOS 菜单栏小组件。费用依据 LiteLLM 模型价格计算并本地缓存,获取失败时回退到内置价格,会话按 API 消息 ID 去重。
适用场景
适合查看今天、最近 7 天或本月的 Claude Code 花费,了解哪些项目、模型或活动类型消耗最多 token,或导出费用报告用于脚本与定期汇报。
运行要求
需要 Node.js 20+、已安装 Claude Code 且会话数据位于 ~/.claude/projects/,并需要网络访问以获取 LiteLLM 价格(失败时回退到内置价格)。macOS 菜单栏小组件需要 SwiftBar。不附带脚本,仅为说明文档。

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

来源与署名

来源:reason-machines/trending-skills位于skills/codeburn-claude-cost-dashboard提交2384a00

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架