Skip to content

Hitheshkaranth/OpenTokenMonitor

Repository files navigation

OpenToken Monitor

OpenToken Monitor

The unified, local-first desktop monitor for Claude, Codex, and Gemini.

One window for every usage gauge, cost trend, and recent prompt β€” without handing your keys to a SaaS dashboard.

Tauri Rust React TypeScript Vite SQLite

License: MIT Version Platform Local-First

Download Β· Features Β· Screens Β· Architecture Β· Contributing


✨ Why OpenToken Monitor?

You're juggling three coding agents at once β€” Claude, Codex, and Gemini β€” 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, ~/.gemini/tmp)
  • πŸ” 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.


πŸš€ Features

🎯 Core Dashboard

  • Unified overview β€” Claude Β· Codex Β· Gemini 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 Intelligence

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
Gemini Google OAuth quota API + ~/.gemini/tmp session files + gemini --stats CLI 60 req/min, 1000 req/day (free tier, midnight Pacific reset)

πŸ›‘οΈ Resilience Built-In

  • 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 stale if a fetch fails
  • Reactive file watching β€” notify watchers 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

πŸ’° Accurate Cost Estimation (Q1 2026 rates)

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
Gemini 2.5 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.

⌨️ Keyboard Shortcuts

Shortcut Action
1 / 2 / 3 Jump to Claude / Codex / Gemini
4 Open Projects
Esc Return to overview
Ctrl+R / ⌘+R Refresh all providers
Ctrl+, / ⌘+, Open settings

πŸ“Έ Screens

Overview Projects
Overview Projects
Provider Detail Widget Mode
Provider detail Widget
Settings
Settings

πŸ“¦ Installation

Pre-built binaries

Grab the latest installer for your OS from GitHub Releases:

Windows macOS Intel macOS Apple Silicon Linux

Build from source

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

🧱 Tech Stack

πŸ¦€ Backend (Rust)

βš›οΈ Frontend (TypeScript)


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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)
β”‚         β”‚                          └─ Gemini  (OAuth + CLI + logs)
β”‚         ↓                                                β”‚
β”‚  UsageStore (SQLite)  Β·  pricing.rs  Β·  alerts.rs        β”‚
β”‚  tray.rs  Β·  watchers (poll + filesystem)                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Full module map and data-flow walkthrough β†’ ARCHITECTURE.md

Key entry points:


πŸ”’ Data & Privacy

  • 🏠 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 / Google.
  • 🚫 No telemetry. No analytics, no crash reporting, no phone-home.
  • 🧹 Reset by deleting the app-data SQLite file (%APPDATA%\com.opentokenmonitor.desktop\usage.db on Windows; equivalents on macOS / Linux).

πŸ—ΊοΈ Roadmap

  • 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.


🀝 Contributing

Contributions are welcome β€” start with the architecture map and pricing module:

  1. Read ARCHITECTURE.md for the module layout.
  2. For new providers: implement the UsageProvider trait in src-tauri/src/providers/<name>/ and register it in registry.rs.
  3. For pricing updates: edit src-tauri/src/pricing.rs and bump the review-date stamp at the top of the file.
  4. Run the test suite before opening a PR:
cd src-tauri && cargo test --lib
npx tsc --noEmit

πŸ“œ License

Released 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.

⬆ Back to top

About

OpenTokenMonitor is a lightweight, local-first desktop widget for tracking AI CLI usage across Claude, Codex, and Gemini. It helps developers monitor activity, usage trends, and costs in real time through a clean desktop interface, with optional live API data and a privacy-first local setup.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors