Every AI coding subscription you pay for — one terminal dashboard.
Live quota windows for Claude, Codex, and Antigravity. Multiple accounts per provider. No provider CLI, no API key, no Node.js. Just OAuth and a local sidecar.
Why QOTA
Provider quota windows reset at different times. QOTA puts current headroom, reset times, and account errors in one local terminal dashboard.
| Question | QOTA answers it with |
|---|---|
| Which account has headroom now? | Accounts rail, grouped by provider, live status per account |
| Am I close to a limit? | HEALTHY and CRITICAL states, used and remaining bars |
| When does quota return? | Local reset times, not raw UTC timestamps |
| Did an account fail? | ATTENTION panel while healthy accounts remain visible |
| Can automation use this? | qota list --json and qota poll versioned reports |
Use QOTA before a long session, while managing several accounts, or as a quota input for an
orchestrator. qota poll --interval 60 --background keeps ~/.podium/usage.json current.
Install
Choose one supported installation method.
Cargo
Requires stable Rust and Cargo.
Homebrew
GitHub release binary
Download the archive for your platform from
GitHub Releases, extract it, then place qota on
your PATH. Verify the archive checksum published with that release before using it.
First use
qota setup opens a provider picker. Choose Claude, Codex, Antigravity, or any combination,
then complete OAuth in the browser. QOTA downloads and verifies its local CLIProxyAPI sidecar
during setup.
You need an interactive terminal, browser access for OAuth, internet access for provider calls, and at least one supported provider account. You do not need Node.js, a provider CLI, or an API key.
Dashboard
Run qota with no arguments.
- Accounts rail: provider-grouped accounts with live, partial, or error status.
- Quota groups: provider-reported windows, usage bars, remaining percentage, local reset time.
- Status: provider account counts,
ATTENTIONitems, last refresh time.
r Refresh live quotas
n / + Add or re-authenticate an account
Tab Cycle panel focus
↑ ↓ Move selection
PgUp/PgDn Scroll
? Help overlay
q Quit
Mouse support includes account and provider selection, footer actions, and compact-layout scrolling.
Install
Cargo (crates.io)
Homebrew (macOS / Linux)
GitHub Releases (Prebuilt Binaries)
Download prebuilt platform archive from GitHub Releases, extract qota binary into your PATH:
Source build, available now
Source builds require stable Rust and Cargo. Check first:
If cargo is missing on macOS or Linux, install Rust with
rustup, then load Cargo into this shell:
|
From this checkout:
setup opens a full-screen provider picker. Select Claude, Codex, Antigravity, or any
combination, then press Enter. Only then does qota start provider OAuth in the browser.
After OAuth succeeds:
To install this source build into Cargo's bin directory:
Cargo installs the binary to its configured bin directory, commonly ~/.cargo/bin. Add that
directory to PATH if qota is not found.
What you need
- a qota binary (release asset, or a source build as above);
- an interactive terminal for the dashboard and setup;
- internet access plus a browser for provider OAuth and the first-run sidecar download;
- a Claude, Codex, and/or Antigravity account.
You do not need Node.js, a provider CLI, an API key, or (with a release binary) Rust and Cargo. qota downloads and verifies its local sidecar during setup.
Commands
Interactive:
Automation:
list --json writes one versioned report to stdout. poll atomically writes the same report
to ~/.podium/usage.json.
Agent Skill
To enable AI agents to check live provider quota headroom and subscription status, use the reusable QOTA skill:
- Skill Specification:
skills/qota/SKILL.md - Registration: Copy or symlink
skills/qota/into your agent skills directory (e.g.~/.claude/skills/qota,~/.gemini/config/skills/qota,~/.codex/skills/qota, or.agents/skills/qota).
For scripts, select OAuth providers without opening the picker:
Set QOTA_CPA_BIN to an existing CLIProxyAPI executable to skip its download.
How it works
QOTA does not shell out to provider CLIs or request API keys. It uses a local CLIProxyAPI sidecar, which holds OAuth credentials and exposes each provider's usage endpoint. QOTA normalizes those responses into one report shape and renders them locally.
provider OAuth ─▶ CLIProxyAPI (local sidecar) ─▶ QOTA ─▶ TUI + usage.json
During setup QOTA downloads CLIProxyAPI, shows transfer progress, verifies its published SHA-256 checksum, then extracts it. Rerunning setup preserves the local management key and supports account add and re-authentication flows.
OAuth pages belong to providers. QOTA confirms provider selection before opening a browser, keeps the TUI active during OAuth, shows safe provider status, and masks typed sidecar replies.
Providers
Claude
Subscription usage for the selected local OAuth account: rolling 5-hour and 7-day windows, plus model-specific weekly windows when supplied.
Codex
ChatGPT WHAM usage for the selected local OAuth account. Every returned rolling window is rendered, including 5-hour and 7-day windows when supplied.
Antigravity
Antigravity quota summary: provider-defined shared pools for Gemini, Claude, and GPT models. Disabled buckets are omitted. QOTA renders the group and window Antigravity returns; remaining percentage and reset time come from that summary.
If an Antigravity value differs from its /usage panel, confirm both use the same account and
Code Assist project.
JSON report
Every account fails independently. Invalid credentials, network failures, and malformed
provider responses appear in errors; healthy accounts remain in accounts.
Privacy and local data
QOTA stores its local sidecar configuration and OAuth files under ~/.qota/ with private
permissions. It never prints provider tokens, management keys, credential files, or raw
provider responses. Nothing leaves the machine except provider calls made through the sidecar.
Development
Built with Ratatui and crossterm. Quota transport by CLIProxyAPI.