One glance at remaining quota across your AI subscriptions. A browser extension that answers a single question: which of my AI tools has capacity right now?
If you pay for Claude, Codex/ChatGPT, Cursor and friends, each one meters usage differently, resets on a different cycle, and buries the number behind a different settings page. Nobody checks three dashboards before starting a long agent run — so nobody checks at all, until they get cut off forty minutes in. Ration puts all of it one click away, in the browser where those dashboards already live.
- Popup: provider cards sorted by headroom — the tool with the most capacity on top, per-limit bars, reset countdowns, and the age of every reading.
- Badge: the extension icon shows the lowest headroom across your
enabled providers — the wall you'll hit first. Quiet when everything is
fine, amber under 40%, red under 15%, grey
!when a reading failed. - No accounts, no telemetry, no backend. Ever. Everything stays in your browser profile.
| Provider | Status | How it reads your quota |
|---|---|---|
| Claude (claude.ai) | ✅ v0.1 | Your existing claude.ai browser session |
| Codex (chatgpt.com) | ✅ v0.1 | Your existing chatgpt.com browser session |
| Cursor (cursor.com) | ✅ v0.2 | Your existing cursor.com browser session |
| Gemini | 🙏 PRs welcome | — |
| Grok | 🙏 PRs welcome | — |
| GitHub Copilot | 🙏 PRs welcome | — |
Adding a provider is designed to be a single-file contribution — see CONTRIBUTING.md.
⭐ Easiest — Chrome Web Store: one click, auto-updates. Works on Chrome, Brave, Edge, Opera and other Chromium browsers. (Website: https://devudilip.github.io/ration)
Option A — from a release (no build tools needed):
- Download
ration-vX.Y.Z.zipfrom the latest release and unzip it. - Follow the browser steps below, selecting the unzipped folder.
Option B — build from source:
git clone https://github.com/devudilip/ration.git
cd ration
npm install
npm run buildThen in Chrome (or any Chromium browser):
- Open
chrome://extensions, enable Developer mode. - Load unpacked → select the
dist/folder (or the unzipped release folder). - Click the Ration icon and toggle on the providers you use. Each toggle asks for permission to that provider's site only, at that moment.
- You must be logged into the provider's site in this browser — Ration reads the same usage endpoint the provider's own settings page uses.
Time to first value should be under 20 seconds.
Ration rides your existing browser login. When you enable a provider it
asks Chrome for permission to that provider's origin, then calls the same
internal usage endpoint the provider's own settings page calls, with
credentials: 'include' so your session cookie is attached by the browser
itself.
Privacy and safety commitments, in order of importance:
- No credentials are ever read or stored. The extension never requests
the
cookiespermission and never sees cookie values. Where a provider's own web app authenticates with a short-lived session token (Codex), the adapter asks that provider's own session endpoint for the token at refresh time — exactly what the page itself does — uses it in-memory for the single request, and never persists it (there's a test asserting this). For Claude, noAuthorizationheader is ever constructed at all (also tested). - Zero telemetry. No analytics, no error reporting service, no remote config, no runtime dependencies at all. What you see in this repo is the entire behavior.
- Everything is local. Snapshots live in
chrome.storage.local(never synced), and Clear all data in the popup footer wipes every byte Ration has stored. - Polite polling. One scheduled refresh per provider every 5 minutes, a hard floor of one request per provider per minute regardless of what you click, and exponential backoff (up to 60 min) whenever a provider errors or rate-limits. We are guests on these endpoints.
Anthropic's consumer terms restrict Claude Code / claude.ai OAuth tokens to those products. Ration does not ship, bundle, or document any path that uses a Claude Code OAuth token — Claude support works only by riding your own claude.ai browser session, exactly like opening Settings → Usage yourself. Please don't send PRs that handle Anthropic OAuth tokens; they will be declined to protect contributors' and users' accounts.
Every endpoint Ration reads is internal to its provider and can change
without notice. When that happens the affected card shows an error and the
badge shows a grey ! — a failed reading always looks failed; Ration
never renders a guess as a number. If you see a grey ! that isn't a
logged-out session, please
open an "adapter broken" issue: with your help
(DevTools → Network tab → the provider's usage page → copy the response
shape, redact any ids) fixes are typically a few lines.
The claude.ai usage endpoint in particular is community-verified: the adapter probes a short list of candidate paths and reports honestly if none matches your account. Captures from real accounts are the fastest way to pin it down.
npm install
npm run watch # rebuild dist/ on save
npm test # vitest, fixture-based — no network
npm run typecheck
npm run ci # what CI runs: typecheck + test + buildReload the extension from chrome://extensions after a rebuild.
v0.1 is deliberately small: two providers, popup, badge, scheduled refresh. Next, roughly in order — history sparklines, more providers (Cursor, Gemini, Grok, Copilot), opt-in threshold notifications, Firefox, store builds. See the issues for current plans; the product requirements discussion is open.
Apache-2.0. Contributions welcome — see CONTRIBUTING.md.