- Home
- Plugins
- Usage & Billing
- dsh-usage-limits
dsh-usage-limits
jakehemmerle/dsh-usage-limits
Shows how much of your Claude and Codex plan limits you have used: a line above the prompt in dst with 5-hour and weekly windows, percent used and time to reset, and a ring meter beside the context meter in dsh web that opens a panel listing every window.
Install
dsh plugin --profile web add github:jakehemmerle/dsh-usage-limitsREADME
dsh-usage-limits
A DeepSeek Harness (DSH) plugin that shows how much of your Claude and Codex plan limits you have used:
an omp-style line in the terminal client (dst, dsh-TUI) and a ring meter in dsh web. The product and
technical specification is SPEC.md; the test plan and evidence are in TESTING.md.
What it shows
dst. One coloured line above the prompt, on the first screen (Launchpad) and in chat, in the format of Jake's omp line:
Claude (proxy) 5h ░░░░░░░░ 1% ↻2h29m 7d ██░░░░░░ 29% ↻5d6h Codex (proxy) 7d █░░░░░░░ 12% ↻3d11h
Each account shows its 5-hour and weekly windows: a bar, the percent used and the time to the reset.
Percents are green below 50%, amber from 50% and red from 80%. A narrow terminal drops the bars, then
the reset times, then shortens names (Claude·px), and finally shows only the fullest window. A refresh
that fails keeps the last numbers and marks the account stale. Nothing shows until data arrives.
dsh web. A small ring and label beside the composer's context meter in a session, for example
Codex (proxy) 7d 52%: the fullest 5-hour or weekly window, coloured by the same thresholds. Click it for a
panel that lists every window of every account, including per-model windows such as Weekly · Fable
and extra Codex limits, with reset times and stale or error notes.


Where the data comes from
Accounts, in display order:
| Account | Source |
|---|---|
Claude (proxy), Codex (proxy) | ProviderProxy: GET <baseURL>/usage/claude and /usage/chatgpt with the proxy client key from PROVIDERPROXY_API_KEY (or proxy.apiKeyEnv) |
Claude, Codex | DSH's own sign-ins (llm-pi-ai/anthropic, llm-pi-ai/openai-codex) → https://api.anthropic.com/api/oauth/usage, https://chatgpt.com/backend-api/wham/usage |
An account that is not configured is left out. The plugin never refreshes, writes or logs tokens; an
expired sign-in waits for DSH to refresh it. ProviderProxy accounts are read at most once a minute (the
proxy caches its upstream for a minute); direct sign-ins at most every minIntervalMs (default 5 minutes,
never below 1 minute), with back-off after errors. dst asks every minute and redraws reset times every
30 seconds without a request; the web page polls the plugin's route every minute.
Install
Both rows are generated by nix-config (home/dsh.nix); by hand they are:
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: usage-limits
name: /path/to/dsh-usage-limits/index.js
config: &usage
minIntervalMs: 300000
proxy:
baseURL: http://gpu.tail47033e.ts.net:4000/v1
apiKeyEnv: PROVIDERPROXY_API_KEY
# ~/.dsh/profiles/dsh-tui/cordis.patch.yml
- insert:
- id: usage-limits
name: /path/to/dsh-usage-limits/tui.js
config: *usage
name must point at the entry file (index.js or tui.js), not the package directory. DSH finds the
browser half through package.json. dsh-TUI 0.14.0 draws plugin status lines only in chat; the patch in
patches/ (applied by nix-config's pkgs/dsh-tui.nix) puts them on the Launchpad too. dsh web loads the
plugin when dsh-web starts; dst loads it in each new process.
Test
npm ci
npm test # properties, host runtime, contracts, smoke
DSH_TUI_DIR=<patched dsh-tui> npm run test:e2e:tui # real dst in tmux
npm run test:e2e:web # real dsh web in Playwright
Related plugins
DeepSeek-Balance-Whale-Widget
meteornox/deepseek-balance-whale-widget
dsh-context
bowenliang123/dsh-context
dsh-cost-meter
han-1413141/dsh-cost-meter
dsh-damage-pulse
wssfk12138/dsh-damage-pulse