Windows tray app that shows Codex, Claude, Kimi, and DeepSeek allowance in compact notification-area icons.
- Codex icon: centered remaining weekly percent and OpenAI-green marker
- Claude icon: remaining 5-hour percent on top, weekly percent on bottom, and Claude-orange marker
- Kimi icon: remaining 5-hour percent on top, 7-day percent on bottom, and Kimi-blue marker
- DeepSeek icon: floored whole-dollar balance in large digits and DeepSeek-blue
marker; floored values above
100display infinity
Codex, Claude, and Kimi each show up to seven vertical dots along the left edge. The dots represent days until the weekly reset; one disappears as each day expires. The middle dot has two blank pixels above and below it, splitting the strip into countable groups. Exact percentages, balances, reset times, source paths, and manual refresh commands remain available from each icon's popup menu.
Codex status is read from the authenticated current-account usage endpoint
using %CODEX_HOME%\auth.json or %USERPROFILE%\.codex\auth.json. The regular
and Spark limits are read separately so concurrent sessions cannot replace the
regular allowance with Spark's allowance. Local session files are used only as
a fallback when the account endpoint is unavailable.
Claude status is read from Claude Code's OAuth usage metadata endpoint. An
expired access token is refreshed with the stored refresh token, and the last
valid usage remains visible during transient refresh failures. The app does not
invoke claude -p /usage.
Kimi quota status is read from the Kimi Code usage endpoint with the local Kimi
OAuth token or KIMI_API_KEY. Kimi local
%KIMI_HOME%\sessions or %USERPROFILE%\.kimi-code\sessions
usage.record events are used only for the token-count line in the popup. It
does not invoke kimi -p. The app does not write a usage state file.
DeepSeek balance is read from DeepSeek's
/user/balance endpoint
using the API key and base URL configured by DeepCode in
%USERPROFILE%\.deepcode\settings.json. DEEPCODE_API_KEY and
DEEPCODE_BASE_URL override that file, matching DeepCode's environment
precedence. The key is used only as a bearer credential and is never displayed
or written by limits.
The same limits.exe process also performs the old limits watchdog work: it
monitors C: and D: free space and runs the pause/resume batch files when Claude
or disk thresholds cross.
The app uses raw Win32 tray APIs and does not depend on the Windows Desktop framework.
Download the latest released executable to the current directory:
gh release download --repo flcl42/limits --pattern limits.exe --clobberPublish the native executable to the current directory:
dotnet publish .\limits.csproj -c Release -r win-x64 -o . -p:PublishAot=true -p:SelfContained=true -p:InvariantGlobalization=trueThe published binary is .\limits.exe.
Publish the native executable to D:\Programs:
.\install.ps1The installer publishes to publish\limits, asks an existing tray process to
shut down cleanly, copies only limits.exe into D:\Programs, updates the
Startup shortcut, removes old installed gpt.exe binaries, and starts it. The
installed binary is D:\Programs\limits.exe.