Quotify is a lightweight Windows system tray application designed to monitor your API usage quotas across various AI providers. It displays a compact, beautiful popup flyout showing your current consumption, remaining credits, and quota reset times.
Quotify is heavily inspired by CodexBar and brings a native, modern, and secure solution for Windows developers to keep track of their AI budgets at a glance.
- GPUI-powered UI: Uses
GPUIandgpui-componentfor a GPU-accelerated interface with standard inputs, selectors, switches, sliders, tags, and buttons. - Configurable Windows Materials: Supports system/light/dark themes and explicit Mica, Mica Alt, Acrylic, or no backdrop while preserving the native Windows 11 DWM material layer.
- Native Flyout and Window Modes: Runs as a taskbar-anchored animated flyout in normal use, or as a regular resizable
Quotify Windowfor accessibility and UI automation. - Windows Credential Manager Security: API keys, session tokens, and browser cookies are securely stored using Windows Credential Manager (
quotify/<provider>/<field>), ensuring no secrets are stored in plain text. - WebView Login Fallback: OpenCode, MiMo, and Ollama can acquire and securely store credentials through an embedded WebView2 session. Automatic login can be disabled so authentication starts only from the provider card's login button.
- Consent-based Agent Discovery: On first launch, Quotify asks before checking known local credential locations, environment variables, and installed coding-agent CLIs. Discovery stays local and can be changed or rerun from Settings.
- Smart Local History Caching: Usage snapshots are cached locally in
%APPDATA%\quotify\usage-history.jsonso you can instantly view your last fetched usage stats while background fetch is running. - Per-window Usage History: Session, weekly, monthly, billing-cycle, and budget windows retain independent semantic histories even when an upstream provider renames or moves a quota field.
- Expandable Usage Trends: Each provider card can expand its 7-day trend summary into one grouped histogram with a color legend for every quota window, while preserving gaps where no samples were recorded.
- Direct Drag-to-Reorder: Drag a provider card to move it directly through the list without a separate preview. The resulting order is stored in the config file.
- Provider Validation in Settings: The searchable provider selector is alphabetized, supports setting the primary provider, and can test credentials through the same real fetch path used by the background service.
- Native Windows Notifications: Optionally receive quota-reset, usage-threshold, and silent background-refresh failure notifications through Windows. Notifications are completely disabled by default.
- Windows Desktop Facilities: Supports running as a single instance, automatically registering to start with Windows, and writing rotating daily diagnostic logs to
%APPDATA%\quotify\logs. - CDP Cookie Synchronizer: Includes a PowerShell script to fetch and sync session cookies via Chrome DevTools Protocol (CDP) for providers that require active browser sessions.
Quotify's current catalog mirrors the 66-provider CodexBar snapshot used by the project through 65 provider cards. OpenCode and OpenCode Go intentionally share one card, configuration, cookie, and history identity.
Claude, Codex, OpenAI, Gemini, Antigravity, DeepSeek, OpenRouter, Moonshot, Mistral, Grok, z.ai, MiniMax, Kimi, StepFun, Doubao, Venice, Crof, Synthetic, and xAI.
OpenCode, ClinePass, GitHub Copilot, Cursor, Windsurf, Factory Droid, Devin, Zed, Command Code, Qoder, Codebuff, Kiro, Kilo Code, Augment, JetBrains AI, Amp, and MiMo.
Azure OpenAI, AWS Bedrock, Vertex AI, Ollama, LiteLLM, LLM Proxy, sub2api, ClawRouter, Wayfinder, DeepInfra, and GroqCloud.
ElevenLabs, Warp, Deepgram, Abacus AI, Alibaba Token, Alibaba Coding Plan, Qwen Cloud, T3 Chat, Manus, Perplexity, Poe, Sakana AI, Chutes, NeuralWatt, LongCat, ZenMux, ai&, and ZoomMate.
Codex, Claude, the merged OpenCode integration, and Cursor retain their individual
quota windows (for example 5-hour/session, weekly, monthly, or billing-cycle lanes)
rather than collapsing a provider into one maximum percentage. Subscription tiers
are surfaced when the upstream response or local credentials expose them. Codex
windows are classified from their declared duration instead of assuming that
primary_window always means 5 hours: if OpenAI temporarily exposes only the
7-day quota in that field, Quotify continues to display and trend it as Weekly.
Available Codex reset credits and their expiration times are shown separately from
quota progress.
The interface can follow the Windows display language or be set explicitly to English, Simplified Chinese, Traditional Chinese, or Japanese from Settings.
DeepSeek exposes balances rather than a usage ledger. Quotify therefore derives
Today Spend, Week Spend (Monday-based), and Month Spend from local-time
balance samples. Each percentage is observed spend / (period opening balance + detected top-ups and grants). Nearby samples around a period boundary establish
the opening balance; otherwise the first sample inside the period is used. Long
offline gaps are not guessed, so these figures are conservative estimates and are
most accurate while Quotify refreshes continuously.
- Windows 10/11 (Building on non-Windows systems will fail)
- Rust toolchain (Edition 2024, Rust
$\ge$ 1.85)
-
Initialize the Default Configuration:
cargo run -- initThis creates your local configuration folder and writes a default template.
-
Verify Configuration & Fetch Quotas:
# Fetch all configured providers cargo run -- fetch # Fetch a specific provider cargo run -- fetch --provider claude
-
Start the System Tray App:
cargo run -- tray -
Open a Regular Window for UI Validation:
cargo run -- windowThis opens a normal, resizable
Quotify Windowthat uses the real local configuration and provider data without creating another tray icon, writing duplicate history samples, or sending notifications. It can run alongside the tray app and provides a stable window target for accessibility and UI automation tools. -
Build a Production Release:
cargo build --releaseOptimized with
opt-level = "z", LTO, and stripped symbols for a compact binary.
The configuration directory is located at:
%APPDATA%\quotify\
quotify.toml: Stores non-sensitive settings like refresh intervals, proxy setup, and active provider ordering. Seeconfig.example.tomlfor options.- Credential Manager: Secret fields (API keys, cookies) configured via the settings UI are saved securely under Windows Credential Manager.
New installations do not scan automatically. The first-launch onboarding prompt can enable a local scan and activate detected coding-agent providers. The scan checks only known local credential locations, environment variables, and installed CLI commands; it does not upload credentials or file contents.
Discovery can be disabled or rerun from Settings β General Settings β Local Agent Discovery. When disabled, Quotify refreshes only providers that were explicitly enabled in Provider Settings.
The Settings page exposes system, dark, and light themes plus Mica,
Mica Alt, Acrylic, and None backdrop choices. Their equivalent config
values are stored under [general]:
[general]
theme = "system"
backdrop = "mica_alt"
auto_webview_login = trueWhen automatic WebView login is enabled, a supported provider can open WebView2
after its saved credentials are missing or rejected. When it is disabled, the
provider card shows a login action after authentication fails. OpenCode reuses
the persistent WebView profile and, when a workspace ID is known, resumes at
https://opencode.ai/workspace/{workspace_id}/go.
All notifications are disabled by default. Set the master enabled switch and then opt in to only the events you want:
[notifications]
enabled = false
monthly_resets = false
weekly_resets = false
five_hour_resets = false
usage_threshold_enabled = false
usage_threshold_percent = 80.0
silent_refresh_failures = falseReset notifications are emitted after a refresh detects that a provider's monthly, weekly, or 5-hour quota has reset. Threshold notifications use the provider's reported usage percentage. silent_refresh_failures covers failed background refreshes that would otherwise have no visible UI. Windows notification and quiet-hours settings are respected.
30-day budgets are ordinary, non-sensitive configuration values and remain in quotify.toml; they are not stored in Credential Manager. Only positive USD amounts are used:
[provider_budgets]
openai = 100.0
claude = 100.0
bedrock = 100.0Budget progress is supported for OpenAI, the Claude Admin API, AWS Bedrock,
DeepInfra, LiteLLM, ClawRouter, ai&, and xAI when the provider returns a
compatible USD spend window. OpenAI, Claude, Bedrock, ai&, and xAI use the latest
30-day spend window: OpenAI, Claude, and Bedrock query the latest 30 complete UTC
days, while ai& and xAI use their upstream 30-day totals. Providers with a native
monthly/budget response retain that upstream window. Subscription quota data or
balance-only responses are not treated as spending. If spend data is unavailable,
the card shows Budget unavailable; opted-in silent-refresh failure notifications
fire once on that failure edge.
Omitting a provider removes its configured budget. The legacy CODEXBAR_BEDROCK_BUDGET environment variable remains accepted as an external fallback, but [provider_budgets].bedrock is preferred. Unset the environment variable as well when you want to disable a budget that was supplied through it.
Tip
Explicit Network Proxying
If you are behind a firewall, you can set [network].proxy in your quotify.toml to redirect requests. It supports HTTP, HTTPS, and SOCKS5 proxies:
[network]
proxy = "socks5://127.0.0.1:7890"Some providers require active browser cookies. In addition to the built-in WebView2 login path for OpenCode, MiMo, and Ollama, an interactive PowerShell helper can import cookies from a Chrome DevTools Protocol session. This is also useful for providers such as Cursor that do not use the built-in WebView flow:
# Run the interactive setup flow
.\scripts\get_cdp_cookies.ps1- Fetch and sync cookies for a specific provider:
.\scripts\get_cdp_cookies.ps1 -Provider mimo -OpenChrome -Sync
- Sync from an already running Chrome session with remote debugging (port 9222):
.\scripts\get_cdp_cookies.ps1 -Domain platform.xiaomimimo.com -Sync
This project includes a pre-configured GitHub Actions workflow:
- CI Checks: Automatically runs code formatting checks (
cargo fmt), clippy lints (cargo clippy), and runs unit tests on a Windows runner for every pull request and push to the main branches. - Automatic Releases: When you push a
vX.Y.Zversion tag, GitHub Actions will compile the production binary, create a new GitHub Release, and uploadquotify.exeas an asset.
Note
How to release a new version (replace X.Y.Z with the version from
Cargo.toml):
git tag vX.Y.Z
git push origin vX.Y.ZThis project is licensed under the MIT License. See LICENSE for details.
