Skip to content

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - schemann/claude-multi-usage: Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts · GitHub
Skip to content

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

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

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

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

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

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

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - schemann/claude-multi-usage: Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts · GitHub
Skip to content

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - schemann/claude-multi-usage: Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts · GitHub
Skip to content

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

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

Repository files navigation

Claude Multi Usage

A lightweight macOS menu-bar app that tracks the usage limits of multiple Claude accounts side by side - the 5h session window, the 7-day window, and any model-scoped weekly limits (e.g. Fable) - with reset-time and threshold notifications.

The menu-bar label shows the peak utilization across all your accounts at a glance, tinted orange/red as you approach the limit.

Note

Not affiliated with Anthropic. This is an independent tool that reads your own account usage through the same OAuth API that Claude Code uses.

Features

  • Multi-account - track as many Claude accounts as you like, one row each.
  • All windows - 5h session, 7-day, and model-scoped weekly limits, each with its own progress bar, percentage, and relative reset time.
  • Menu-bar label - shows the highest utilization across all accounts; turns orange at 80% and red at 90%.
  • Notifications - a local notification when a window resets, plus a warning when a window crosses 80% / 90%.
  • Rename accounts - give each account a friendly name; its email stays visible so you always know which account is which.
  • Localized - English, German, French, Italian, Spanish (follows your macOS system language).
  • Auto-refresh - polls every 15 / 30 / 60 minutes (your choice) and refreshes when you open the menu if the data is stale.

Privacy & how it works

Each account gets its own independent OAuth session. You log in once per account through the browser (PKCE flow), and the app keeps its own refresh-token chain in ~/.config/claude-multi-usage/accounts.json (file mode 0600).

  • It does not read or touch Claude Code's keychain or tokens - no collision, no keychain password prompts, Claude Code stays untouched.
  • Usage numbers are never stored locally. They are fetched live from https://api.anthropic.com/api/oauth/usage, one call per account per refresh interval. Reset times arrive in the same response.
  • No telemetry, no third-party servers. The only network calls are the OAuth token endpoint and the usage endpoint, both at Anthropic.

Requirements

  • macOS 13 (Ventura) or later
  • To build from source: a Swift 5.9+ toolchain (Xcode 15+ or the Swift command line tools)

Install

Download a release

Grab the latest .zip from the Releases page, unzip it, and move ClaudeMultiUsage.app to your Applications folder.

Releases built with a configured Developer ID are signed and notarized by Apple and open normally. If a build is only ad-hoc signed (no Developer ID configured), Gatekeeper will warn on first launch - either right-click the app and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/ClaudeMultiUsage.app

Build from source

git clone https://github.com/schemann/claude-multi-usage.git
cd claude-multi-usage
make run

make run builds a release binary, assembles the .app bundle, codesigns it, and launches it. Signing defaults to ad-hoc; to use your own Apple Developer identity (recommended for a stable signature across rebuilds):

make run IDENTITY="Apple Development: Your Name (TEAMID)"

Usage

  1. Click the gauge icon in the menu bar.
  2. Click Add account - the browser opens the Claude login.
  3. Log in as the account you want, authorize, and copy the code shown.
  4. Back in the app, click Connect from clipboard (or paste code#state manually and click Connect).
  5. Repeat for each account. Hover a row for the rename (pencil) and remove (trash) buttons.

If a refresh token dies, the row shows "Expired - reconnect"; just add that account again.

Development

The app is a single SwiftPM executable target packaged into a signed .app bundle (a proper bundle + bundle id is required because UNUserNotificationCenter crashes otherwise; LSUIElement + the .accessory activation policy make it menu-bar-only with no dock icon).

make build # swift build -c release
make bundle # build + assemble + codesign the .app
make run # bundle + launch
make clean

Localized strings live in Sources/ClaudeMultiUsage/Resources/<lang>.lproj/. To add a language, add a <lang>.lproj/Localizable.strings and list it in CFBundleLocalizations in Info.plist.

Acknowledgements

Descended from the ideas in Blimp-Labs/claude-usage-bar, re-architected for multiple accounts.

License

MIT © Daniel Schemann

About

Menu-bar app tracking 5h/7d usage limits across multiple Claude accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages