# Providers

> Unified AI provider quota monitor. Shows Claude Code, Codex CLI, and Gemini CLI OAuth rate-limit utilization bars with reset countdowns. Reads credentials from each tool's local auth files — no API keys required.

- Skill: `ryanmaclean/providers` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ryanmaclean/providers`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ryanmaclean/providers/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: ryanmaclean (https://skillmd.com/u/ryanmaclean)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ryanmaclean/providers

---


# providers — AI Quota Monitor

Shows live OAuth quota usage for Claude, Codex, and Gemini in one view.

## Quick usage

```bash
nu ~/.claude/skills/providers/providers.nu          # all providers
nu ~/.claude/skills/providers/providers.nu --claude # Claude only
nu ~/.claude/skills/providers/providers.nu --codex  # Codex only
nu ~/.claude/skills/providers/providers.nu --gemini # Gemini only
nu ~/.claude/skills/providers/providers.nu --watch 30   # auto-refresh every 30s
nu ~/.claude/skills/providers/providers.nu --json       # raw JSON
```

From within a project (if providers.nu is in scripts/):

```bash
nu scripts/providers.nu
```

## Sample output

```
Claude Code
  5h        ████░░░░░░  44%   reset in 2h 47m
  7d        ██████░░░░  61%   reset in 127h 47m
  7d sonnet ███████░░░  70%   reset in 129h 47m

Codex CLI
  session   ██░░░░░░░░  21%   reset in 0h 12m
  weekly    ███░░░░░░░  32%   reset in 95h 12m

Gemini CLI
  Pro       █████░░░░░  52%   reset in 21h 0m
  Flash     ██░░░░░░░░  18%   reset in 21h 0m
```

Color scale: green <70% · amber 70–89% · red 90%+

## Credentials

| Provider | File | Field |
|----------|------|-------|
| Claude | `~/.claude/.credentials.json` | `claudeAiOauth.accessToken` |
| Codex | `~/.codex/auth.json` | `access_token` |
| Gemini | `~/.gemini/oauth_creds.json` | `access_token` |

## APIs

| Provider | Endpoint | Key fields |
|----------|----------|-----------|
| Claude | `GET https://api.anthropic.com/api/oauth/usage` | `five_hour.utilization`, `seven_day.utilization` (0–100) |
| Codex | `GET https://chatgpt.com/backend-api/wham/usage` | `session.percent_used`, `weekly.percent_used` (0–100) |
| Gemini | `POST .../loadCodeAssist` → `POST .../retrieveUserQuota` | `remainingFraction` (0.0–1.0, inverted to get used%) |

## Gemini token refresh

If `expiry_date` in `~/.gemini/oauth_creds.json` is in the past, the script
automatically attempts a token refresh by locating the Gemini CLI's `oauth2.js`
and extracting the client credentials. On failure it prints a warning and
suggests running `gemini` once manually.

## Notes

- All providers are fetched in sequence; a failure on one does not block others
- `--json` outputs a `{claude, codex, gemini}` object with raw API responses
- Gemini quota uses `remainingFraction` (what's left), converted to used%:
  `used = (1 - remainingFraction) * 100`
- If a provider binary or credentials file is absent, it shows `✗ <reason>` and continues

