exe-fuelbar
v0.1.1
Published
See where your AI coding tokens go - by task, tool, model, and project
Downloads
276
Maintainers
Readme
You're spending real money on AI coding tools every day. Exe Fuelbar shows you exactly where it goes — cost, tokens, models, projects, and whether the AI is getting it right the first time or burning through retry loops. One command, zero cloud, everything local.
npm install -g exe-fuelbarWhat you get
Dashboard — Interactive TUI with gradient charts, responsive panels, keyboard navigation. Breaks down spend by day, project, model, activity type, tools, MCP servers, and shell commands. Auto-refreshes every 30 seconds.
One-shot rate — For every category that involves edits, Fuelbar detects edit/test/fix retry cycles and shows you the percentage of turns where the AI got it right on the first try. Coding at 90% means 9 out of 10 edits landed without retries.
Optimize — Scans your sessions and ~/.claude/ config for waste: re-read files, low read:edit ratios, uncapped bash output, unused MCP servers, ghost agents, bloated CLAUDE.md files. Hands back exact, copy-paste fixes. Grades your setup A through F.
Compare — Side-by-side model comparison on your own data. One-shot rate, retry rate, cost per edit, cache hit rate, delegation style, fast mode usage — broken down by task category.
Menubar — Native macOS app showing today's cost in your menu bar. Period switcher, trend/forecast/pulse insights, activity breakdowns, and export. One command to install.
Export — CSV and JSON export for any time period. Pipe --format json output to jq for scripting.
Supported tools
| Tool | Data source | Notes |
|------|-------------|-------|
| Claude Code | ~/.claude/projects/ | Full support |
| Claude Desktop | ~/Library/Application Support/Claude/local-agent-mode-sessions/ | Full support |
| Codex (OpenAI) | ~/.codex/sessions/ | Full support |
| Cursor | SQLite (state.vscdb) | Auto mode estimated at Sonnet pricing |
| cursor-agent | CLI sessions | Full support |
| OpenCode | SQLite (~/.local/share/opencode/) | Subtask sessions excluded |
| Pi | ~/.pi/agent/sessions/ | Full support |
| OMP (Oh My Pi) | ~/.omp/agent/sessions/ | Full support |
| GitHub Copilot | ~/.copilot/session-state/ | Output tokens only |
Auto-detected. If multiple tools have data, press p in the dashboard to toggle. Provider plugin system makes adding new tools straightforward — see src/providers/codex.ts for the pattern.
CLI reference
# Dashboard
exe-fuelbar # interactive (default: 7 days)
exe-fuelbar today # today only
exe-fuelbar month # this month
# Reports
exe-fuelbar report -p 30days # rolling 30-day window
exe-fuelbar report -p all # everything on disk
exe-fuelbar report --from 2026-04-01 --to 2026-04-10
exe-fuelbar report --format json # structured JSON to stdout
exe-fuelbar status # compact one-liner (today + month)
# Filter
exe-fuelbar report --provider claude # single provider
exe-fuelbar report --project myapp # project substring match
exe-fuelbar report --exclude tests # exclude projects
# Tools
exe-fuelbar optimize # find waste, get fixes
exe-fuelbar optimize -p week # scope to last 7 days
exe-fuelbar compare # interactive model picker
exe-fuelbar export # CSV (today, 7d, 30d)
exe-fuelbar export -f json # JSON exportDashboard keys: 1-5 switch periods (Today / 7d / 30d / Month / All). p toggle providers. c compare mode. o optimize view. q quit.
Flags work everywhere: --provider, --project, --exclude, --from, --to, and --format json combine freely across all commands.
Menubar app
exe-fuelbar menubarDownloads, installs to ~/Applications, and launches. Re-run with --force to reinstall. Native Swift + SwiftUI — refreshes live via FSEvents plus a 15-second poll.
Compact mode drops decimals in the menubar (e.g. $110 instead of $110.20):
defaults write ExeFuelbarMenubar ExeFuelbarMenubarCompact -bool trueConfiguration
Currency
exe-fuelbar currency GBP # any ISO 4217 code (162 currencies)
exe-fuelbar currency --reset # back to USDExchange rates from the European Central Bank via Frankfurter. Cached 24 hours. Applies everywhere: dashboard, menubar, exports.
Plans
Track spend against your subscription:
exe-fuelbar plan set claude-max # $200/month
exe-fuelbar plan set claude-pro # $20/month
exe-fuelbar plan set cursor-pro # $20/month
exe-fuelbar plan set custom --monthly-usd 150 --provider claude
exe-fuelbar plan set none # disableModel aliases
If a model shows $0.00, your provider's model name doesn't match LiteLLM pricing data. Map it:
exe-fuelbar model-alias "my-proxy-model" "claude-opus-4-6"
exe-fuelbar model-alias --list
exe-fuelbar model-alias --remove "my-proxy-model"Stored in ~/.config/exe-fuelbar/config.json. User aliases override built-ins.
Activity tracking
13 categories classified from tool usage patterns and keywords. No LLM calls, fully deterministic.
| Category | Trigger | |----------|---------| | Coding | Edit, Write tools | | Debugging | Error/fix keywords + tools | | Feature Dev | "add", "create", "implement" | | Refactoring | "refactor", "rename", "simplify" | | Testing | pytest, vitest, jest in Bash | | Exploration | Read, Grep, WebSearch without edits | | Planning | EnterPlanMode, TaskCreate | | Delegation | Agent tool spawns | | Git Ops | git push/commit/merge | | Build/Deploy | npm build, docker, pm2 | | Brainstorming | "brainstorm", "what if", "design" | | Conversation | No tools, pure text | | General | Uncategorized |
Reading the signals
| What you see | What it might mean |
|---|---|
| Cache hit < 80% | Unstable system prompt or caching not enabled |
| Lots of Read calls per session | Agent re-reading files, missing context |
| Low 1-shot rate (Coding 30%) | Agent struggling, retry loops |
| Opus on small turns | Overpowered model for simple tasks |
| Bash dominated by git status, ls | Agent exploring instead of executing |
| Conversation category dominant | Agent talking instead of doing |
Starting points, not verdicts. A single experimental session with 60% cache hit is fine. That same number across weeks of work is a config issue.
How it works
Reads session data directly from disk. No wrapper, no proxy, no API keys needed. Pricing from LiteLLM (auto-cached 24h). Handles input, output, cache write, cache read, and web search costs. Deduplicates messages by API message ID (Claude), cumulative token cross-check (Codex), conversation/timestamp (Cursor), session+message ID (OpenCode), or responseId (Pi/OMP).
Environment variables:
| Variable | Description |
|----------|-------------|
| CLAUDE_CONFIG_DIR | Override Claude data directory (default: ~/.claude) |
| CODEX_HOME | Override Codex data directory (default: ~/.codex) |
Contributing
Contributions welcome. The provider plugin system is the easiest entry point — each provider is a single file in src/providers/. See src/providers/codex.ts for the pattern.
src/
cli.ts Entry point (Commander.js)
dashboard.tsx TUI (Ink — React for terminals)
parser.ts Session reader, dedup, date filter
models.ts LiteLLM pricing engine
classifier.ts Activity classifier (13 categories)
compare-stats.ts Model comparison engine
export.ts CSV/JSON export
config.ts Config management
currency.ts Currency conversion
providers/ One file per supported toolStar History
License
MIT
Built by Exe AI. Pricing data from LiteLLM. Exchange rates from Frankfurter. Inspired by ccusage and CodexBar.
