- Added Nano-GPT provider support across the menu app and CLI (#76).
- Added Codex LB account discovery and improved Codex Spark usage parsing (#74, #77).
- Added Gemini CLI auto-detection with account-aware labeling and metadata support (#75).
- Improved menu/status panel presentation and compact menu bar icon width behavior (#79, #80).
- #80 Reduce status bar icon width on the Mac Menu Bar
- #79 Align status panel styling
- #77 Add Codex Spark window grouping and fallback parsing
- #76 Add Nano-GPT provider across app and CLI
- #75 Add Gemini CLI auto-detection
- #74 Add Codex LB account discovery to status bar menu
Automatically monitor all your AI provider usage from OpenCode in real-time from the macOS menu bar.
brew tap opgginc/opencode-bar
brew install --cask opencode-barDownload the latest .dmg file from the Releases page.
OpenCode Bar automatically detects and monitors all AI providers registered in your OpenCode configuration. No manual setup required - just install and see your usage across all providers in one unified dashboard.
| Provider | Type | Key Metrics |
|---|---|---|
| OpenRouter | Pay-as-you-go | Credits balance, daily/weekly/monthly cost |
| OpenCode Zen | Pay-as-you-go | Daily history (30 days), model breakdown |
| GitHub Copilot Add-on | Pay-as-you-go | Usage-based billing after exceeding quota |
| Claude | Quota-based | 5h/7d usage windows, Sonnet/Opus breakdown |
| Codex | Quota-based | Primary/Secondary quotas, plan type |
| Gemini CLI | Quota-based | Per-model quotas, multi-account support with email labels and account ID details |
| Nano-GPT | Quota-based | Daily/monthly unit quotas, USD/NANO balance |
| Kimi for Coding (Kimi K2.5) | Quota-based | Usage limits, membership level, reset time |
| Z.AI Coding Plan | Quota-based | Token/MCP quotas, model usage, tool usage (24h) |
| Synthetic | Quota-based | 5h usage limit, request limits, reset time |
| Antigravity | Quota-based | Local language server monitoring |
| Chutes AI | Quota-based | Daily quota limits (300/2000/5000), credits balance |
| GitHub Copilot | Quota-based | Daily history, overage tracking |
- Antigravity/Gemini
NoeFabris/opencode-antigravity-auth(writes~/.config/opencode/antigravity-accounts.json)jenslys/opencode-gemini-auth(writesgoogle.oauthin OpenCodeauth.json)- Gemini CLI OAuth creds (writes
~/.gemini/oauth_creds.jsonfor email/account ID metadata; overlaps are merged with Antigravity accounts)
- Claude:
anomalyco/opencode-anthropic-auth
- Codex:
Soju06/codex-lb(writes~/.codex-lb/)
- Codex
- Codex for Mac - Auto-detected through
~/.codex/auth.json - Codex CLI - Auto-detected through
~/.codex/auth.json
- Codex for Mac - Auto-detected through
- Claude Code CLI - Keychain-based authentication detection
- Zero Configuration: Reads your OpenCode
auth.jsonautomatically - Multi-path Support: Searches
$XDG_DATA_HOME/opencode,~/.local/share/opencode, and~/Library/Application Support/opencode - Dynamic Updates: New providers appear as you add them to OpenCode
- Smart Categorization: Pay-as-you-go vs Quota-based providers displayed separately
- Menu Bar Dashboard: View all provider usage at a glance
- Visual Indicators: Color-coded progress (green → yellow → orange → red)
- Detailed Submenus: Click any provider for in-depth metrics
- Auth Source Labels: See where each account token was detected (OpenCode, VS Code, Keychain, etc.)
- Gemini Account Labels: Shows
Gemini CLI (email)when email is available, with fallback toGemini CLI #N
- Daily Tracking: View request counts and overage costs
- EOM Prediction: Estimates end-of-month totals using weighted averages
- Add-on Cost Tracking: Shows additional costs when exceeding limits
- Per-Provider Plans: Configure your subscription tier for quota-based providers
- Cost Tracking: Accurate monthly cost calculation based on your plan
- Orphaned Plan Cleanup: Detect and reset stale subscription entries that no longer match accounts
- Launch at Login: Start automatically with macOS
- Parallel Fetching: All providers update simultaneously for speed
- Auto Updates: Seamless background updates via Sparkle framework
# Clone the repository
git clone https://github.com/opgginc/opencode-bar.git
cd opencode-bar
# Build
xcodebuild -project CopilotMonitor/CopilotMonitor.xcodeproj \
-scheme CopilotMonitor -configuration Debug build
# Open the app (auto-detect path)
open "$(xcodebuild -project CopilotMonitor/CopilotMonitor.xcodeproj -scheme CopilotMonitor -configuration Debug -showBuildSettings 2>/dev/null | sed -n 's/^[[:space:]]*BUILT_PRODUCTS_DIR = //p' | head -n 1)/OpenCode Bar.app"Requirements:
- macOS 13.0+
- Xcode 15.0+ (for building from source)
- OpenCode installed with authenticated providers
- Install OpenCode: Make sure you have OpenCode installed and authenticated with your providers
- Launch the app: Run OpenCode Bar
- View usage: Click the menu bar icon to see all your provider usage
- GitHub Copilot (optional): Automatically detected via browser cookies (Chrome, Brave, Arc, Edge supported)
OpenCode Bar includes a powerful CLI for querying provider usage programmatically.
# Option 1: Install via menu bar app
# Click "Install CLI" from the Settings menu
# Option 2: Manual installation
bash scripts/install-cli.sh
# Verify installation
opencodebar --help# Show all providers and their usage (default command)
opencodebar status
# List all available providers
opencodebar list
# Get detailed info for a specific provider
opencodebar provider claude
opencodebar provider gemini_cli
# Output as JSON (for scripting)
opencodebar status --json
opencodebar provider claude --json
opencodebar list --json$ opencodebar status
Provider Type Usage Key Metrics
─────────────────────────────────────────────────────────────────────────────────
Claude Quota-based 77% 23/100 remaining
Codex Quota-based 0% 100/100 remaining
Gemini CLI (user1@gmail.com) Quota-based 0% 100% remaining
Gemini CLI (user2@company.com) Quota-based 15% 85% remaining
Kimi for Coding Quota-based 26% 74/100 remaining
OpenCode Zen Pay-as-you-go - $12.50 spent
OpenRouter Pay-as-you-go - $37.42 spent$ opencodebar status --json
{
"claude": {
"type": "quota-based",
"remaining": 23,
"entitlement": 100,
"usagePercentage": 77,
"overagePermitted": false
},
"gemini_cli": {
"type": "quota-based",
"remaining": 85,
"entitlement": 100,
"usagePercentage": 15,
"overagePermitted": false,
"accounts": [
{
"index": 0,
"email": "user1@gmail.com",
"accountId": "100663739661147150906",
"remainingPercentage": 100,
"modelBreakdown": {
"gemini-2.5-pro": 100,
"gemini-2.5-flash": 100
}
},
{
"index": 1,
"email": "user2@company.com",
"accountId": "109876543210987654321",
"remainingPercentage": 85,
"modelBreakdown": {
"gemini-2.5-pro": 85,
"gemini-2.5-flash": 90
}
}
]
},
"openrouter": {
"type": "pay-as-you-go",
"cost": 37.42
}
}- Monitoring: Integrate with monitoring systems to track API usage
- Automation: Build scripts that respond to quota thresholds
- CI/CD: Check provider quotas before running expensive operations
- Reporting: Generate usage reports for billing and analysis
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Authentication failed |
| 3 | Network error |
| 4 | Invalid arguments |
─────────────────────────────
Pay-as-you-go: $37.61
OpenRouter $37.42 ▸
OpenCode Zen $0.19 ▸
─────────────────────────────
Quota Status: $219/m
Copilot 0% ▸
Claude: 60%, 100% ▸
Codex 100% ▸
Z.AI Coding Plan 99% ▸
Gemini CLI (user1@gmail.com) 100% ▸
─────────────────────────────
Predicted EOM: $451
─────────────────────────────
Refresh (⌘R)
Auto Refresh ▸
Settings ▸
─────────────────────────────
Version 2.1.0
Quit (⌘Q)
| Group | Format | Description |
|---|---|---|
| Pay-as-you-go | Pay-as-you-go: $XX.XX |
Sum of all pay-as-you-go provider costs (OpenRouter + OpenCode Zen) |
| Quota Status | Quota Status: $XXX/m |
Shows total monthly subscription cost if any quota-based providers have subscription settings configured. If no subscriptions are set, shows just "Quota Status". |
- Menu Bar Display: Choose one of
Total Cost,Icon Only, orOnly Show. - Critical Badge: Toggle on/off to show or hide the critical-usage badge.
- Show Provider Name: Toggle on/off to include provider names in status bar text.
Note: Subscription settings are only available for quota-based providers. Pay-as-you-go providers do not have subscription options since they charge based on actual usage.
Terminology:
Status Bar Percentmeans the single representative percentage shown in the macOS top status bar text.Dropdown Detail Percentsmeans the multi-window percentages shown in provider rows inside the opened dropdown menu.Status Bar Percent Rule:
Status Bar Percentuses one fixed priority:Weekly→Monthly→Daily→Hourly→ fallback aggregate. If multiple values exist in the same priority window, the highest value is shown (for example, Claude weekly picks max of 7d/Sonnet/Opus). InRecent Quota Change Only, provider selection is based on change, but the shown percentage is the provider's current priority-based usage.Dropdown Detail Percents Rule: top-level menu rows keep multi-window percentages when available.
- Token Discovery: Reads authentication tokens from OpenCode's
auth.json(with multi-path fallback) - Cookie Detection: Finds GitHub Copilot sessions from Chrome, Brave, Arc, or Edge (with profile support)
- Parallel Fetching: Queries all provider APIs simultaneously
- Smart Caching: Falls back to cached data on network errors
- Graceful Degradation: Shows available providers even if some fail
- Local Only: All data stays on your machine
- No Third-party Servers: Direct communication with provider APIs
- Read-only Access: Uses existing OpenCode tokens (no additional permissions)
- Browser Cookie Access: GitHub Copilot reads session cookies from your default browser (read-only, no passwords stored)
The app searches for auth.json in these locations (in order):
$XDG_DATA_HOME/opencode/auth.json(if XDG_DATA_HOME is set)~/.local/share/opencode/auth.json(default)~/Library/Application Support/opencode/auth.json(macOS fallback)
- Make sure you're signed into GitHub in a supported browser (Chrome, Brave, Arc, or Edge)
- The app reads session cookies from browser profiles—no manual login required
- Check that your browser has active GitHub cookies (try visiting github.com)
The app dynamically searches for the opencode binary in:
- Current PATH (
which opencode) - Login shell PATH
- Common install locations:
~/.opencode/bin/opencode,/usr/local/bin/opencode, etc.
Contributions are welcome! Please submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Setup Git Hooks (run once after clone):
This configures pre-commit hooks for:
make setup
- SwiftLint: Checks Swift code style on staged
.swiftfiles - action-validator: Validates GitHub Actions workflow files
- SwiftLint: Checks Swift code style on staged
- Make your Changes
- Commit your Changes (
git commit -m 'Add some AmazingFeature')- Pre-commit hooks will automatically check your code
- Fix any violations or use
git commit --no-verifyto bypass (not recommended)
- Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project uses SwiftLint and action-validator to maintain code quality:
- Pre-commit Hook: Runs on
git commit(setup viamake setup)- SwiftLint for
.swiftfiles - action-validator for
.github/workflows/*.ymlfiles
- SwiftLint for
- GitHub Actions: Runs on all pushes and pull requests
- Manual Check:
make lint(ormake lint-swift,make lint-actions)
MIT License - See LICENSE file for details.
- OpenCode - The AI coding assistant that powers this monitor
- GitHub Copilot
Made with tiredness for AI power users

