The unified, local-first desktop monitor for Claude, Codex, and Antigravity.
One window for every usage gauge, cost trend, and recent prompt — without handing your keys to a SaaS dashboard.
Download · Features · Screens · Architecture · Contributing
You're juggling three coding agents at once — Claude, Codex, and Antigravity — each with its own dashboard, its own quota window, and its own pricing page. OpenToken Monitor stitches them into a single tray-resident desktop app that:
- 📊 reads your local CLI artifacts first (
~/.claude,~/.codex,~/Library/Application Support/Antigravity/logs) - 🔐 augments them with live OAuth fetches when credentials are present — never proxied through a third party
- 💸 computes accurate per-model cost using current Q1 2026 published rates
- 🛟 keeps providers visible even when offline, surfacing health status instead of silently dropping them
Everything stays on your machine. Snapshots persist in a local SQLite store; nothing leaves the device.
- Unified overview — Claude · Codex · Antigravity in one glance, with live usage rings, trend sparklines, and provider health badges
- Per-provider detail pages with cost history, model breakdowns, alert thresholds (75 % / 90 % / 95 %), and recent-prompt activity
- Projects view — recent activity rolled up by workspace with cross-model spend attribution and command summaries
- Compact widget mode — fixed-size always-on-top panel for at-a-glance gauges and reset countdowns
| Provider | Sources | Windows tracked |
|---|---|---|
| Claude | Anthropic OAuth usage API + ~/.claude/projects local logs |
5-hour rolling, 7-day, Opus weekly, extra-credits |
| Codex (OpenAI) | Bearer / cookie / RPC fetchers + ~/.codex/sessions |
Daily, model breakdown |
| Antigravity | Google Cloud Code API (OAuth) + Local Language Server loopback + ~/Library/Application Support/Antigravity/logs |
5-hour rolling, Daily request cap |
- Smart OAuth backoff — separate cooldowns for success (120 s) and failure (25 s), so one transient 429 doesn't pin Claude to local-mode for two minutes
- Stale-cache fallback — last good snapshot stays on screen marked
staleif a fetch fails - Reactive file watching —
notifywatchers refresh the affected provider the moment a CLI session file changes - Single-instance enforcement — autostart launch + manual click no longer fight over the SQLite store
- Bundled WebView2 bootstrapper — Windows MSI installs cleanly on machines without WebView2 pre-installed
All model rates live in a single source-of-truth: src-tauri/src/pricing.rs.
| Family | Tier | Rate (input / output per 1M tokens) |
|---|---|---|
| Claude | Opus 4.x | $15.00 / $75.00 |
| Claude | Sonnet 4.x | $3.00 / $15.00 |
| Claude | Haiku 4.5 | $1.00 / $5.00 |
| OpenAI | GPT-5 | $1.25 / $10.00 |
| OpenAI | GPT-5 mini / nano | $0.25 / $2.00 · $0.05 / $0.40 |
| OpenAI | o3 / o4-mini | $2.00 / $8.00 · $1.10 / $4.40 |
| Antigravity | Gemini 3 Pro / Flash / Flash-Lite | $1.25 / $10.00 · $0.30 / $2.50 · $0.10 / $0.40 |
Caching discounts and cache-write surcharges are applied where each provider exposes them.
| Shortcut | Action |
|---|---|
| 1 / 2 / 3 | Jump to Claude / Codex / Antigravity |
| 4 | Open Projects |
| Esc | Return to overview |
| Ctrl+R / ⌘+R | Refresh all providers |
| Ctrl+, / ⌘+, | Open settings |
| Overview | Projects |
|---|---|
![]() |
![]() |
| Provider Detail | Widget Mode |
|---|---|
![]() |
![]() |
| Settings |
|---|
![]() |
Grab the latest installer for your OS from GitHub Releases:
Prerequisites: Node.js 18+, Rust stable, and your OS-specific Tauri 2 dependencies.
# Clone & install
git clone https://github.com/Hitheshkaranth/OpenTokenMonitor.git
cd OpenTokenMonitor
npm install
# Run in dev mode (hot-reload)
npm run tauri dev
# Production build
npm run tauri build # all platforms
npm run tauri:build:win # Windows NSIS installer
npm run tauri:build:mac # macOS app bundle + installer
|
┌──────────────────────────────────────────────────────────┐
│ React 19 · Zustand stores · hooks (resize / kbd) │
└──────────────────┬───────────────────────────────────────┘
│ Tauri invoke() / usage-updated event
┌──────────────────┴───────────────────────────────────────┐
│ commands.rs → aggregator → provider registry │
│ │ ├─ Claude (OAuth + logs)
│ │ ├─ Codex (bearer/cookie/RPC + logs)
│ │ ├─ Antigravity (OAuth + Live Loopback + logs)
│ ↓ │
│ UsageStore (SQLite) · pricing.rs · alerts.rs │
│ tray.rs · watchers (poll + filesystem) │
└──────────────────────────────────────────────────────────┘
Full module map and data-flow walkthrough → ARCHITECTURE.md
Key entry points:
- 🚪 Frontend root —
src/App.tsx - 🔌 Backend entry —
src-tauri/src/lib.rs - 📞 Tauri commands —
src-tauri/src/commands.rs - 💱 Cost rate tables —
src-tauri/src/pricing.rs - 🗄️ SQLite layer —
src-tauri/src/usage/store.rs
- 🏠 100 % local. All snapshots, costs, and recent activity are stored in a local SQLite file under your OS app-data directory.
- 🔑 Credentials never leave the device. OAuth tokens are read from the official CLI keychain entries; API requests go directly from your machine to Anthropic / OpenAI / Antigravity (Google Cloud).
- 🚫 No telemetry. No analytics, no crash reporting, no phone-home.
- 🧹 Reset by deleting the app-data SQLite file (
%APPDATA%\com.opentokenmonitor.desktop\usage.dbon Windows; equivalents on macOS / Linux).
- Per-project budget alerts with native notifications
- Export usage reports to CSV / JSON / PDF
- Custom refresh cadences per provider
- Cursor / Aider / Continue.dev provider adapters
- Multi-month spend forecasting
Have a request? Open an issue.
Contributions are welcome — start with the architecture map and pricing module:
- Read
ARCHITECTURE.mdfor the module layout. - For new providers: implement the
UsageProvidertrait insrc-tauri/src/providers/<name>/and register it inregistry.rs. - For pricing updates: edit
src-tauri/src/pricing.rsand bump the review-date stamp at the top of the file. - Run the test suite before opening a PR:
cd src-tauri && cargo test --lib
npx tsc --noEmitReleased under the MIT License — free for personal and commercial use.
Built with ❤️ for developers who use more than one AI agent.
OpenTokenMonitor is not affiliated with Anthropic, OpenAI, or Google.




