by timharris707
macOS menu bar app that tracks usage limits across all your Claude Code and Codex CLI accounts — live "% left" meters per rate-limit window, reset countdowns, low-capacity alerts, and one-click account switching. Local-first: no cloud, no telemetry, credentials never touched. Native SwiftUI + a localhost Node daemon.
# Add to your Claude Code skills
git clone https://github.com/timharris707/modeldeckLast scanned: 9/19/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-09-19T08:32:57.478Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how modeldeck compares with popular alternatives.
modeldeck is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by timharris707. macOS menu bar app that tracks usage limits across all your Claude Code and Codex CLI accounts — live "% left" meters per rate-limit window, reset countdowns, low-capacity alerts, and one-click account switching. Local-first: no cloud, no telemetry, credentials never touched. Native SwiftUI + a localhost Node daemon. It has 101 GitHub stars.
Yes. modeldeck passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/timharris707/modeldeck" and add it to your Claude Code skills directory (see the Installation section above).
modeldeck is primarily written in JavaScript. It is open-source under timharris707 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh modeldeck against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
One menu bar icon that always knows how much Claude Code and Codex you have left.
A native macOS menu bar app + local daemon that tracks usage limits across all of your Claude Code and Codex CLI accounts — live "% left" meters, reset countdowns, and optional account switching.
Local-first. No cloud backend. No telemetry. Your provider credentials are never copied, stored, or transmitted by ModelDeck. The only secrets ModelDeck creates are its own local Keychain items — the token that guards the daemon's API and, if you use the managed proxy, a client key per profile — and they contain nothing of yours. The only optional outbound calls of ModelDeck's own are the daily update check (reads this repository's public releases feed) and the update download you approve (fetches the release asset) — update checks are off unless you enable them.

All screenshots show a demo-seeded instance with placeholder accounts.
If you run AI coding agents seriously, you probably don't have one account — you have a work Claude Max plan, a personal Pro plan, a Codex subscription, maybe a spare for side projects. Each one has its own 5-hour session window, weekly limit, and model-scoped caps, all resetting on different clocks.
Today the only way to know where you stand is to interrupt what you're doing and check each account by hand — usually right after an agent run dies mid-task because a limit you forgot about ran out.
ModelDeck puts all of it in your menu bar:
effective / identity-mismatch / identity-unverified)
instead of assuming success. Running sessions are never stopped, logged
out, or touched./login ceremony, a copied
profile), the deck flags them with a warning marker and banner instead of
silently counting the same limit twice.CLAUDE_CONFIG_DIR / CODEX_HOME), macOS Keychain-aware,
so identities never bleed into each other.

This is the point of the tool, so it's worth being explicit:
| Cloud services | None. No backend, no sync, no accounts. |
| Telemetry | None. Nothing is phoned home, ever. |
| Provider credentials | Sign-in happens in the provider's own browser flow; credentials stay in the profile/Keychain. The one-time Codex profile directory migration moves existing homes into ModelDeck's data directory and retains an owner-only recovery backup there. |
| ModelDeck's own secrets | A few Keychain items of its own, all locally generated: one random token that authorizes the app to the daemon's localhost API, plus — only if you use the managed proxy — one client key per profile (service cli-proxy-api-client.<profile>) that ModelDeck mints for its own local proxy. None contain provider data. |
| Network | Daemon binds to 127.0.0.1 only. Outbound calls go solely to the providers you already use, with credentials they already hold. |
| Removal | Removing an account deletes only ModelDeck's reference. Deleting ModelDeck's data directory also deletes its managed Codex profiles and migration backups; Keychain entries remain. Custom profile-directory overrides must be removed separately. |
Requirements: macOS 14+ and the Claude Code and/or Codex CLIs you want to track. (Node.js is only needed if you build from source.)
1. Download the app
Get the latest signed, notarized DMG from the Releases page, open it, and drag ModelDeck to Applications.
2. Launch it
The DMG is self-contained: on first launch ModelDeck asks your consent to
register its bundled background service (the local daemon that does the
actual usage reads, listening on 127.0.0.1:3867 only) and sets up its
Keychain token — one approval, no Terminal.
3. Add accounts
Open Settings → Accounts → Add Account and follow the three-step flow for each account — e.g. "Work", "Personal", "Side Project". Each gets its own isolated profile home and signs in through the provider's own login flow.
Removing the app keeps its data for a reinstall. Optional data deletion below also removes managed profile homes and their sign-ins. Quit provider sessions first and keep a backup of any profiles you want to retain.
If you installed the DMG
~/Library/Application Support/ModelDeck — settings, usage history,
and isolated per-account profile homes, including codex-profiles and
its migration backups. Deleting it removes those managed sign-ins;
activation symlinks such as ~/.codex may then point at a missing home.
The migration leaves the empty ~/.codex-profiles directory for you to
remove. If you use MODELDECK_DATA_DIR, MODELDECK_DB_PATH, or
MODELDECK_CODEX_PROFILES_DIR, remove those configured locations instead.~/Library/Preferences/app.modeldeck.mac.plist,
~/Library/Caches/app.modeldeck.mac, and (if you ever ran the
from-source launch agent) ~/Library/LaunchAgents/ai.hermes.modeldeck.plist.If you installed via Homebrew
brew uninstall modeldeck
removes the app and leaves your data in place for a reinstall. To delete the data as well (same caveat about managed account profiles as above):
brew uninstall --zap modeldeck
Keychain items (both install methods)
Neither the Trash nor --zap can remove Keychain items, so two kinds may
remain — both are ModelDeck's own locally generated secrets, containing
nothing of yours. Open Keychain Access, search for modeldeck and
cli-proxy-api-client, and delete what turns up; or from Terminal:
security delete-generic-password -s modeldeck -a mutation-token
The cli-proxy-api-client.* items exist only if you used the managed
proxy feature, one per profile; delete each with
security delete-generic-password -s "cli-proxy-api-client.<profile>" -a "".
flowchart LR
A["Menu bar app<br/>(Swift