@sreetej510/pi-usage
Pi extension that reports provider usage/rate-limit budgets (Codex, Anthropic OAuth, etc.) via /usage, with an optional statusline widget.
Package details
Install @sreetej510/pi-usage from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@sreetej510/pi-usage- Package
@sreetej510/pi-usage- Version
0.1.16- Published
- Jul 16, 2026
- Downloads
- 480/mo · 480/wk
- Author
- sreetej510
- License
- MIT
- Types
- extension
- Size
- 38.2 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"./dist/index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@sreetej510/pi-usage
A pi coding agent extension that reports provider
usage / rate-limit budgets — OpenAI Codex, Anthropic OAuth, and pi-auth-backed providers — via
/usage, with an optional live statusline widget.
What it does
- Queries the active model's provider usage endpoint (Codex app-server usage/rate-limit-reset APIs, or Anthropic's OAuth usage API) and renders remaining budget/reset windows.
- Caches results on disk (
~/.pi/agent/usage-cache.json) for a few minutes so multiple concurrent pi sessions don't hammer the provider APIs. - Can push a compact usage summary into the statusline, refreshed automatically with retry/backoff
on rate limits (
429). - Supports listing and consuming Codex "banked" rate-limit resets.
Commands
| Command | Effect |
|---|---|
/usage |
Show cached usage (fetches fresh data if the cache is stale) |
/usage --refresh |
Force a fresh fetch, bypassing the cache |
/usage --no-statusline |
Don't update the statusline widget |
/usage --clear-statusline |
Clear the usage statusline widget |
/usage --timeout <seconds> |
Set the query timeout |
/usage --raw |
Show raw usage API responses (debugging) |
/usage --list-banked-resets |
List available Codex banked resets and expiry dates |
/usage --consume-banked-reset <id> |
Consume a specific Codex banked reset |
Install
npm install -g @sreetej510/pi-usage
Then add it to your pi settings.json:
{
"packages": ["npm:@sreetej510/pi-usage"]
}
Or, for local development, point at the file directly:
{
"extensions": ["/absolute/path/to/pi-extensions/extensions/pi-usage/src/index.ts"]
}
File layout
| File | Responsibility |
|---|---|
src/index.ts |
Extension entry point + session event wiring |
src/command.ts |
/usage command handler |
src/statusline.ts |
Statusline state, timers, background refresh |
src/footer.ts |
Custom footer with right-aligned usage status |
src/query.ts |
Top-level usage query orchestration |
src/codex-query.ts |
Codex pi-auth + app-server fallback queries |
src/anthropic-query.ts |
Anthropic OAuth usage queries |
src/codex-auth.ts |
Codex auth header resolution |
src/anthropic-auth.ts |
Anthropic auth header resolution |
src/codex-app-server.ts |
codex app-server RPC client |
src/codex-reset-credits.ts |
Banked reset list/consume/format |
src/normalize-codex.ts |
Codex backend + app-server payload normalization |
src/normalize-anthropic.ts |
Anthropic usage payload normalization |
src/format.ts |
Report/statusline formatting and display |
src/shared-cache.ts |
On-disk shared usage cache |
src/models.ts |
Provider/model matching helpers |
src/args.ts |
/usage argument parsing and completions |
src/constants.ts |
Shared constants |
src/types.ts |
Shared TypeScript types |
src/utils.ts |
Small parsing/formatting helpers |
src/errors.ts |
HTTP/rate-limit error helpers |
src/http.ts |
fetchWithTimeout wrapper |
Development
npm install
npm run --workspace @sreetej510/pi-usage check # biome + typecheck
npm run --workspace @sreetej510/pi-usage format