Know whether your AI subscription will last — and how much you are leaving unused.
A native macOS menu-bar dashboard for subscription quotas, reset forecasts,
local token costs, model usage, and provider status.
Download the latest release · Build from source · 中文
Vibe Bar brings ChatGPT/Codex, Claude Code, Gemini Web, AntiGravity, Grok, and a growing set of coding-plan providers into one quiet desktop surface. It answers two questions that raw quota percentages do not:
- Will this quota last until its next reset? A personal forecast combines wall-clock pace, recent burn, reset history, workday/hour patterns, and confidence bounds.
- Am I paying for quota I never use? Reset-cycle history makes likely pre-reset waste visible before the window disappears.
- Reset-aware quota forecasts —
Learning,Enough,Watch,At risk,Surplus, projected run-out time, time-only pace, and forecast confidence. - Local cost analytics — today, yesterday, 7-day, 30-day, and all-time spend and tokens, plus per-model ranking.
- Usage history — daily/weekly/monthly cost charts, reset-cycle fill history, yearly heatmaps, and hour-of-week activity maps.
- Live provider status — OpenAI, Anthropic, Google AI, SpaceXAI, and Cursor incidents and component uptime in the same place as quota data.
- Two floating layouts — a spacious gauge view and a compact view that can stay pinned above your work.
- End-to-end encrypted remote machines — outbound-only Linux Probes can join selected cost/token totals without giving Relay or Control plaintext.
- Local-first usage — no telemetry or hosted plaintext analytics backend; the optional account/control service stores workspace/device metadata only.
Quota, cost, provider status, model ranking, yearly activity, and working-hour patterns share one set of time ranges instead of living in separate provider dashboards.
Keep every active quota visible on a second display or above a full-screen workspace. The same quota model is available in two genuinely different densities.
Each core provider gets the same layout framework: quota and reset-cycle history on the left; cost, models, status, yearly activity, and working-hour patterns on the right.
The separate VibeBar Probe can observe supported CLI logs on a systemd Linux machine without opening an inbound port. Probe facts are buffered locally, encrypted to the active Core, and routed through an opaque Relay. Each remote machine is excluded from totals until you explicitly enable Include in totals; selected usage then joins this Mac's local snapshots across Overview and the four core cost pages.
See the Remote Probe guide for binary installation, enrollment, updates, rollback, and the Web/iOS E2EE freshness model.
The Misc page keeps provider-specific quota semantics intentionally simple and scannable. Supported integrations include OpenCode Go, Ollama Cloud, Zhipu GLM, Xiaomi MiMo, Kimi, MiniMax, Alibaba Bailian, Volcengine Coding/Agent Plans, and Tencent Hunyuan.
Vibe Bar can answer your coding agent's questions about your own usage. While the app is running it exposes a read-only MCP server on a Unix domain socket in your home directory — no network port, no API key — so Claude Code, Codex CLI, Cursor or any other stdio MCP client can ask "how much Claude do I have left?", "who burned the most tokens this month?" or "find my session about the parser".
Set it up by pasting this into any agent that can fetch a URL:
Fetch and execute the appropriate instructions to set me up for Vibe Bar from https://raw.githubusercontent.com/AstroQore/vibe-bar/main/docs/agent-setup/prompt.md
Or configure it by hand — every client runs the same command:
claude mcp add --scope user vibebar -- "/Applications/Vibe Bar.app/Contents/MacOS/VibeBar" --mcp-stdioSettings → MCP Server has the switch, the socket path, and a copy button for each client. Everything agents can reach is read-only except an opt-in "refresh my quota" tool; credentials are never exposed and emails are masked.
Choose Remaining or Used percentages, refresh on a timer or when the popover opens, set an open-refresh cooldown, launch at login, and control provider visibility and ordering from one two-column settings window.
| Surface | Quota and status | Cost and activity sources |
|---|---|---|
| ChatGPT / Codex | Codex subscription windows, Spark, OpenAI status | ~/.codex/sessions/**/*.jsonl |
| Claude Code | 5 Hours, Weekly, Fable, Anthropic status | ~/.claude/projects/**/*.jsonl |
| Gemini + AntiGravity | Gemini Web quotas and local AntiGravity language-server quotas | Local Gemini/AntiGravity usage records |
| Grok + Cursor | Grok quota, Cursor Models, Other Models, Grok Bot weekly quota, SpaceXAI + Cursor status | Local Grok records + Cursor account usage events; Grok Bot is quota-only |
| Misc providers | Provider-specific coding/token plan endpoints | Quota-only unless an adapter exposes local usage |
Provider contracts can change without notice. Vibe Bar keeps refresh errors visible, preserves the last known good snapshot, and avoids presenting stale data as a successful update.
Vibe Bar is one app built from two SwiftPM targets plus one package of its own that lives in a separate repository.
| Piece | What it is | Where it lives |
|---|---|---|
VibeBarApp |
The menu-bar item, the popover, the Mini Window, the Workbench, Settings. AppKit + SwiftUI. | This repository |
VibeBarCore |
Quota, usage, cost, pricing, forecasting, provider adapters, remote sync — everything testable without a window. | This repository |
agent-session-kit |
Reading what the coding agents left on disk: session discovery and parsing per harness, the full-text session index, deletion planning, harness naming, and the local MCP Unix-socket / stdio transport. | Separate public repository |
The kit was extracted from this repository so that the "what did my agents
actually do" half is usable — and auditable — on its own. It knows nothing
about quotas, plans, or prices; that vocabulary stays in VibeBarCore. It
has no third-party dependencies of its own, and it is AGPL-3.0-only, same as
Vibe Bar.
How a kit release reaches you. Package.swift pins the kit to an exact
tag, and SwiftPM links it statically — it is compiled into the app's
executable, not shipped as a framework you could swap. So a new kit release
changes nothing on your Mac until Vibe Bar bumps that pin and ships a build.
There is no separate component to update, and Vibe Bar will never offer to
update one.
Seeing which one you have. Settings › System › Components shows the
agent-session-kit version compiled into the build you are running, with
links to that release's notes and the repository, and a Check for kit
updates button. The button is the only thing that contacts GitHub — there is
no check at launch and none on a timer — and when a newer kit exists the row
says it ships with the next Vibe Bar build, because that is the only way
it can arrive.
Vibe Bar has no telemetry pipeline or hosted plaintext analytics backend. Local and remote-Probe usage analysis stays on the active Core. The optional hosted account/control service stores workspace, enrollment, Relay directory, and audit metadata only. Derived state stays under:
~/.vibebar/
├── settings.json
├── quotas/
├── cost_snapshots/
├── scan_cache/
├── pricing_sources/
├── pricing_cache.json
├── pricing_refresh_status.json
├── service_status.json
├── remote_core.json
├── remote_usage.sqlite3
├── cost_history.json
└── mcp.sock (only while the app runs, mode 0600)
- The MCP socket is created 0600 inside the 0700
~/.vibebar/, is never bound to a network interface, and is removed when Vibe Bar quits. - CLI credential and session files are read-only inputs. The one exception is whole-session deletion from the Workbench's Sessions page, performed only at your explicit request and never editing a session file's contents.
- Vibe Bar-owned cookies and provider secrets live inside one versioned Keychain Vault, not one prompt-generating item per secret.
- Privacy Mode clears derived cost data and keeps cost history off disk while enabled.
- Retention is configurable, and Cost Data can be cleared manually.
Vibe Bar intentionally runs without the App Sandbox. Browser-cookie import
and the local AntiGravity language-server probe require capabilities that the
sandbox blocks. The app is open source, reads only the provider inputs it
needs, and writes application state only under ~/.vibebar/ and its Keychain
Vault. See AGENTS.md
for the full trade-off.
- Download the Apple-silicon ZIP from GitHub Releases.
- Move
Vibe Bar.appto/Applications. - Launch it from Applications or Spotlight.
Release builds are ad-hoc signed and currently not notarized. If Gatekeeper blocks the first launch, right-click the app and choose Open. No Apple Developer account is required to build or run Vibe Bar locally.
Starting with the first Sparkle-enabled release, Vibe Bar checks the signed update feed once a day. Settings → System lets you choose the stable Main channel or the preview Dev channel; Dev also receives all Main releases. You can also choose Check for Updates… from a menu-bar item's context menu or Settings. Vibe Bar always asks before installing an update; the first Sparkle-enabled release still needs to be installed manually once.
Requirements: macOS 26+, Xcode 26, and Swift 6.2+.
git clone https://github.com/AstroQore/vibe-bar.git
cd vibe-bar
swift test
./Scripts/build_app.sh release
open ".build/Vibe Bar.app"The package contains the VibeBar executable and the testable VibeBarCore
library. The packaging script assembles .build/Vibe Bar.app, copies its
resources and Sparkle framework, and ad-hoc signs the bundle.
- CONTRIBUTING.md — concise human contributor guide.
- AGENTS.md — complete repository rules for coding agents.
- AGENT-PR.md — branch, verify, push, and open a PR.
- AGENT-DEPLOY.md — build, package, verify, and optionally install on a Mac.
- SECURITY.md — report vulnerabilities without exposing secrets.
Vibe Bar is early public-release software. Provider APIs and quota contracts move quickly; focused adapters, fixtures, and UI refinements are welcome.
Vibe Bar is an independent project, but it stands on work shared by the wider coding-agent community:
- CodexBar is the primary technical reference for the macOS menu-bar quota experience. Several browser-cookie and Keychain utilities, selected provider behaviors, and the AntiGravity local-probe flow were adapted from or reimplemented with reference to it.
- CC Switch informed the unified Skills workflow and remains an interoperability reference for existing cross-agent skill layouts.
- CLIProxyAPI and its ecosystem informed our understanding of multi-provider CLI account and quota workflows. Vibe Bar does not embed, launch, or require CLIProxyAPI.
- ccusage informed local session-cost parsing and pricing semantics.
- LiteLLM, models.dev, and Portkey Models maintain the public model-pricing catalogs Vibe Bar refreshes and merges for cost attribution. AstroQore VibeBar Model Pricing carries the small Vibe Bar-specific supplement layer.
Vibe Bar also directly uses SweetCookieKit for local browser cookie access and Sparkle for signed app updates. See THIRD_PARTY_NOTICES.md for the relationship and license details; complete applicable license texts live under Resources/ThirdPartyLicenses and are included in packaged app bundles. These projects are independent from Vibe Bar; acknowledgement does not imply affiliation or endorsement.
Vibe Bar is licensed under the GNU Affero General Public License v3.0 only.









