Live Windows desktop widget for tracking Claude Code and Codex CLI subscription usage. Tally is local-first: it reads your existing CLI auth/session data, shows live quota gauges, and estimates API-equivalent spend from local logs.
- 5-hour and weekly utilization rings for Claude Code and Codex.
- Plan labels such as Pro, Max 5x, Max 20x, Plus, Pro 5x, and Team.
- Token totals for input, output, cache read/write, cached input, and reasoning tokens.
- Per-model cost accounting using public list-price estimates.
- API-equivalent ROI/leverage versus subscription cost.
- Data views:
Now,Today,MTD,1D,7D,14D, and30D.
| Vendor | Live Limits Source | Token Cost Source |
|---|---|---|
| Claude Code | Anthropic OAuth usage endpoint, with Claude CLI /usage, optional Claude web session, and local cache fallback |
~/.claude/projects/**/*.jsonl plus Claude desktop Cowork session roots |
| Codex CLI | ChatGPT wham/usage endpoint, with local codex app-server JSON-RPC fallback |
~/.codex/sessions/**/*.jsonl |
The app does not proxy your traffic or run a server. It reads local CLI files and calls the same vendor endpoints your authenticated tools already use.
If only one CLI is installed and authenticated, the widget collapses to a single centered card. If neither is installed, it shows install prompts for Claude Code and Codex CLI.
The settings icon in the expanded panel opens:
- Refresh interval: 1 minute, 2 minutes, 5 minutes, or 10 minutes.
- Glass opacity slider.
- Theme: Dark, Light, or Auto.
- Plan label overrides.
- Tray and taskbar visibility toggles.
- GitHub release update check.
Settings persist to localStorage.
At least one of:
- Claude Code CLI installed and authenticated.
- Codex CLI installed and authenticated with
codex login.
If neither is present, the widget still launches and shows connection prompts.
Download the Windows .msi or .exe installer from the Releases page. On first run, Windows SmartScreen may warn because the binary is not code-signed. Choose More info -> Run anyway if you trust the downloaded release.
git clone https://github.com/cjmedia72/tally
cd tally
npm install
npx tauri dev
npx tauri buildBuild prerequisites: Rust 1.77+, Node.js 18+, and Tauri 2 prerequisites for your platform.
.cargo/config.tomlredirects Cargo output toC:/rust-target/tallyto avoid Windows username paths with spaces. Delete or edit this if you prefer a normal localtarget/directory.- With the GNU Rust toolchain, put MSYS2 mingw64 on PATH before running tests/builds:
$env:Path = 'C:\msys64\mingw64\bin;' + $env:Path
cargo test --manifest-path src-tauri\Cargo.toml
npm run build- Local processing only; no analytics and no telemetry.
- Claude OAuth is read from
~/.claude/.credentials.jsonand used for Anthropic Claude usage/profile requests. - Codex usage is read through ChatGPT/Codex authenticated usage endpoints and local Codex session data.
- The updater checks the public GitHub Releases API only when you ask it to check for updates.
- Tally writes local cache/history files under the OS cache/data directories, currently under
tally.
Claude usage endpoints can rate-limit. Tally:
- Caches live data in-process.
- Persists the last successful Claude usage response to disk and appends Claude limit samples to local history.
- Falls back from OAuth to Claude CLI
/usage, then optional Claude web session (TALLY_CLAUDE_COOKIEorTALLY_CLAUDE_SESSION_KEY); cached values are used only if live sources fail or OAuth is cooling down after 429. - Recovers automatically on the next successful refresh.
You'll see a data: Nh ago stale indicator under each vendor card if cached values are being served.
$env:Path = 'C:\msys64\mingw64\bin;' + $env:Path
cargo check --manifest-path src-tauri\Cargo.toml
cargo test --manifest-path src-tauri\Cargo.toml
node --check src\main.js
npm audit --omit=devTally's Codex-side approach was informed by CodexBar by Peter Steinberger. CodexBar is excellent on macOS and covers many more providers; Tally focuses on a compact Windows widget for Claude Code plus Codex.