pi-usage-alerts

Threshold notifications for Pi subscription session limits on OpenAI Codex and Anthropic OAuth providers.

Packages

Package details

extension

Install pi-usage-alerts from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-usage-alerts
Package
pi-usage-alerts
Version
0.2.0
Published
Jul 4, 2026
Downloads
380/mo · 17/wk
Author
kertytsky
License
MIT
Types
extension
Size
1.5 MB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ],
  "image": "https://raw.githubusercontent.com/ykertytsky/pi-usage-alerts/main/assets/pi-usage-alerts-screenshot.png"
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-usage-alerts

pi-usage-alerts in action

Threshold notifications for Pi subscription session limits.

pi-usage-alerts watches the active Pi provider and warns when OpenAI Codex or Anthropic OAuth subscription windows are close to exhaustion. It is intentionally small: it does not rotate accounts, change models, or replace Pi's footer.

Features

  • Polls provider usage for the active model's OAuth subscription.
  • Alerts at configurable warning, critical, and exhausted thresholds.
  • Tracks both 5-hour and 7-day session windows.
  • Notifies inside Pi and optionally via OS/terminal notifications.
  • Detects rate-limit responses (HTTP 402, 403, 429) from the active provider.
  • One alert per threshold and window until that window resets.

Supported providers

Provider family Pi provider IDs
OpenAI Codex / ChatGPT subscription openai-codex, openai-codex-account-N
Anthropic OAuth subscription anthropic, anthropic-account-N

GitHub Copilot and API-key billing providers are out of scope for v1 because Pi does not expose a usable session-limit API for them.

Requirements

  • Pi with @earendil-works/pi-coding-agent
  • Node.js 20+
  • OAuth login for a supported provider (/login in Pi)

Install

From npm (when published):

pi install npm:pi-usage-alerts

From a git repository:

pi install git:github.com/ykertytsky/pi-usage-alerts

From a local checkout:

pi install /path/to/pi-usage-alerts

Try without installing (current session only):

pi -e /path/to/pi-usage-alerts/extensions/index.ts

Restart Pi or run /reload after installing.

Usage

Authenticate with a supported subscription provider using Pi's normal login flow:

/login

Then use Pi as usual. The extension checks usage at session start, after model changes, and after each turn. Alerts are deduplicated per provider, window, and threshold until that window resets. While a low-usage alert is active, a compact status segment (e.g. usage 1% left · resets 57m) stays visible in the status bar until the window recovers.

Commands

Command Description
/usage-alerts Show cached usage for the active provider
/usage-alerts status Same as above
/usage-alerts check Force a fresh poll and show details
/usage-alerts refresh Alias for check
/usage-alerts config Print the active configuration

Example status output:

Codex | 5h 72% left/3h12m | 7d 41% left/5d8h

How alerts work

Usage is fetched from each provider's own OAuth usage endpoint using Pi's stored credentials (AuthStorage).

Tier Default trigger Severity
Warning ≤ 30% remaining warning
Critical ≤ 10% remaining error
Exhausted 0% remaining error

Polling respects a minimum interval (5 minutes by default, 10 minutes minimum for Anthropic). A forced check via /usage-alerts check bypasses the interval.

When the active provider returns HTTP 402, 403, or 429, the extension emits a rate-limit alert (deduplicated for 60 seconds).

In Pi's TUI, alerts are sent through ctx.ui.notify() and the current active alert is mirrored into a compact status-bar segment (usage <n>% left · resets <time>, or usage rate-limited) via ctx.ui.setStatus(), so the key numbers stay visible during the session instead of only appearing as a transient notification.

On first Anthropic usage fetch, the extension warns that subscription auth may draw from Claude extra usage billed per token.

Configuration

The extension creates ~/.pi/agent/usage-alerts.json with mode 0600 the first time it needs config. Override the directory with PI_CODING_AGENT_DIR.

{
  "enabled": true,
  "pollIntervalMs": 300000,
  "anthropicMinPollMs": 600000,
  "thresholds": {
    "warning": 30,
    "critical": 10
  },
  "windows": ["5h", "7d"],
  "osNotify": true,
  "osNotifyOnCriticalOnly": true
}
Field Default Description
enabled true Master switch for polling and alerts
pollIntervalMs 300000 (5 min) Minimum time between usage polls
anthropicMinPollMs 600000 (10 min) Floor for Anthropic polling (cannot go below 10 min)
thresholds.warning 30 Warn when remaining % is at or below this value
thresholds.critical 10 Critical alert threshold
windows ["5h", "7d"] Which usage windows to monitor
osNotify true Send OS/terminal notifications
osNotifyOnCriticalOnly true Only OS-notify on critical and exhausted tiers

OS notifications

When enabled, critical and exhausted alerts also trigger a best-effort OS notification:

  • Windows Terminal — native toast via PowerShell
  • Kitty — OSC 99 desktop notification
  • Other terminals — OSC 777 notification (Ghostty, iTerm2, WezTerm, etc.)

In-Pi notifications are always authoritative; OS delivery is best-effort.

Privacy

The extension reads Pi's credential store through AuthStorage, the same resolver Pi uses for provider requests. It sends OAuth access tokens only to the provider's own usage endpoints:

  • https://chatgpt.com/backend-api/wham/usage
  • https://api.anthropic.com/api/oauth/usage

The config file contains only alert settings. No credentials or usage snapshots are persisted.

Development

git clone https://github.com/ykertytsky/pi-usage-alerts.git
cd pi-usage-alerts
npm install
npm run check
pi -e ./extensions/index.ts

Project layout

extensions/index.ts   Pi extension entry (events, commands)
src/alerts.ts         Threshold evaluation and alert state
src/config.ts         Config load/normalize (~/.pi/agent/usage-alerts.json)
src/usage.ts          Provider usage fetch and parsing
src/notify-os.ts      Terminal/OS notification adapters
src/types.ts          Shared types

License

MIT

Publishing

This package is distributed on npm and indexed by the Pi package gallery via the pi-package keyword.

npm login
npm publish

Users install with:

pi install npm:pi-usage-alerts