pi-multi-pass — 複数OAuthアカウントでの回転管理拡張
概要
pi-multi-passは、pi用の「マルチサブスクリプション」拡張です。通常は単一のOAuthアカウントに紐づくプロバイダ接続を、複数アカウントとして登録でき、APIのレート制限に達した際に自動で別アカウントへ切り替える仕組みを提供します。サブスクリプションを「プール」にまとめて管理でき、TUI(対話的UI)コマンドを使って/usr的にサブスク管理やプール設定の操作が可能。piのエコシステムに対して、可用性と並列性を確保するためのシンプルな実装を目指しています。
リポジトリの統計情報
- スター数: 27
- フォーク数: 2
- ウォッチャー数: 27
- コミット数: 4
- ファイル数: 3
- メインの言語: TypeScript
主な特徴
- 複数サブスクリプション登録: プロバイダごとに追加のOAuthアカウントを登録可能
- ローテーションプール: サブスクリプションをグループ化し、レートリミット発生時に自動で切替
- TUI管理:
/subsや/pools等のインタラクティブなコマンドで管理操作 - 軽量でpiに統合しやすい: npmまたはgit経由で簡単にインストール
技術的なポイント
pi-multi-passはTypeScriptで実装されたpi用拡張で、設計上の中心は「複数のOAuth資格情報を安全に管理し、レート制限に応じて自動的に使い分ける」ことにあります。実装は大きく分けてサブスクリプション管理、プール管理、ローテーションロジック、piとの統合(コマンド/TUI)に分かれます。サブスクリプション管理は各プロバイダ(Anthropic等)に対するクレデンシャル情報をメタデータとして保持し、アクセストークンの更新や有効期限の監視を行います。プール管理では複数のサブスクを同一プールにまとめ、プール単位でリクエストを振り分けます。ローテーションロジックはレート制限エラー(HTTPステータスやプロバイダ固有のエラーコード)を監視し、該当アカウントを一時的に退避して次のアカウントへフォールオーバーする戦略を取ります。戦略には単純ラウンドロビンに加え、エラー発生時のバックオフや一定時間のクールダウンも組み込める設計です。piとの連携は拡張APIを通じてコマンドを登録し、TUIはユーザが対話的にサブスクの追加・削除、プール割当、優先度設定を操作できるようにします。TypeScript採用により型安全性が確保され、将来的なプロバイダ追加や認証フローの拡張が容易です。セキュリティ面ではトークンのローカル保存や表示制御、必要最小限の権限でのOAuthスコープ設定が考慮される想定で、レート制限の監視とログ出力により運用時のトラブルシュートが可能です。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- extensions: dir
- package.json: file
まとめ
piにおける多重サブスク管理と自動ローテーションを簡易に実現する実用的な拡張です。
リポジトリ情報:
- 名前: pi-multi-pass
- 説明: Multi-subscription extension for pi — use multiple OAuth accounts per provider (Anthropic, Codex, Copilot, Gemini, Antigravity)
- スター数: 27
- 言語: TypeScript
- URL: https://github.com/hjanuschka/pi-multi-pass
- オーナー: hjanuschka
- アバター: https://avatars.githubusercontent.com/u/2891702?v=4
READMEの抜粋:
pi-multi-pass
Multi-subscription extension for pi — use multiple OAuth accounts per provider with automatic rate-limit rotation.
Install
pi install npm:pi-multi-pass
Or via git:
pi install git:github.com/hjanuschka/pi-multi-pass
Features
- Multiple subscriptions: Add extra OAuth accounts for any provider
- Rotation pools: Group subscriptions and auto-rotate on rate limits
- TUI management:
/subsand/po...