By Qwinahh
Measure, diagnose, and cut your Claude Code token spend — deterministic, local, free.
Measure, diagnose, and cut your LLM token spend - deterministic, local, free.
Most tools either just show you a number (ccusage and the usage monitors) or are engineering infrastructure you wire into app code (LiteLLM, Langfuse). Obol owns the middle: measure → diagnose why it was wasteful → explain it plainly → apply the fix → prove the answer didn't get worse. For everyday users, across Claude Code, chat, and VS Code.
It's free and deterministic because the analysis is math over a maintained technique catalog - no model is ever in the loop. That's the same property that makes it instant, private, and repeatable. The constraint is the moat.
Built one step at a time. Step 0 (this commit): the foundation runs.
/optimize command + re-read guard hook)npm install
npm run build
npm start # measure + diagnose (read-only)
npm start -- --apply # also write the safe, reversible fixes
--apply writes only the green changes — today, a clearly-marked, reversible block in
your project CLAUDE.md. Amber fixes (e.g. dropping unused MCP servers) are spelled out
exactly but left for you to approve; Obol never edits live config on its own.
The plugin/ directory is a Claude Code plugin, exposed through a local marketplace
(.claude-plugin/marketplace.json). npm run build bundles the compiled CLI and the
rules catalog into the plugin so it's self-contained when Claude Code copies it on
install. From this repo root:
npm install
npm run build # builds + bundles the plugin
Then in Claude Code:
/plugin marketplace add ./ # point it at this repo (the marketplace lives here)
/plugin install obol@obol # install the plugin
Now you have:
/obol:optimize — runs the analyzer and shows the Receipts + Diagnosis inline.Read: if a file was already read this
session, it reminds Claude (non-blocking) so you stop re-billing tokens you already have.The hook never blocks a read — worst case it does nothing. Both run locally, zero tokens.
Re-run npm run build after any code change and /plugin marketplace update obol to refresh.
One deterministic core (src/core), many faces. The catalog (data/catalog.json)
is the rules engine — the single most important file to keep current.
MIT licensed.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub qwinahh/obol --plugin obolMulti-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Unified status line for Claude Code with multi-CLI (Claude, Codex, Gemini, z.ai) usage monitoring, context, rate limits, and cost tracking