AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Every Claude account's limits, pace and spend — one click away in your macOS menu bar.
Developer toolsSwift · HTMLGitHub @Jeff909DevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
macOS menu bar app: limits, pace and API-equivalent spend for every Claude account, plus one-click terminal account switching. Unofficial.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A tiny macOS menu bar app that shows every Claude account's limits — 5-hour session, week, week per model
(Fable, …) — whether you are burning faster than the window allows, and what your Claude Code use on this Mac
would cost at API prices. Add accounts with Claude Code's own login (Google or email magic link) and switch the
terminal between them in one click.
Unofficial; not affiliated with Anthropic.Read the full README ↗A tiny macOS menu bar app that shows every Claude account's limits — 5-hour session, week, week per model (Fable, …) — whether you are burning faster than the window allows, and what your Claude Code use on this Mac would cost at API prices. Add accounts with Claude Code's own login (Google or email magic link) and switch the terminal between them in one click.
Unofficial; not affiliated with Anthropic.
curl -fsSL https://claude-code-usage.vercel.app/install.sh | bash
It downloads the latest release, puts Claude Usage.app in /Applications (quitting and replacing an older copy)
and opens it. The app isn't notarized yet, but macOS doesn't quarantine what curl downloads, so it opens without the
Open Anyway step. The script is scripts/install.sh; the site serves a copy of it.
Or by hand:
ClaudeUsage.zip from the latest release and unzip it.Claude Usage.app to /Applications.xattr -dr com.apple.quarantine "/Applications/Claude Usage.app".Requires macOS 14+ and Claude Code installed (claude on your PATH).
open "build/Claude Usage.app" --args --read-only, never by running Contents/MacOS/ClaudeUsage from a terminal. macOS 26 files the menu bar item under the terminal app that started it; if that terminal isn't allowed in the menu bar, the item is hidden and macOS keeps remembering it.make test # swift test
make test-install # scripts/install.sh against local zips, into a temp folder (never /Applications)
make app # build/Claude Usage.app
make icon # Resources/AppIcon.icns, drawn by scripts/make-icon.swift
make run # build and open it
make install # build and copy it to /Applications (quit the running app first)
make cli ARGS="--read-only status"
make release # build/ClaudeUsage.zip
Attach build/ClaudeUsage.zip to a GitHub release under that exact name: the site's download button and
install.sh fetch releases/latest/download/ClaudeUsage.zip. site/install.sh must stay a copy of
scripts/install.sh (make test-install checks it); redeploy the site after changing it.
Without a Developer ID the app is ad-hoc signed, so a browser download needs the Open Anyway step. To ship a notarized app instead, set up once:
security find-identity -v -p codesigning then lists Developer ID Application: Your Name (TEAMID).xcrun notarytool store-credentials claude-usage --apple-id <your Apple ID> --team-id <TEAMID> (it asks for the
password).Then release with:
DEVELOPER_ID_APP="Developer ID Application: Your Name (TEAMID)" NOTARY_PROFILE=claude-usage make release
release.sh signs with the hardened runtime and a secure timestamp, submits the app to Apple's notary service and
waits, staples the ticket to the app, and zips the stapled app.
/usage uses, called with each account's OAuth token.~/.claude.json → oauthAccount plus the Claude Code-credentials Keychain item.
"Use in terminal" swaps only those (MCP logins and settings are kept).claudeAiOauth in that item
(mcpOAuth and every other key are kept)./usr/bin/security. Values up to about 2 KB (they are hex-encoded) are passed on its stdin; larger ones
(Claude Code's item with MCP logins can be ~10 KB) are passed in its arguments for the moment of the call,
where another process running as your user could see them with ps.~/.claude/projects/**/*.jsonl with public API prices (pricing.json in
~/Library/Application Support/ClaudeUsage/ overrides them; after editing it, run make cli ARGS="reindex"
from a checkout of this repo).Run these from the installed app in /Applications unless noted. Use accounts you are happy to switch: try
Use in terminal first with a disposable account (one you can sign in to again), before your main one. If the
terminal ends up signed out or on the wrong account, run claude auth login to recover.
prototypes/menubar.html.✻ session% · week% within 10 s of launch; each "Menu bar shows" option works, and
the title updates when the numbers change./usage for the terminal account: they agree.python3 scripts/verify_spend.py and the popover's "today" agree within 1 %.claude auth login without a TTY (stdin is /dev/null), so this must work with no terminal.--email magic link arrives, login completes, account appears.Claude Code-credentials-<sha8 of the temp CLAUDE_CONFIG_DIR>): the account imports, and no leftover remains. Compare
security dump-keychain | grep -c 'Claude Code-credentials-' before and after: unchanged.~/Library/Application Support/ClaudeUsage/login/
and no Claude Code-credentials-… item for it (same count check).claude auth status --json shows that
email; /mcp still lists your authenticated MCP servers; switching back restores the first account.claude session started BEFORE the switch: note (observe and report) whether it keeps using or refreshes
the old account, and whether that writes the old token back to the Claude Code-credentials item or
~/.claude.json.claude session open and idle until its access token has been expired > 5 min and the app has
refreshed it (watch the Claude Code-credentials item's modification date:
security find-generic-password -s "Claude Code-credentials" | grep mdat); then send a prompt in that old
session — does it recover, ask to log in, or write an old token back? Note the result.claude binary; the chosen path is used and shown./Applications (System Settings → General → Login Items lists
"Claude Usage")."/Applications/Claude Usage.app/Contents/MacOS/ClaudeUsage" --read-only writes nothing
to ~/Library/Application Support/ClaudeUsage (compare find + stat listings before and after).xattr -dr com.apple.quarantine "/Applications/Claude Usage.app" before opening.curl -fsSL https://claude-code-usage.vercel.app/install.sh | bash
installs the new version, quits and replaces a running older copy, and opens it with no Gatekeeper prompt.