Skip to content

About

Windows 11 tray app for Codex usage, token history and estimated API costs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Codex Usage Dock Tracker

A Windows 11 tray app for Codex subscription limits, local token history, and estimated API-equivalent cost. Click its white tray icon to open a compact dashboard with Today, Yesterday, 30 Days, and All Time totals. Version 1.4.1 keeps the dollar estimate beside the All Time token count, hides optional reset-history rows by default, and corrects header icons, scrolling, tooltips, and transitions.

Use your own Codex sign-in. Sign into Codex with your ChatGPT account first, then open Usage Dock. There is no shared account, bundled login, API key requirement, or separate developer billing setup. The release starts with no account data.

Dollar figures are estimates, not charges. Usage Dock applies bundled model prices to token counts recorded on your computer. It does not send prompts, run model generations, purchase credits, or redeem resets. This is an independent utility, not an official OpenAI application.

Install

You need Windows 11 x64 and Codex signed in with your own ChatGPT account. The release includes its .NET runtime, so Python, Node.js, an SDK, and administrator access are not required.

  1. Open Codex and sign in with ChatGPT using your own account. Complete any password or verification prompts in the official sign-in flow. See Codex authentication.
  2. Download the latest Windows release. Choose UsageDock-Windows-x64.zip, not GitHub's source-code ZIP.
  3. Right-click the ZIP, choose Extract All, and keep the complete folder in a permanent location. Do not run it from inside the ZIP.
  4. Double-click UsageDock.exe. It detects your own default Codex home and reads your available usage. The first history scan can take longer than later refreshes.
  5. If the tray icon is hidden, open the hidden-icons arrow beside the clock and drag the icon into the visible tray.

The defaults match the screenshots: Dark theme, normal density, expanded metrics, and a five-minute refresh interval. No startup entry is created just by running the app. The executable is unsigned; download it from this repository and compare the release's SHA-256 file if Windows asks you to assess its publisher.

Preview without signing in

Double-click Preview Example.cmd. It opens the actual app with synthetic limits, tokens, and cost estimates. The footer says Offline example data. This mode makes no account requests and reads no Codex authentication or session files. Its display preferences are separate from normal usage.

Start with Windows

After moving the release to its permanent folder, double-click Enable Windows Startup.cmd. It creates a shortcut in your current Windows user's Startup folder. The app starts quietly in the tray with --background; it does not install a service, scheduled task, or registry autorun.

Double-click Disable Windows Startup.cmd to remove that shortcut. If a shortcut already points to a different installation, open Win+R, enter shell:startup, and remove the old Usage Dock shortcut before enabling the new one.

Upgrade

Choose Quit in the tray menu, replace the release files, then open UsageDock.exe again. Keep the same folder if Windows startup is enabled. Your settings and indexed history stay in %LOCALAPPDATA%\UsageDock, separate from the executable. Do not copy that personal data folder into a Git repository or shared ZIP.

Use

Control Action
Tray icon Open or hide the panel; right-click for Refresh, Settings, and Quit
Today / Yesterday / 30 Days Change the top summary period
Cost selector Switch between estimated cost, cost per million tokens, and tokens
Quota percentage Toggle used and remaining allowance
Reset time Toggle countdown and exact reset time
Spending value Show the per-model breakdown
Theme button Switch Dark and Light
Options Customize rows, open Settings, copy a screenshot, export CSV, refresh, or quit
All Time Show the local API dollar estimate beside Codex account lifetime tokens; hover for source, model costs, coverage, and any difference
Global Resets / Banked Resets Used Inspect recorded reset counts, coverage dates, overlap, and possible events

Customize lets you hide or reorder metrics and pin two values to the tray tooltip. Global Resets and Banked Resets Used are off by default for new settings; enable either under Settings > Customize > Codex. Existing saved visibility choices are preserved. Esc goes back or hides the panel, Ctrl+R refreshes, Ctrl+, opens Settings, and Ctrl+Q quits. A second normal launch opens the existing instance. A second background launch does not open another panel.

Screenshots

These are rendered from the app's offline example mode. All account limits, token counts, dates, and cost totals shown are synthetic; no personal account or usage is pictured.

Usage Dock dark dashboard with synthetic example usageUsage Dock light dashboard with synthetic example usage

The 30-day view uses the same example history and bundled pricing calculation.

Thirty-day API-equivalent estimate using example data

Data and privacy

Data Handling
ChatGPT login You sign into Codex yourself; Usage Dock does not collect a password
Codex authentication Read in memory when available; sent only to the fixed ChatGPT usage endpoints
Account reader An installed official Codex app-server briefly reads your account limits and lifetime statistics; Codex owns token refresh
Conversation files Scanned locally for numeric usage records; conversation text is not exported or uploaded
Settings and latest readings Stored under your own %LOCALAPPDATA%\UsageDock
Indexed token and reset history Retained locally in per-Codex-home SQLite ledgers; banked history and saved account totals are scoped to the signed-in account
CSV and copied screenshots Created only when you choose them; they contain your usage, so review before sharing
Example mode Uses synthetic data and separate %LOCALAPPDATA%\UsageDockDemo preferences

There is no telemetry, background browser, local web server, or upload to the developer. Direct requests are restricted to the usage, reset-credit, and reset-history endpoints under https://chatgpt.com/backend-api/wham/. The official Codex app-server supplies account lifetime statistics through account/usage/read; this read-only helper exits after the request. Statistics are normally refreshed at most once per ten minutes. Credential-store sign-ins without a local account identity use live statistics without saving an unscoped account cache. Redirects are disabled. Tokens are not written into Usage Dock's caches or diagnostics. These are local files, not an encrypted vault; software running as your Windows user can access your local usage data.

Accuracy and compatibility

  • Live limits come from the signed-in account. Session means the five-hour subscription allowance, not the current chat. It is hidden when the account supplies no such window and returns automatically when available. Usage Resets is hidden when the available balance is zero.
  • Costs use available local .jsonl and .jsonl.zst session history and a 12 October 2026 pricing snapshot. They are estimated API-equivalent value, not your subscription bill or verified API spending. Future price changes require an update.
  • All Time tokens use Codex's account statistic when supported. Its coverage date and refresh time are shown in the detail view. If unavailable, the value is explicitly labeled local tokens. Server statistics can lag recent usage.
  • Local API estimate uses only the detailed records available on this computer. Account totals can include activity absent from local logs. A difference is displayed, but missing aggregate tokens are never assigned invented model, cache, speed, or dollar values. Separate tool charges and taxes are outside the estimate.
  • Fast mode is attributed to individual turns from recorded settings or explicit context, so switching speed between prompts in the same chat is supported. A setting changed during an active turn applies to the next turn unless that turn records an explicit override. Compactions preserve the active turn's selection; inherited fork settings, missing selections, model mismatches, and ambiguous cumulative gaps are not treated as proof of Fast. Known heartbeat overrides are handled separately. Requested Fast pricing is an API-equivalent estimate, not proof of the service tier actually billed. Unknown speed remains a standard-rate baseline and is disclosed in the cost breakdown.
  • Global Resets detects early weekly allowance resets in available local observations. It cannot identify who initiated them or separate all automatic and banked events. Strong detections and sparse possible events are shown separately; possible events do not increase the detected count. Legacy weekly-window formats are supported.
  • Banked Resets Used counts explicit used events from the available rolling history and retains them locally across refreshes. Coverage dates and gaps are shown. This is a recorded minimum, not a guaranteed lifetime total. Banked events can overlap Global Resets, so the two counts must not be added.
  • The reader incrementally scans active, archived, and compressed rollouts, plus supported numeric desktop-helper usage logs. It preserves indexed totals after original logs disappear, deduplicates supported replay/fork and paired-response records, handles cumulative counter resets and partial file tails, and marks incomplete or unpriced data. Unknown models retain their tokens. These rules inspect each user's own records; no developer history or precomputed personal totals are bundled.
  • Codex subscription reads use service interfaces that can change. API-key-only accounts do not supply the ChatGPT subscription limits this app displays. ARM64 Windows and other providers are not part of this release.

Troubleshooting

Symptom Check
No subscription reading Open Codex, sign into your own ChatGPT account, then choose Refresh. Never send anyone auth.json.
No Codex account reader found Keep an official Codex desktop installation or npm-installed Codex CLI available. The app can read an existing file-backed sign-in directly; some credential-store setups need the installed account reader.
History is empty Use Codex locally first. Check Settings > Codex Home if you use a custom CODEX_HOME.
Reading is outdated The last successful value is retained during connection errors. Refresh retries with bounded backoff.
All Time differs from local tokens Hover All Time to compare account and local coverage. Account-only activity cannot be priced without its detailed records.
Totals differ from a bill Dollar figures are estimates from local token records and bundled prices, not billing records.
Startup points to an older folder Remove its shortcut from shell:startup, then enable startup from the new permanent folder.
The screenshot says Example Close the preview through its tray menu and open UsageDock.exe for your own account.

Build from source

Install the Microsoft .NET 10 SDK, clone or download the source, and run build.cmd. It runs the regression tests and creates a self-contained release in release. Set USAGE_DOCK_DOTNET to a particular dotnet.exe if needed. ZstdSharp.Port 0.8.8 is the pinned compressed-history dependency; Windows supplies SQLite through winsqlite3.dll.

The repository contains source, public model-price data, dependency notices, and synthetic screenshots only. Personal settings, authentication, caches, databases, logs, and build outputs are excluded from Git. See UPSTREAM.md for source provenance and the included dependency notices.

License

MIT

About

Windows 11 tray app for Codex usage, token history and estimated API costs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages