# Burnrate
[](https://github.com/jamesbrink/burnrate/actions/workflows/ci.yml)
[](https://github.com/jamesbrink/burnrate/actions/workflows/release.yml)
[](https://jamesbrink.online/burnrate/)
[](https://crates.io/crates/burnrate)
[](https://crates.io/crates/burnrate)
[](https://github.com/jamesbrink/burnrate/releases/latest)
[](LICENSE)
[](https://github.com/jamesbrink/burnrate/releases/latest)
Desktop usage monitor for Claude Code, Codex, OpenRouter, Runpod, and AWS quotas, credits, spend, and subscription limits. Built with Tauri 2 (Rust + React/TypeScript) and lives in the system tray (the menu bar on macOS).
**Documentation: [jamesbrink.online/burnrate](https://jamesbrink.online/burnrate/)**
## Screenshots
<p align="center">
<img src="website/public/screenshots/preferences.png" alt="Burnrate Preferences window showing per-account usage across Claude Code, Codex, Runpod, and OpenRouter" width="62%" />
<img src="website/public/screenshots/tray.png" alt="Burnrate menu-bar popover with live quota meters for each account" width="30%" />
</p>
<p align="center"><em>The full Preferences window (left) and the menu-bar popover (right).</em></p>
## Features
- Menu-bar tray summary with a left-click usage popover and right-click actions (Preferences, Refresh, Quit).
- Native translucent (vibrancy) popover on macOS that follows the system light/dark appearance, sizes itself to its content, and dismisses when it loses focus.
- Native Preferences window for account management and manual OpenRouter/Runpod/AWS setup.
- Auto-detects Claude Code and Codex accounts from local config; OpenRouter and Runpod are added via API key, and AWS uses your existing AWS profile/default credential chain.
- **Multiple Claude Code and Codex accounts**, each signed in from the app via browser OAuth and shown with its email address and usage.
- **Drag to reorder** accounts — reorder the tray usage cards or the Preferences list; the order persists across both windows.
- Claude Code subscription buckets (5-hour, weekly, model-specific) with stale-auth checks via `claude auth status`.
- Codex Pro/Max plan and rate-limit buckets read from the Codex app server.
- Runpod prepaid balance, current spend, burn-rate runway, active resources, and recent Pods/Serverless/storage costs.
- AWS Cost Explorer month-to-date USD spend with optional monthly budgets and configurable service/tag/cost-category buckets such as Bedrock, EC2 compute, and S3.
- Secrets in the OS keyring by default, with an explicit plaintext fallback.
- Hides from the Dock by default; appears only while Preferences is open.
- **Automatic updates (macOS)** with selectable **Stable** and **Nightly** channels: a dismissible banner and tray "Check for Updates…" entry offer a signature-verified one-click "Install & Restart." Choose the channel under Preferences → Updates.
## Install
Download the native bundle for your platform from [GitHub Releases](https://github.com/jamesbrink/burnrate/releases), or install the binary crate (it ships the prebuilt UI):
```sh
cargo install burnrate
```
See the [installation guide](https://jamesbrink.online/burnrate/guide/installation) for Nix, update channels, and signed macOS builds.
## Documentation
Setup, provider specifics (including AWS permissions), configuration, and troubleshooting live on the docs site:
- [Getting started](https://jamesbrink.online/burnrate/guide/getting-started) — accounts, browser sign-in, multi-account isolation
- [Configuration](https://jamesbrink.online/burnrate/guide/configuration) — storage paths, secrets, environment variables
- [Providers](https://jamesbrink.online/burnrate/providers/claude-code) — Claude Code, Codex, OpenRouter, Runpod, AWS
- [Troubleshooting](https://jamesbrink.online/burnrate/guide/troubleshooting) — keychain prompts, CLI discovery, stale auth
## Development
```sh
npm install
npm run dev # tauri dev — launches the desktop app + tray
```
A Nix devshell exposes the full workflow (`nix develop`, then `dev`, `check`, `test`, `fmt`, `build-app`, `build-pure`, `package-dmg`, `docs-dev`). See [AGENTS.md](AGENTS.md) for the architecture map and complete command reference.
The docs site is a VitePress app in `website/` — `docs-dev` starts it with hot reload; pushes to `main` deploy it to GitHub Pages.
## Releases
- `release-plz` manages crate release PRs, version tags, and crates.io publishing.
- Tagging `v*` builds native Tauri bundles (macOS, Linux, Windows) and uploads them with checksums to the GitHub Release, then publishes a signed `latest.json` (the **Stable** auto-update manifest).
- A `nightly` workflow runs after green `CI` on `main`, building a signed macOS pre-release and promoting it to the rolling `nightly` release/manifest (the **Nightly** channel).
- Auto-update signing uses a Tauri minisign keypair: the public key lives in `tauri.conf.json`; the private key + passphrase are the `TAURI_SIGNING_PRIVATE_KEY` / `TAURI_SIGNING_PRIVATE_KEY_PASSWORD` repo secrets.
## License
[MIT](LICENSE)