pi-sub2api-provider

Pi extension that auto-registers sub2api/OpenAI-compatible providers and displays quota usage.

Packages

Package details

extension

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

$ pi install npm:pi-sub2api-provider
Package
pi-sub2api-provider
Version
0.3.0
Published
Jul 14, 2026
Downloads
859/mo · 202/wk
Author
dereknex
License
MIT
Types
extension
Size
53.9 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

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

README

pi-sub2api-provider

npm license CI

A standalone pi package that reads OpenAI-compatible / sub2api provider config from ~/.pi/agent/models.json and ~/.pi/agent/auth.json, registers providers, and shows quota usage in the pi status bar and via the /quota command.

中文文档

Features

  • Scans providers in ~/.pi/agent/models.json.
  • Reads the matching key or access from ~/.pi/agent/auth.json.
  • Auto-detects the usage endpoint:
    • ${baseUrl}/usage
    • ${root}/v1/usage
  • Fetches and caches rate limit / daily usage.
  • Pulls ${baseUrl}/models and prefers the remote model list, falling back to locally configured models only when the remote endpoint is unavailable.
  • Reads remote model limit metadata when present (context_window, max_tokens, and common aliases), with conservative built-in fallbacks for endpoints that only return id / display_name.
  • Registers providers via pi.registerProvider().
  • Refreshes / displays quota on session_start, model_select, and turn_end.
  • Registers a /quota command that shows detailed billing and quota for the current provider.

Installation

Option 1: From npm (recommended)

pi install npm:pi-sub2api-provider

Or add it to ~/.pi/agent/settings.json:

{
  "packages": ["npm:pi-sub2api-provider"]
}

Option 2: From git

pi install git:github.com/dereknex/pi-sub2api-provider

Option 3: As a local package

pi install ./pi-sub2api-provider

Option 4: Load temporarily for testing

pi -e /Users/derek/workspaces/pi-sub2api-provider

Option 5: Keep using the global extensions directory

If you do not want to switch installation methods yet, copy the entry back to the global extension:

cp /Users/derek/workspaces/pi-sub2api-provider/src/index.ts ~/.pi/agent/extensions/sub2api-quota.ts

Requirements

You need the following files in place:

  • ~/.pi/agent/models.json with provider connection settings; the per-model models array is optional.
  • ~/.pi/agent/auth.json

Example structure:

// ~/.pi/agent/models.json
{
  "providers": {
    "my-sub2api": {
      "baseUrl": "https://example.com/v1",
      "api": "openai-completions"
    }
  }
}
// ~/.pi/agent/auth.json
{
  "my-sub2api": {
    "type": "api-key",
    "key": "..."
  }
}

Security note: this repository never stores or copies any API key or auth file.

API adapter

The provider defaults to openai-completions. To opt into Pi's generic OpenAI Responses adapter, set api explicitly:

{
  "providers": {
    "my-sub2api": {
      "baseUrl": "https://example.com/v1",
      "api": "openai-responses"
    }
  }
}

openai-responses uses the HTTP/SSE Responses API in this integration. It does not enable WebSocket transport or websocket-cached; a Sub2API WebSocket adapter is not included.

Development

cd /Users/derek/workspaces/pi-sub2api-provider
npm ci
npm test
npm run check
npm run pack:dry-run

Release

This project uses Changesets to manage versioning and npm publishing. For the first release, package.json stays at 0.0.0; the 0.1.0 release PR is generated from .changeset/initial-release.md.

See docs/RELEASE.md for details.

Usage

Inside pi:

/model
/quota

The status bar will show something like:

● my-sub2api: 5h $1.23/$10 • daily $4.56/$50 • weekly $12.34/$200

License

MIT © dereknex