English | 简体中文
Install from the Chrome Web Store
Chrome Web Store releases can lag while review or publishing is pending; the Store badge shows the currently published version. GitHub Releases preserve the corresponding source and validated upload archive.
AI Limits supports twenty providers: ChatGPT, Claude, Kimi, Cursor, Grok, Mistral, Perplexity, ElevenLabs, New API, LiteLLM, ClawRouter, sub2api, LLM Proxy, DeepSeek, Moonshot, DeepInfra, Fireworks, OpenAI, GroqCloud, and OpenRouter. It is a Chrome side-panel extension that shows their current subscription usage and local quota-history graphs in one compact view. It normalizes provider-specific reporting into one Used or Left display and, when a provider exposes a complete reset window, compares quota consumption with elapsed time to show a pace signal. Cursor also shows weekly Grok Bot usage next to its monthly Cursor-model and Other-model limits, plus a per-model included-usage breakdown. It starts empty and reads usage only after you connect an individual provider and approve that provider's optional access. The side panel supports English and Simplified Chinese. Follow Chrome uses those languages when Chrome is set to one of them, and falls back to English for every other Chrome language. Settings can pin English or Simplified Chinese for this panel.
AI Limits is an independent project by TiantianFlow. It is not affiliated with, endorsed by, or authorized by any supported provider, its parent company, or its affiliates.
- Each provider is opt-in. Chrome asks for only that provider's exact host access.
- ChatGPT, Claude, Kimi, Cursor, Grok, Mistral, and Perplexity use the signed-in
browser session. The extension sends low-frequency, read-only requests to
their own web-session usage services and does not scrape rendered page
content. Cursor's base
usage refresh remains a background request; Connect or manual Refresh may
additionally run bundled read-only code in one already-open
cursor.compage, or briefly open one inactive spending tab if none is open, to request Grok Bot, extra-credit, and per-model included-usage JSON. - ElevenLabs, DeepSeek, Moonshot, DeepInfra, Fireworks, OpenAI, GroqCloud, and OpenRouter use user-created API keys against their fixed provider APIs. OpenAI is the Platform organization and developer billing surface (organization costs, completion usage, or legacy credit grants), not the ChatGPT consumer session. New API, LiteLLM, ClawRouter, sub2api, and LLM Proxy support multiple independently configured instances at user-selected origins. The extension sends each key only to its selected provider API for the read-only usage or balance requests described in Supported providers. AI Limits supports multiple New API instances. Each instance keeps its own normalized base URL, label, relay key, current usage, refresh state, and History.
- The latest normalized quota, counter or spend, balance, plan, refresh-status, and preference data is stored in Chrome extension storage on the local browser profile.
- After each successful normalized refresh, quota, counter or spend, and balance observations are stored per instance for up to 30 days, subject to a 1,024-observation per-instance safety cap. The newest 48 hours stay at collection resolution; older retained observations keep the latest value in each UTC hour. History graphs quota metrics only. It does not graph the retained counters or balances, reconstruct earlier provider history, or store raw provider responses or credentials in History.
- Browser-session cookies and access credentials are used only for the current provider collection attempt and are not saved in persistent extension storage. Successfully validated API keys are stored separately in local extension storage so manual and scheduled refresh can run without reopening the setup page.
- Automatic refresh is enabled by default and runs about every 15 minutes only while at least one connected provider remains. It can be disabled in Settings.
Kimi scheduled refresh never opens a tab. An interactive Connect or Refresh
may open at most one inactive temporary Kimi tab, waits up to 10 seconds for
recovery, and closes only the tab it created. The extension checks the legacy
Kimi cookie first, then the exact access_token entry in an already-open Kimi
page. Browser shutdown or API errors can delay or prevent best-effort cleanup.
Cursor Connect or manual Refresh prefer one already-open cursor.com tab. If
none is open, they may briefly open one inactive
https://cursor.com/dashboard/spending tab, wait up to 10 seconds, read from
it, and close only the tab they created. That owned-tab path uses the same
shared helper as Kimi. AI Limits never activates a tab and never closes a tab
the user opened. It does not inspect rendered content, browser storage, or
cookie values directly; Chrome still attaches the signed-in Cursor cookies to
those fixed same-origin requests. Scheduled or automatic refresh never opens
or injects into a Cursor page. The card shows monthly Cursor-model and
Other-model limits plus weekly Grok Bot usage. A detail view lists included
usage by model, grouped into Cursor Models and Other Models, with input,
output, and cost plus provider totals. That detail surface is generic so other
providers can adopt it later; today only Cursor fills it. Last-good Grok Bot,
extra-credit, and detail values stay until Grok Bot's weekly reset, without
presenting them as a new observation.
ElevenLabs setup opens its official API-keys page in a normal tab. If you need to sign in first, the guide remains open and lets you reopen that page. It asks you to create a key with User → Read and no generation or write permissions, then validates the read-only subscription request before saving the key. The exact endpoint-to-scope mapping is not formally documented by ElevenLabs, so the connection check is the authority; AI Limits does not silently broaden permissions. Once connected, ElevenLabs manual and scheduled refreshes run in the background without opening tabs. See Privacy for the saved key's local-storage boundary and limitations.
See the FAQ for refresh and History behavior, Supported providers for each connection mode and its limitations, Privacy for the complete data lifecycle, and Security for security reporting and limitations.
AI Limits requires storage, alarms, and sidePanel for local state,
scheduled refresh, and its interface. Provider origins are optional and are
requested one at a time when you click Connect or validate an API-key
connection. New API, LiteLLM, ClawRouter, sub2api, and LLM Proxy declare dynamic
optional host capability because they can use configurable origins, but Chrome
is asked only for the exact instance origin entered in onboarding. Same-origin
instances share that browser-global grant only; their credentials, labels,
usage, and History remain independent. The optional
cookies is requested only for Kimi session access. scripting is requested
for Kimi interactive recovery, Cursor's manual/connect-only page enrichment,
and Grok page-origin session and usage reads. Fixed API-key providers receive only optional access to their own
API origins. Public setup pages are opened normally and do not receive
extension host access. The extension does not request the broad tabs
permission.
For exact permission justifications and reviewer steps, see the store-listing draft.
Use Node 24 and the Corepack-managed pnpm version pinned in package.json.
From the repository root:
corepack enable
pnpm install --frozen-lockfile
pnpm devRun the full test, typecheck, build, and build-layout verification:
pnpm verifyAfter pnpm verify, open chrome://extensions, enable Developer mode, and
choose Load unpacked. From the repository root, select:
dist/chrome-mv3
pnpm build stages this visible directory from WXT's generated .output
directory, so it appears normally in the macOS file chooser. Use the extension
toolbar action to open the side panel.
Create and validate the Chrome Web Store upload artifact with:
pnpm verify:zipThe command rebuilds the extension, creates
.output/ai-limits-0.4.4-chrome.zip, opens the archive, and verifies its
manifest, entrypoints, permissions, and forbidden-file rules.
The browser-session providers use private, unsupported session and usage interfaces. API-key providers use documented or reverse-engineered HTTP endpoints, but response shapes, authorization scopes, security challenges, or availability can still change without notice. AI Limits converts malformed or unavailable responses into bounded health states, but cannot guarantee continuous compatibility.
Read CONTRIBUTING.md before submitting a change. This project uses GitHub Issues for public support and bug reports. Do not include cookies, access credentials, private usage data, or other secrets in an issue.
Thanks to LINUX DO for providing a space for Chinese developers to exchange ideas and feedback. This acknowledgement does not imply affiliation or official endorsement.
MIT © 2026 TiantianFlow
