Skip to content

IgorWarzocha/opencode-usage-plugin

Repository files navigation

OpenCode Usage Plugin

Track AI provider rate limits and quotas in real-time.

Features

  • Live rate limits – See Codex/OpenAI hourly/weekly limits at a glance
  • Anthropic subscription limits – Track Claude OAuth windows (5h, 7d, Sonnet/Opus/cowork tiers)
  • Proxy quota stats – Monitor Mirrowel Proxy credentials and tier usage
  • Copilot usage – Track GitHub Copilot chat + completions quotas
  • Z.ai usage – Track GLM Coding Plan 5-hour token quota and monthly tool quota
  • OpenRouter usage – Track API credit usage and remaining balance
  • Inline status – Results appear directly in your chat, no context switching
  • Zero setup – Auto-detects providers from your existing config
image

Installation

Add to your opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@howaboua/opencode-usage-plugin"]
}

OpenCode installs dependencies automatically on next launch.

Configuration

The plugin creates a default config file on first run at:

Linux/macOS: ~/.config/opencode/usage-config.jsonc
Windows: %APPDATA%\opencode\usage-config.jsonc

{
  // REQUIRED: Proxy server endpoint (default: "http://localhost:8000")
  // Leave empty ONLY if you don't use the proxy
  "endpoint": "http://localhost:8000",

  // REQUIRED: API key for proxy auth (default: "VerysecretKey")
  // Leave empty if your proxy doesn't require authentication
  "apiKey": "VerysecretKey",

  // Optional: Request timeout in milliseconds (default: 10000)
  "timeout": 10000,

  // Optional: Z.ai API endpoint (default: "https://api.z.ai")
  "zaiEndpoint": "https://api.z.ai",

  // Optional: Show/hide providers in /usage output
  "providers": {
    "openai": true,
    "anthropic": true,
    "proxy": true,
    "copilot": true,
    "zai": true,
    "openrouter": true
  },

  // Model group display configuration (optional)
  "modelGroups": {
    // Show all model groups from proxy (default: true)
    // When true: auto-discovers all groups, uses displayNames as overrides
    // When false: only shows groups listed in displayNames (whitelist mode)
    "showAll": true,

    // Override display names for specific groups (optional)
    // Groups not listed here use their original name from the proxy
    "displayNames": {
      "g3-pro": "Gemini Pro",
      "g3-flash": "Gemini Flash",
      "claude": "Claude"
    }
  }
}

⚠️ Important: If using the Mirrowel Proxy, both endpoint and apiKey must be set. The proxy defaults to endpoint: http://localhost:8000 and apiKey: VerysecretKey. If you changed these during your proxy setup, you MUST update your config file to match.

Model Group Configuration

The modelGroups section controls how quota groups are displayed:

showAll displayNames Behavior
true (default) empty/missing Show all groups with original names
true provided Show all groups, apply display name overrides
false provided Only show groups in displayNames (whitelist mode)
false empty/missing Shows no groups (all filtered out)
missing section Legacy behavior (hardcoded group whitelist)

If missing, the plugin creates a default template on first run.

Copilot auth

Copilot is detected from either of these locations:

  • ~/.local/share/opencode/copilot-usage-token.json
  • ~/.local/share/opencode/auth.json with a github-copilot entry
  • ~/.config/opencode/copilot-quota-token.json (optional override)

Usage

Check all providers

/usage

Check specific provider

/usage codex
/usage anthropic
/usage claude
/usage proxy
/usage copilot
/usage zai
/usage glm
/usage openrouter
/usage or

Support the proxy

/usage support

Supported Providers

Provider Source
Codex / OpenAI Auth tokens + /wham/usage endpoint
Anthropic Claude OAuth profile + /api/oauth/usage windows
Mirrowel Proxy Local /v1/quota-stats endpoint
GitHub Copilot GitHub internal usage APIs
Z.ai GLM Coding Plan chat.z.ai auth + Z.ai usage APIs
OpenRouter API key + openrouter.ai/api/v1/key

Troubleshooting

Proxy shows "not configured" error

  • Ensure endpoint and apiKey are set in usage-config.jsonc
  • Default values: endpoint: http://localhost:8000, apiKey: VerysecretKey
  • If you changed these during proxy setup, update your config file to match
  • Verify your proxy is running at the specified endpoint

Missing provider data

  • Use providers: { ... } in config to disable unused providers
  • For Codex: Ensure you have valid auth tokens
  • For Copilot: Check token file locations in Configuration section above
  • For Z.ai: Ensure your OpenCode auth includes chat.z.ai credentials
  • For Anthropic: Ensure Claude OAuth credentials are available (anthropic in auth.json)
  • For OpenRouter: Ensure OpenRouter API key is available (openrouter or or in auth.json)

Config file not found

  • The plugin auto-creates usage-config.jsonc on first run
  • Check the path in Configuration section above
  • Manually create the file if needed

See AGENTS.md for internal architecture.

About

Plugin that displays your OAuth subscription quotas.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •