Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TokenBar

Know what your AI tools cost. Right from your menu bar.

ReleaseLicenseStarsmacOS 14+Swift 5.10


TokenBar is a lightweight macOS menu bar app that tracks token usage and spending across your AI coding tools. It auto-detects installed providers and shows real-time usage stats at a glance.

TokenBar screenshot

Features

  • Menu bar native -- lives in your macOS menu bar, always one click away
  • Auto-detection -- scans your system for installed AI tools on first launch
  • Real-time usage tracking -- monitors token consumption and cost via provider APIs
  • Multi-provider -- supports the tools developers actually use (see list below)
  • Keychain storage -- API keys are stored in macOS Keychain, never in plain text
  • Zero dependencies -- pure Swift, no Electron, no web views

Supported Providers

Usage Tracking (API-connected)

ProviderWhat's tracked
CursorPlan usage, token consumption
Claude CodeToken usage via Anthropic API
OpenAI / ChatGPTSpend, token usage, budget tracking
GitHub CopilotSeat usage, completions
CodexMulti-org usage tracking
Kilo CodeToken consumption
OpenCodeUsage stats

Auto-Detection (presence monitoring)

Aider, Amazon Q, Cline, Cody, Continue, Gemini, Minimax, Ollama, OpenRouter, Tabnine, Windsurf, Zai

TokenBar checks for installed apps, CLI tools, and VS Code/Cursor/Windsurf extensions to detect which providers you have.

Install

From source (recommended)

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make install

This builds a release binary, bundles it into TokenBar.app, and copies it to /Applications.

Development

git clone https://github.com/saphid/TokenBar.git
cd TokenBar
make run

Requirements

  • macOS 14 (Sonoma) or later
  • Swift 5.10+
  • Xcode Command Line Tools (xcode-select --install)

How It Works

┌─────────────────────────────────────────────────┐
│ macOS Menu Bar │
│ ┌───────┐ │
│ │ 42.5% │ ← TokenBar │
│ └───┬───┘ │
├───────────────────────┼─────────────────────────┤
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ ProviderManager │ │
│ │ Orchestrates providers, polling, │ │
│ │ config persistence, detection │ │
│ └──────┬──────────┬──────────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ ┌──▼───────┐ │
│ │ Cursor │ │ OpenAI │ │ Claude │ ... │
│ │ Provider │ │Provider │ │ Code │ │
│ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │
│ ┌──────▼──────────▼──────────▼───────┐ │
│ │ Provider APIs │ │
│ │ (polling on configurable │ │
│ │ intervals, usage endpoints) │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ macOS Keychain (API keys) │ │
│ │ UserDefaults (config, prefs) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘

Configuration

On first launch, TokenBar scans your system and enables detected providers automatically. Open Settings (click the menu bar icon → gear) to:

  • Add or remove providers
  • Enter API keys (stored in Keychain)
  • Set monthly budgets
  • Configure display preferences
  • Reorder providers

The Settings UI uses a sidebar + detail panel layout (macOS System Settings style) -- no nested dialogs.

Project Structure

Sources/
├── TokenBar/ # App entry point
└── TokenBarLib/
├── Domain/ # Models, config schema, provider registry
├── Providers/
│ ├── Trackable/ # API-connected providers (Cursor, OpenAI, etc.)
│ └── DetectionOnly/ # Presence-detected providers (Aider, Ollama, etc.)
└── Views/ # SwiftUI views (Settings, menu bar popover)
Tests/
└── TokenBarTests/ # Unit tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Adding a new provider: Implement the RegisteredProvider protocol and add it to ProviderRegistry.all. For detection-only providers, define the file paths, commands, or extension patterns to check. For trackable providers, implement the API polling logic in a UsageProvider.

License

MIT -- see LICENSE for details.

Acknowledgments

Built with Swift and SwiftUI. No external dependencies.

About

AI token usage monitor for your macOS menu bar. Track spending across Cursor, Claude Code, OpenAI, Copilot, and more.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages