jonwiggins/optio
Workflow orchestration for AI agent swarms.
Optio – セルフホスト型AIエージェントオーケストレーションプラットフォーム
概要 – Optioは、AI駆動型エージェント(Claude Code、OpenAI Codex、GitHub Copilot、Geminiなど)を、独自のKubernetesクラスターや開発者のラップトップ上でセッションとして実行できるオープンソースのコントロールプレーンです。セッションは5つのシンプルな属性(いつ、どこで、誰が、何を、その後どうするか)によって定義され、「チケットをマージ済みPRに変換する」といった単発のワークフローから、メッセージ駆動型の長期間稼働するエージェントスウォームまで、あらゆるものに対応可能です。
重要性 – ほとんどの商用「AIエージェント」サービスはSaaS専用であり、単一のモデルにロックインされ、ソースコードや機密情報をサードパーティのクラウドに送信する必要があります。Optioはオーケストレーション層をインフラストラクチャ内に配置し、すべてのエージェント作業をスケジュール、トリガー、監視するための単一のUI/APIを提供し、信頼するあらゆるベンダーモデルを自由に組み合わせて使用できるようにします。
コアコンセプト
| コンセプト | 説明 |
|---|---|
| Session | 単一のフォームを通じて作成される、永続的で観測可能な作業単位。フォームは When(トリガー)、Where(K8sポッドまたはローカルマシン)、Who(モデル/ランタイム)、What(プロンプトまたはテンプレート)、Then(終了、待機、または永続化)をキャプチャします。 |
| Feed | すべてのセッションは、統一されたステータススケール(needs-you → running → queued → … → done/failed)を持つ単一の時系列フィードに表示されます。 |
| Reconciliation control plane | 世界のフリーズされたスナップショットに基づいて各セッションの次の状態を決定するKubernetesスタイルのループ。compare-and-swapを使用して変更を適用し、実行のスタックを防ぎます。 |
| Persistent agents & swarms | ターン間で状態を保持し、受信トレイを持ち、内部HTTP APIを介して相互にメッセージを送信できる名前付きエージェント。ディスパッチャー・スペシャリストパターンに役立ちます。 |
| Connections (MCP) | 起動時にポッドに注入される事前設定済みの統合(Notion、Slack、Linear、GitHub、PostgreSQL、Sentry、カスタムHTTP APIなど)。エージェントに外部ツールへの安全でスコープ制限されたアクセス権を与えます。 |
今すぐできること
- Ticket → merged PR – GitHub/Linear/Jiraの課題を割り当てると、Optioがリポジトリポッドをプロビジョニングし、選択したモデルを実行し、PRを開き、CIを監視し、レビューエージェントを実行し、成功時に自動マージします。
- Scheduled / webhook jobs – 夜間の依存関係監査、PagerDutyトリアージ、毎週のSlackレポート、DB-to-Notionクエリなど、すべてcronまたは受信webhookによって駆動されます。
- Recurring blueprints – セッションをブループリントとして保存し、各トリガーペイロードで自動的に実行します。
- Local automations – GitHubのレビューリクエストやSlackのメンションなどのイベントに対し、開発者のワークステーション上で(自身のCLIログインを使用して)エージェントを実行します。機密情報はマシンから決して離れません。
- Interactive terminals – ブラウザやiOSアプリでモデルバックエンドのターミナルを開き、リアルタイムログを取得し、モデルが入力待ちになった際に「needs-you」通知を受け取ります。
- Agent swarms – 作業をスペシャリストエージェントにルーティングするディスパッチャーエージェントをデプロイします。各エージェントは独自のポッドライフサイクルモード(always-on, sticky, on-demand)で実行されます。
- Cost & usage tracking – セッションごとのトークン使用量、モデル固有の制限、日次コストの内訳がUIに表示されます。
アーキテクチャの概要
- Control plane – 5つの属性を具体的なランタイム(リポジトリポッド、プールされたポッド、またはローカルターミナル)にマッピングする純粋な決定関数(
deriveKind)。状態変更は、CAS更新と定期的な再同期を行うK8sスタイルの調整器を通じて流れます。 - Pod-per-repo model – リポジトリごとに1つの長期間稼働するポッドがgitワークツリーを保持します。複数のセッションが同じクローンを共有することで、起動時間を短縮し、ツールをキャッシュします。
- Job pods – リポジトリを必要としないセッション(監査、レポートなど)のための共有プールポッド。
- Local daemon –
optio localはワークステーション上で軽量なデーモンを実行し、サーバーへのWebSocketを公開することで、トリガーがターミナルベースのエージェントを起動できるようにします。 - Persistence – PostgreSQLがセッションメタデータ、コスト台帳、RBAC定義を保存し、Redisが短期間のキューとエージェントの受信トレイに使用されます。
- Security – AES-256-GCMによる保存データの暗号化、OIDC/OAuthおよびGitHub-App認証、Kubernetes RBACの強制、およびオプションの耐量子TLS。
Optioを検討すべき対象
- コードやデータを外部SaaSに送信できない組織(金融、医療、政府、防衛)。
- プロンプト、ポリシー、接続を開発者に公開するための単一の内部「AIツール」層を求めるプラットフォームチーム。
- すでにKubernetesを実行しており、導入が容易なHelmチャートを探しているチーム。
- 複数のLLMベンダーを評価中、またはマルチエージェントシステムを構築中の企業。
- ラップトップ、クラスター、モバイルデバイスで同じエージェント体験を求める開発者。
開始方法
- Install – 提供されたHelmチャートを使用してデプロイします(K8sクラスター、Postgres、Redisが必要)。オプションでワークステーション上で
optio localを実行します。 - Configure connections – GitHub、Slack、Notionなどの資格情報を一度追加します。
- Create a session – Web UIまたはCLIを使用して単一のフォーム(When/Where/Who/What/Then)に入力します。
- Watch – フィードにはライブログ、コスト、ステータスが表示されます。インタラクティブなセッションは、ブラウザやiOSアプリから引き継ぐことができます。
TL;DR – Optioは、AIエージェントのワークロード(PRボット、スケジュールされたジョブ、インタラクティブなターミナル、永続的なスウォーム)を独自のKubernetesクラスターやラップトップ上で実行、スケジュール、監視できるオープンソースのセルフホスト型プラットフォームです。コード、機密情報、モデルの選択を完全に制御下に置くことができます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト