1. プロジェクト概要
Piは、Claude Agent SDK上に構築された自己拡張可能なターミナルベースのコーディングエージェントフレームワークであり、開発者にインタラクティブなCLIを提供します。このCLIは、単一の統合ランタイム内で、計画立案、コード編集、ツールの実行、および複数のLLMプロバイダーのサポートが可能です。
2. 背景とポジショニング
Piは、特定のIDEやプラットフォームに組み込まれたクローズドな単一ベンダーのアシスタントではなく、開発者が完全に所有し拡張できるコーディングエージェントを提供するために作成されました。その中核的なミッションは、軽量で組み合わせ可能な「エージェントハーネス」を提供することです。これは、ツール呼び出しと状態を管理するランタイム、ターミナルUI、モデル抽象化レイヤーで構成され、すべてが個別のパッケージとして公開されているため、チームはPi自身が使用するのと同じプリミティブの上に独自のエージェントを構築できます。
同様のコーディングエージェントプロジェクトと比較して、Piには3つの差別化要因があります。
- 設計上プロバイダーに依存しない — 単一のAIベンダーをハードコードする代わりに、Piは統一されたLLM API(
pi-ai)を搭載しており、一つのインターフェースを通じてOpenAI、Anthropic、Googleなどのプロバイダーと通信できます。 - 組み合わせ可能なアーキテクチャ — CLI、エージェントランタイム、モデルレイヤー、ターミナルUI、テレメトリはそれぞれ別個のパッケージであるため、開発者はアプリケーション全体ではなく個々の部品を再利用できます。
- サプライチェーンへの配慮 — プロジェクトは依存関係を固定し、shrinkwrapファイルを出荷しています。これは、ホストレベルの権限で実行されるツールにおいて、再現可能で監査可能なビルドを意図的に重視していることを反映しています。
3. 機能カテゴリ
🧠 エージェントランタイム
ツール呼び出しループと会話/アプリケーションの状態を処理するコアパッケージです。
- ツールの起動と結果の処理
- セッション全体での状態の永続化
- 拡張可能なツール登録
- 目的:自律的なコーディングエージェントを実行するために必要な「頭脳」を任意のCLIやアプリに提供します。
🌐 マルチプロバイダーLLMレイヤー
複数の大規模言語モデルAPIに対する統一された抽象化レイヤーです。
- OpenAIサポート
- Anthropic(Claude)サポート
- Googleサポート
- プロバイダーに依存しないリクエスト/レスポンスの型定義
- 目的:アプリケーションロジックを書き換えることなく、開発者がモデルプロバイダーを切り替えたり混合したりできるようにします。
💻 インタラクティブCLI
主力製品であるpi-coding-agentターミナルアプリケーションです。
- ターミナルでのインタラクティブなコーディングセッション
- ツールを介したファイル編集とコマンド実行
- セッションベースのワークフロー
- 目的:開発者が実際のコードベースでPiを使用するための日常的なエントリーポイントです。
🎛️ ターミナルUIライブラリ
リッチなターミナルインターフェースを構築するための専用パッケージ(pi-tui)です。
- スムーズな更新のための差分レンダリング
- エージェント出力用の再利用可能なUIプリミティブ
- 目的:Pi自身のCLI体験を支え、他のターミナルベースのエージェントツールを構築するためにも再利用できます。
📊 テレメトリフレームワーク
ベンダー中立のテレメトリ契約と型付きスキーマ(pi-telemetry)です。
- 構造化された型付きイベントスキーマ
- ベンダー中立の設計(単一の分析バックエンドに依存しない)
- 目的:チームが特定のテレメトリプロバイダーにロックインされることなく、エージェントの動作を観察し改善できるようにします。
4. 主なハイライト
- 自己拡張可能なハーネス — Piは、開発者が固定された機能セットに制限されるのではなく、エージェント自体を拡張し再形成できるように構築されています。
- マルチプロバイダーの柔軟性 — 一貫した単一のAPIサーフェスを通じて、OpenAI、Anthropic、GoogleなどのLLMプロバイダー間を切り替えることができます。
- モジュール式パッケージ設計 — 5つの焦点を絞ったパッケージ(CLI、エージェントコア、AIレイヤー、テレメトリ、TUI)を、個別にまたは組み合わせて採用できます。
- ターミナルファーストのUX — 差分レンダリングを採用したターミナルUIにより、コマンドラインから離れることなく、インタラクティブなセッションを高速かつ応答性の高いものに保ちます。
- セキュリティの透明性 — プロジェクトは、ファイルシステム、プロセス、ネットワーク、または認証情報アクセスに対する組み込みの権限システムを持たないことを明示的に文書化しており、代わりに隔離が必要なチーム向けにコンテナ化パターン(Gondolin、プレーンDocker、OpenShell)を公開しています。
- 再現可能なビルド — 依存関係の固定とshrinkwrapファイルにより、デフォルトで完全なホスト権限を持つツールのサプライチェーン整合性をサポートします。
5. 役割別のユースケース
- 一般の開発者:
pi-coding-agentCLIを日常的なペアプログラミングアシスタントとして使用し、ターミナルで直接コードの記述、編集、デバッグを行います。 - プラットフォーム/ツールエンジニア:ゼロから始める代わりに、
pi-agent-core、pi-ai、pi-tuiの上にカスタムコーディングエージェントや内部開発者ツールを構築します。 - セキュリティ重視のチーム:ホストレベルのタスクを許可する前に、文書化されたコンテナ化パターン(Gondolin、Docker、OpenShell)のいずれかの中でPiを実行し、ファイルシステム、ネットワーク、認証情報へのアクセスを制限します。
- DevOps/SRE:ベンダー中立の
pi-telemetryスキーマを既存の可観測性パイプラインに統合し、エージェントの使用状況と信頼性を監視します。
6. はじめに
必要な情報を見つける — 公式ドキュメントサイトから始めましょう:
https://pi.dev/docs/latest
インストールと実行:
npm install --ignore-scripts
npm run build
キャッシュされたモデルデータを使用して完全にオフラインで再ビルドする場合:
npm run build:offline
ローカルテストのためにソースからCLIを実行する場合:
./pi-test.sh
貢献:
npm run check # リント、フォーマット、型の検証
./test.sh # テストスイートの実行
貢献ガイドラインについては、リポジトリ内のCONTRIBUTING.mdおよびAGENTS.mdを参照してください。
7. プロジェクト構成
pi/
├── packages/
│ ├── pi-coding-agent/ # インタラクティブCLI(メインエントリーポイント)
│ ├── pi-agent-core/ # エージェントランタイム:ツール呼び出しと状態管理
│ ├── pi-ai/ # 統一されたマルチプロバイダーLLM API
│ ├── pi-telemetry/ # ベンダー中立のテレメトリ契約/スキーマ
│ └── pi-tui/ # ターミナルUIライブラリ(差分レンダリング)
├── CONTRIBUTING.md # 貢献ガイドライン
├── AGENTS.md # エージェント関連の開発ノート
├── test.sh # フルテストスイートランナー
└── pi-test.sh # ソースからCLIを直接実行
パッケージの分割はPiの設計思想を反映しています。CLIは基盤となるエージェントランタイム、モデルレイヤー、UIツールキットの単なる消費者の一つに過ぎず、これらはすべて独立して再利用可能です。
8. 関連エコシステム
- Claude Agent SDK — Piのエージェントハーネスが構築されている基盤SDKです。
- LLMプロバイダー —
pi-ai抽象化レイヤーを通じてアクセスされるOpenAI、Anthropic、GoogleのAPIです。 - コンテナ化ツール — Gondolin、Docker、OpenShellは、Piを安全に実行するための補完的な隔離レイヤーとして文書化されています。
- npmレジストリ — Piは
@earendil-works/pi-coding-agentおよび関連するスコープ付きパッケージとして配布されています。
9. ライセンス
PiはMITライセンスの下でリリースされています。
- ✅ 商用利用を含め、自由に使用、コピー、修正、配布できます
- ✅
pi-agent-core、pi-ai、pi-tuiの上に派生ツールを自由に構築できます - ❌ 無保証であり、著作者は使用から生じる損害について責任を負いません
- ℹ️ 元の著作権表示とライセンス通知は、ソフトウェアの複製または実質的な部分に保持する必要があります
- ℹ️ Piはデフォルトでホストプロセス権限で実行され、組み込みのアクセス制御はありません。機密環境へのアクセスを許可する前に、コンテナ化のガイダンスを確認してください
10. よくある質問
Q: PiはどのLLMプロバイダーをサポートしていますか?
A: pi-aiパッケージを通じて、Piは単一の統一されたAPIの背後でOpenAI、Anthropic、Googleなどのプロバイダーをサポートしています。
Q: 自分のマシンでPiにコマンドを実行させても安全ですか?
A: Piには、ファイルシステム、プロセス、ネットワーク、または認証情報へのアクセスを制限する組み込みの権限システムがありません。デフォルトではホストプロセス権限で実行されます。隔離が必要な場合は、文書化されたコンテナ化パターン(Gondolin、Docker、またはOpenShell)のいずれかを使用してください。
Q: ソースからPiをインストールしてビルドするにはどうすればよいですか?
A: npm install --ignore-scriptsを実行し、続いてnpm run build(またはオフライン再ビルドの場合はnpm run build:offline)を実行してから、./pi-test.shを使用してソースから実行します。
Q: ターミナルUIやエージェントランタイムなど、Piの一部だけを使用することはできますか?
A: はい。Piは独立したパッケージ(pi-coding-agent、pi-agent-core、pi-ai、pi-telemetry、pi-tui)に分割されているため、フルCLIなしで個々のコンポーネントを採用できます。
Q: どうすれば貢献できますか?
A: 変更を提出する前にnpm run checkと./test.shを実行し、リポジトリ内のCONTRIBUTING.mdおよびAGENTS.mdのガイドラインに従ってください。
11. クイックリンク
- リポジトリ: https://github.com/earendil-works/pi
- 公式ドキュメント: https://pi.dev/docs/latest
- ホームページ: https://pi.dev
- 貢献ガイド:
CONTRIBUTING.md(リポジトリ内) - コミュニティ: プロジェクトホームページにリンクされているDiscordサーバー
12. まとめ
Piは、開発者にプロバイダーに依存しない自己拡張可能なコーディングエージェントを提供します。これは、既製のターミナルCLIとして、あるいはカスタムエージェントを構築するための組み合わせ可能なビルディングブロックのセット(エージェントランタイム、モデルレイヤー、ターミナルUI、テレメトリ)として使用できます。これは、クローズドな単一ベンダーのアシスタントではなく、AIコーディングツールに対する制御を望む開発者やプラットフォームチームに最適です。ただし、アクセス制御と隔離は組み込み機能ではなく、運用者の責任であるという明確な理解が必要です。