Windows-first tray app for tracking AI coding subscription usage across providers in one place.
UsageBar is a fork of OpenUsage, redirected toward a Windows-native desktop experience instead of preserving upstream compatibility as the main constraint.
Windows alpha/beta builds are published as GitHub prereleases.
Release plan:
- Next public milestone: Alpha 2, as an unsigned Windows technical preview
- Windows: GitHub prerelease with a NSIS setup
.exe - macOS: still secondary while the Windows fork stabilizes
Download published builds from UsageBar releases.
Release process and preflight checks live in docs/releasing.md.
Alpha and beta Windows builds are distributed from GitHub Releases as a NSIS setup .exe.
Alpha 2 signing note: the Windows installer is intentionally unsigned while Authenticode signing is deferred. Windows may show Unknown publisher or SmartScreen warnings. Treat Alpha 2 as a technical preview for users comfortable with prerelease desktop software.
Install:
- Download the latest
UsageBar_*_x64-setup.exeasset from UsageBar releases. - Run the installer.
- Open UsageBar from the Start menu or tray.
- Open Settings, enable a provider, and follow that provider's setup instructions.
Uninstall:
- Use Windows Settings > Apps > Installed apps > UsageBar > Uninstall.
- If a local test build was installed manually, rerun the same installer and choose uninstall if Windows does not list it yet.
Local data:
- App settings, provider order, display preferences, and app-owned provider secrets live under
%APPDATA%\com.sunstory.usagebar. - Provider secrets saved by UsageBar on Windows are encrypted with Windows DPAPI in the app data directory.
- Some providers also read their own local CLI, IDE, browser, or cloud SDK files. Those paths are documented in each provider page.
- Legacy beta installs may still have old OpenUsage data under
%APPDATA%\com.sunstory.openusage; do not delete it until migration is verified.
UsageBar is still pre-release. Alpha 4 means a Windows user can install from GitHub, enable supported providers, refresh usage, understand where each number came from, and report issues with enough context to debug. The Alpha 4 installer is unsigned; Authenticode signing is deferred.
UsageBar lives in your Windows tray and shows you how much of your AI coding subscriptions you've used. Progress bars, badges, and clear labels. No dashboard hopping.
- One glance. All your AI tools, one panel.
- Always up-to-date. Refreshes automatically on a schedule you pick.
- Global shortcut. Toggle the panel from anywhere with a customizable keyboard shortcut.
- Lightweight. Opens instantly, stays out of your way.
- Plugin-based. New providers get added without updating the whole app.
- Local HTTP API. Read cached usage from
127.0.0.1:6736for local widgets, scripts, and dashboards. - Proxy support. Route requests through SOCKS5/HTTP proxies for restricted networks.
- Custom OAuth. Bring your own OAuth credentials for enterprise compliance.
Current Windows rollout status comes from each provider's plugin.json manifest in this fork.
Status meanings:
- Supported: intended to work on Windows from the documented setup path.
- Experimental: visible and testable on Windows, but setup, API shape, or live-account validation can still change.
- Scope: names the usage source. Provider-reported means the provider API or local provider database supplies the number directly. Estimated or telemetry-based means UsageBar derives it from local logs, quota counters, known pools, or manually supplied sessions. Each provider page contains the exact source and limitations.
| Provider | Windows status | Scope |
|---|---|---|
| Abacus AI | Experimental | API-key usage and credit details |
| Alibaba Coding Plan | Experimental | Coding Plan 5-hour, weekly, and monthly request quotas with region-aware auth |
| Amp | Experimental | Free tier, bonus, credits |
| Antigravity | Supported | All models |
| Augment | Experimental | Credits via signed-in Augment web Cookie header |
| Claude | Supported | Session, weekly, extra usage, local token usage (ccusage) |
| Codebuff | Experimental | Credit balance and weekly rate limit via API token or codebuff login credentials |
| Codex | Supported | Session, weekly, reviews, credits, managed multi-account selection |
| Copilot | Experimental | Premium, chat, completions |
| Cursor | Supported | Credits, total usage, auto usage, API usage, on-demand, CLI auth |
| DeepSeek | Experimental | API balance with paid and granted credit breakdown |
| Factory / Droid | Experimental | Standard and premium usage buckets |
| Gemini | Experimental | Gemini quota buckets and reported Code Assist tier |
| Grok | Experimental | CLI-authenticated billing credits and pay-as-you-go cap |
| JetBrains AI Assistant | Supported | Quota, remaining |
| Kilo | Experimental | Direct API-key usage endpoint |
| Kimi Code (Moonshot) | Experimental | Kimi CLI, kimi.com membership, session and weekly quota from local kimi login OAuth; optional official Moonshot API balance via https://api.moonshot.ai/v1/users/me/balance |
| Kiro | Experimental | Credits, bonus credits, overages tracking |
| MiniMax | Experimental | Coding Plan session usage, explicit reported plan when available |
| Mistral | Experimental | La Plateforme usage and billing details via signed-in session |
| Ollama | Supported | Plan, session, weekly |
| OpenCode | Supported | OpenCode Go subscription 5h, weekly, and monthly local CLI history; optional OpenCode Zen pay-as-you-go balance from a signed-in workspace session |
| OpenRouter | Experimental | Credits, balance, request-rate detail |
| Perplexity | Experimental | Recurring, purchased, and bonus credit pools via manual cookie/env auth |
| Synthetic | Experimental | Direct API-key quota endpoint |
| Vertex AI | Experimental | gcloud ADC OAuth plus Cloud Monitoring quota usage |
| Warp | Experimental | Request limits and plan badge from an undocumented app GraphQL operation |
| Windsurf | Experimental | Daily quota, weekly quota, extra usage balance |
| Zed | Experimental | Dashboard token spend via browser-backed cookie replay, with local telemetry fallback |
| Z.ai | Experimental | Session, weekly, web searches from undocumented subscription/quota endpoints |
Want a provider that's not listed? Open an issue.
- Windows is the primary tested platform for this fork. macOS and Linux remain secondary until the Windows release path is boring.
- Provider coverage is uneven:
Supportedmeans the Windows path is intended to work;Experimentalmeans setup, API shape, or live-account validation may still change. - Some providers report usage directly; others estimate from local history, known quota pools, telemetry logs, or manually supplied session cookies. Provider docs describe the source per integration.
- Prerelease auto-updates are intentionally conservative because GitHub's
releases/latestalias does not resolve prereleases. Prerelease builds may open the matching GitHub release page instead of installing in-app. - Authenticode-signed Windows artifacts and full crash-recovery expectations are full-release work, not an Alpha 4 promise.
UsageBar is a Tauri v2 desktop app with a Rust host and a React/TypeScript frontend. Provider integrations live as JavaScript plugins under plugins/ and are copied into the Tauri resource bundle for desktop execution.
- Rust host: tray/window lifecycle, local HTTP API, updater, credential storage, SQLite access, and guarded plugin host APIs.
- React frontend: tray panel, Settings window, provider setup, usage views, preferences, and update prompts.
- Plugin manifests: provider identity, platform support, icons, docs links, and capability declarations.
- Bundled plugins: generated by
bun run bundle:pluginsbefore dev/build so desktop resources match source plugins.
UsageBar is local-first. Secrets stay local. Provider APIs are called only when you explicitly enable and configure that provider, and credentials come from app settings, environment variables, browser/session cookies you provide, or OS credential storage depending on the provider.
- Secrets stay on the machine unless a provider plugin must call that provider's API to read usage.
- UsageBar does not send provider credentials, raw usage payloads, API keys, cookies, or app-owned provider secret files to UsageBar-owned services.
- Plugin host APIs are allowlisted and capability-gated for sensitive operations such as write-capable SQLite access.
- The WebView uses a restrictive starter content security policy.
- The optional local HTTP API binds to
127.0.0.1:6736. - Telemetry uses the app's analytics integration only for product diagnostics; provider usage payloads and credentials are not telemetry data.
- Crash logs are local support artifacts under
%LOCALAPPDATA%\com.sunstory.usagebarunless a user explicitly attaches sanitized logs to a report. Automatic crash upload is not part of the Alpha 1 promise.
This repository is no longer trying to stay narrowly aligned with upstream pull-request boundaries. The priority here is a clean Windows tray app, a plugin-first provider model, and pragmatic product decisions for this fork.
That means the fork can change UX, provider strategy, release packaging, and architecture when that is the right tradeoff for Windows.
Upstream lineage stays visible through the original OpenUsage link, fork history, and the upstream remote used for selective fixes. This repository should be read as its own product direction.
- Add a provider. Each one is just a plugin. See the Plugin API.
- Read usage locally. See the Local HTTP API.
- Fix a bug. Keep the change small, focused, and verified.
- Request a feature or report a bug. Open an issue. Include the provider, auth source, Windows-specific constraints, app version, and sanitized logs. See bug report notes.
- Share diagnostics safely. Include exact error text and timestamps, but do not attach API keys, cookies, raw credential files, or
provider-secrets.json.
Keep it simple. No feature creep, no AI-generated commit messages, test your changes.
UsageBar started from the OpenUsage codebase. This fork also borrows practical Windows ideas from CodexBar and provider reference patterns from ccusage where they fit.
Build from source
Warning: The
mainbranch may not be stable. It is merged directly without staging, so users are advised to use tagged versions for stable builds. Tagged versions are fully tested whilemainmay contain unreleased features.
- Tauri v2
- Rust
- React 19
- TypeScript
- Vite
- Tailwind CSS v4
- Zustand
- Vitest
bun run check
bun run test -- --runbun run check is the default local quality gate for TypeScript, JavaScript, JSON/config formatting, ESLint, and TypeScript typechecking. Rust formatting and linting are exposed as bun run format:rust:check and bun run lint:rust while existing Rust style debt is cleaned separately.
For a Windows beta-style build on this machine:
bun run release:check -- --release-tag v0.1.0-alpha.2
bun run build:release -- --bundles nsisIf TAURI_SIGNING_PRIVATE_KEY is unset, the helper automatically adds --no-sign so the local build can skip Tauri updater signatures. Windows installer builds require Authenticode material by default: WINDOWS_CERTIFICATE_BASE64 plus WINDOWS_CERTIFICATE_PASSWORD, WINDOWS_CERTIFICATE, or WINDOWS_CERTIFICATE_THUMBPRINT. The helper signs the final setup executable after the build so the Windows launch prompt can show the certificate publisher. The setup executable lands under src-tauri/target/release/bundle/nsis/.
For Alpha 2 unsigned technical-preview builds, set USAGEBAR_ALLOW_UNSIGNED_WINDOWS_INSTALLER=1; those installers can show Unknown publisher and trigger Windows SmartScreen's "unrecognized app" warning. Stable/public-confidence Windows builds should be Authenticode-signed; see docs/releasing.md.
Before pushing a release tag, run the same preflight with --require-clean so the tag is cut from a clean worktree.
