Local-first Windows tray app for monitoring Claude Code and Codex tokens, costs, sessions, and rate limits
TypeScript
84
384 commits
updated Sep 19, 2026
Claude Code, Codex, and Antigravity token usage, live in your Windows tray.
Download · First Run · Screenshots · macOS Edition
WhereMyTokens is a local-first desktop app for monitoring AI coding usage: quota windows, token totals, API-equivalent cost estimates, cache efficiency, sessions, model usage, activity patterns, and git output.
| Dark Overview |
|---|
![]() |
| Light Overview |
![]() |
Built by a Korean developer who uses Claude Code daily, scratching my own itch.
| Platform | Download | Best For |
|---|---|---|
| Windows 10/11 | Installer (.exe) | Normal installation, auto-start from the tray |
| Windows 10/11 — 日本語 UI | Japanese UI installer | Same installer; Japanese Windows opens in Japanese automatically, or choose Settings → General → Language |
| Windows 10/11 | Portable ZIP | No installer, keep it anywhere |
| macOS Apple Silicon | macOS Edition | Menu bar app with DMG/ZIP packaging |
Looking for the menu bar version? See the separate WhereMyTokens for macOS repository, which has its own mac-vX.Y.Z release track and DMG/ZIP downloads.
By downloading or installing, you agree to the End-User License Agreement.
Japanese UI is built into the Windows app. It follows your system language by default on Japanese Windows, and you can override it from Settings → General → Language. Thanks to @restructure-git for the translation and key-structure groundwork in PR #37.
Choose Simplified Chinese in Settings → General → Language. Simplified Chinese Windows is detected automatically; Traditional Chinese locales keep the English fallback. Help, tray menus, login notices, and usage alerts are included. Thanks to @lizi1997 for PR #61 and the additional translation patch in #60.
Settings → Currency supports USD, KRW, and CNY. Exchange rates are manual (CNY defaults to 7.2 per USD), not live market quotes. Currency changes affect display only, including the tray; stored USD usage is unchanged. This release also fixes Codex incorrectly appearing offline when account credits are present. No re-login or history reset is required for that fix.
WhereMyTokens-Setup.exe, or extract the portable ZIP and run WhereMyTokens.exe.statusLine bridge for live Claude quota data.| Version | Date | Highlights |
|---|---|---|
| v1.25.1 | 2026-09-19 | Keep minimize and quit (X) visible at the top right; long status/login labels wrap without pushing window controls out of view. |
| v1.25.0 | 2026-09-19 | Add Simplified Chinese UI and CNY display; fix Codex credit-bearing quotas and update vulnerable dependencies. |
| v1.24.6 | 2026-09-11 | Fix Codex counter overcounts, safely correct verified history after upgrade, update Astra pricing, and preserve large Git statistics. |
| v1.24.3 | Aug 27 | Restore Antigravity 2.x detection on Windows and show provider-reported shared Gemini and Claude/GPT quota groups with safe legacy per-model fallback |
| v1.24.2 | Aug 10 | Add actionable Claude login recovery with a one-time Windows notification, the official CLI login flow, credential-change auto-retry, and stale-quota preservation without refreshing or writing credentials |
After upgrade, historical usage is checked locally. When legacy checkpoints need rebuilding, verification retries automatically after initial indexing completes. Only proven overcounts are corrected, with a local backup; unverified history remains unchanged. See Settings → Data for results and rechecking.
provider checkboxes for Claude Code, Codex, Antigravity, or any combination.src/main/providers/ and translate provider-reported limits into one canonical Quota Entry shape, separate from local token/cost usage.Gemini Models and Claude and GPT models shared groups, with legacy per-model local RPC fallback. Missing limits are absent rather than synthesized as Unlimited.statusLine 5h/7d fields. When Claude Code is not producing statusLine updates, a read-only compatibility fallback can query the same account windows using the existing Claude Code access token. A model-scoped target such as Fable appears only when one of those provider-reported sources includes it; WhereMyTokens does not infer missing limits.claude auth login flow. It watches for the credential change and retries automatically, without refreshing tokens or writing credentials itself.+N hidden-target cues.usage-index.sqlite. Request detail is retained for 8 days, hourly precision for 35 days, daily precision for 180 days, and monthly totals indefinitely. First indexing stays responsive and labels incomplete coverage; Reset index discards indexed history and rebuilds only from currently available provider logs.WhereMyTokens reads local provider files and calls only the enabled providers that require a live usage request. It does not upload session logs, run cloud sync, or ask you to paste API keys.
Claude quota monitoring prefers the local Claude Code statusLine. When no fresh statusLine quota exists and Claude Code credentials are available, the Desktop compatibility fallback loads ~/.claude/.credentials.json, extracts the existing access token plus plan metadata, and sends only the access token to the fixed HTTPS host api.anthropic.com for a quota request. It ignores the refresh-token property, never refreshes credentials, and never writes the credential file. One request may occur on app launch; during the same run, requests are limited to once per 15 minutes, apply timeout/response-size limits and 429 backoff, and do not retry a rejected access token unless it changes. Cached compatibility quota is bound to a one-way token marker and expires at the earlier of its reported reset time and a 30-minute cap.
Codex live usage and reset-credit checks use ~/.codex/auth.json only for direct OpenAI/ChatGPT requests when Codex is enabled. Reset-credit cache stores counts, expiry times, fetch status, source labels, a hashed auth marker, and the auth file modified time.
Antigravity uses local RPC only. It does not use Google OAuth, refresh tokens, Google cloud usage endpoints, or offline database fallback.
See Privacy and Security for the full data-source list.
| Topic | Link |
|---|---|
| Feature details | docs/features.md |
| Privacy and security | docs/privacy-security.md |
| Development and architecture | docs/development.md |
| Release guide | RELEASE.md |
MIT
TypeScript
66.0%
JavaScript
31.5%
C#
1.9%
Local-first Windows tray app for monitoring Claude Code and Codex tokens, costs, sessions, and rate limits
TypeScript
84
384 commits
updated Sep 19, 2026
Claude Code, Codex, and Antigravity token usage, live in your Windows tray.
Download · First Run · Screenshots · macOS Edition
WhereMyTokens is a local-first desktop app for monitoring AI coding usage: quota windows, token totals, API-equivalent cost estimates, cache efficiency, sessions, model usage, activity patterns, and git output.
| Dark Overview |
|---|
![]() |
| Light Overview |
![]() |
Built by a Korean developer who uses Claude Code daily, scratching my own itch.
| Platform | Download | Best For |
|---|---|---|
| Windows 10/11 | Installer (.exe) | Normal installation, auto-start from the tray |
| Windows 10/11 — 日本語 UI | Japanese UI installer | Same installer; Japanese Windows opens in Japanese automatically, or choose Settings → General → Language |
| Windows 10/11 | Portable ZIP | No installer, keep it anywhere |
| macOS Apple Silicon | macOS Edition | Menu bar app with DMG/ZIP packaging |
Looking for the menu bar version? See the separate WhereMyTokens for macOS repository, which has its own mac-vX.Y.Z release track and DMG/ZIP downloads.
By downloading or installing, you agree to the End-User License Agreement.
Japanese UI is built into the Windows app. It follows your system language by default on Japanese Windows, and you can override it from Settings → General → Language. Thanks to @restructure-git for the translation and key-structure groundwork in PR #37.
Choose Simplified Chinese in Settings → General → Language. Simplified Chinese Windows is detected automatically; Traditional Chinese locales keep the English fallback. Help, tray menus, login notices, and usage alerts are included. Thanks to @lizi1997 for PR #61 and the additional translation patch in #60.
Settings → Currency supports USD, KRW, and CNY. Exchange rates are manual (CNY defaults to 7.2 per USD), not live market quotes. Currency changes affect display only, including the tray; stored USD usage is unchanged. This release also fixes Codex incorrectly appearing offline when account credits are present. No re-login or history reset is required for that fix.
WhereMyTokens-Setup.exe, or extract the portable ZIP and run WhereMyTokens.exe.statusLine bridge for live Claude quota data.| Version | Date | Highlights |
|---|---|---|
| v1.25.1 | 2026-09-19 | Keep minimize and quit (X) visible at the top right; long status/login labels wrap without pushing window controls out of view. |
| v1.25.0 | 2026-09-19 | Add Simplified Chinese UI and CNY display; fix Codex credit-bearing quotas and update vulnerable dependencies. |
| v1.24.6 | 2026-09-11 | Fix Codex counter overcounts, safely correct verified history after upgrade, update Astra pricing, and preserve large Git statistics. |
| v1.24.3 | Aug 27 | Restore Antigravity 2.x detection on Windows and show provider-reported shared Gemini and Claude/GPT quota groups with safe legacy per-model fallback |
| v1.24.2 | Aug 10 | Add actionable Claude login recovery with a one-time Windows notification, the official CLI login flow, credential-change auto-retry, and stale-quota preservation without refreshing or writing credentials |
After upgrade, historical usage is checked locally. When legacy checkpoints need rebuilding, verification retries automatically after initial indexing completes. Only proven overcounts are corrected, with a local backup; unverified history remains unchanged. See Settings → Data for results and rechecking.
provider checkboxes for Claude Code, Codex, Antigravity, or any combination.src/main/providers/ and translate provider-reported limits into one canonical Quota Entry shape, separate from local token/cost usage.Gemini Models and Claude and GPT models shared groups, with legacy per-model local RPC fallback. Missing limits are absent rather than synthesized as Unlimited.statusLine 5h/7d fields. When Claude Code is not producing statusLine updates, a read-only compatibility fallback can query the same account windows using the existing Claude Code access token. A model-scoped target such as Fable appears only when one of those provider-reported sources includes it; WhereMyTokens does not infer missing limits.claude auth login flow. It watches for the credential change and retries automatically, without refreshing tokens or writing credentials itself.+N hidden-target cues.usage-index.sqlite. Request detail is retained for 8 days, hourly precision for 35 days, daily precision for 180 days, and monthly totals indefinitely. First indexing stays responsive and labels incomplete coverage; Reset index discards indexed history and rebuilds only from currently available provider logs.WhereMyTokens reads local provider files and calls only the enabled providers that require a live usage request. It does not upload session logs, run cloud sync, or ask you to paste API keys.
Claude quota monitoring prefers the local Claude Code statusLine. When no fresh statusLine quota exists and Claude Code credentials are available, the Desktop compatibility fallback loads ~/.claude/.credentials.json, extracts the existing access token plus plan metadata, and sends only the access token to the fixed HTTPS host api.anthropic.com for a quota request. It ignores the refresh-token property, never refreshes credentials, and never writes the credential file. One request may occur on app launch; during the same run, requests are limited to once per 15 minutes, apply timeout/response-size limits and 429 backoff, and do not retry a rejected access token unless it changes. Cached compatibility quota is bound to a one-way token marker and expires at the earlier of its reported reset time and a 30-minute cap.
Codex live usage and reset-credit checks use ~/.codex/auth.json only for direct OpenAI/ChatGPT requests when Codex is enabled. Reset-credit cache stores counts, expiry times, fetch status, source labels, a hashed auth marker, and the auth file modified time.
Antigravity uses local RPC only. It does not use Google OAuth, refresh tokens, Google cloud usage endpoints, or offline database fallback.
See Privacy and Security for the full data-source list.
| Topic | Link |
|---|---|
| Feature details | docs/features.md |
| Privacy and security | docs/privacy-security.md |
| Development and architecture | docs/development.md |
| Release guide | RELEASE.md |
MIT
TypeScript
66.0%
JavaScript
31.5%
C#
1.9%