Bastion バックグラウンド コーディング エージェント用の自己ホスト型オーケストレーターです。開発者のラップトップ上で複数のエージェントのプロセスやコンテナを提供するのではなく、環境ごとに個別の Cloud Hypervisor 仮想マシンを作成します。テンプレートは、CPU、メモリ、ディスク、エージェント、トンネル、ライフサイクル アクションをスキーマ検証済み JSON として定義します。準備されたレイヤーは再利用され、各タスクは新しい書き込み可能なオーバーレイを受け取ります。
これはインフラストラクチャであり、コーディング モデルではありません。 Bastion は現在、OpenCode を直接統合し、他のツール用に SSH を公開します。これにより競合が軽減され、封じ込めが向上しますが、VM はセキュリティ境界の 1 つにすぎません。特権ホスト デーモン、ローカル API、テンプレート サプライ チェーン、ネットワーク出力、シークレット、リポジトリ、およびマージ パスには引き続き明示的なポリシーが必要です。
Bastion の組み立て方法
| コンポーネント | 責任 | 信頼の意味合い |
|---|---|---|
| ホスト API | メタデータを SQLite に保存し、デフォルトで localhost:3148 で HTTP を提供します | 特権のないプロセスですが、呼び出し元は誰でも環境を作成、入力、削除できます |
| bastiond | Unix ソケットを介して特権付き VM ライフサイクルとネットワーク操作を実行します | root として実行します。侵害はすべてのゲストとホストのネットワークに影響を与える可能性があります |
| Cloud Hypervisor VM | ゲスト カーネル、ルート ファイルシステム、プロセス、ネットワークを 1 つの環境に提供 | 共有プロセスよりも強力な分離ですが、絶対的な境界ではありません |
| ベースイメージ | 共有 Ubuntu カーネル/initramfs/root ファイルシステムおよびゲスト コンポーネント | 脆弱なベースまたは汚染されたベースがすべてのテンプレートに伝播します |
| テンプレートオーバーレイ | 不変の準備されたプロジェクトの依存関係と初期化アクション | 再現性が向上します。シークレットをレイヤーにベイクしてはなりません |
| 環境オーバーレイ | 1 つのタスクに対して書き込み可能なコピーオンライト ディスク | 設計上使い捨てです。必要な出力は削除する前にエクスポートする必要があります |
隔離の利点とそれが証明されていないこと
各 VM には独自のゲスト カーネル、プロセス、ファイル システム、およびネットワークがあります。これにより、異なる依存関係をインストールしたり、同じポートをバインドしたり、共通のワークツリーを編集したりするエージェント間の偶発的な競合が軽減されます。また、ラップトップから未知のプロセス ツリーをクリーンアップしようとするのではなく、環境を削除するという、より明確な破壊単位も作成されます。
隔離だけでは安全な自律性が得られません。幅広い GitHub トークンを持つ VM は引き続きブランチを削除できます。無制限の出力でもコードが漏洩する可能性があります。トンネルは脆弱な開発サーバーを公開する可能性があります。そして、悪意のあるテンプレート アクションがゲスト内で root として実行されます。 Bastion の現在のドキュメントには、テンプレート アクションはゲスト ルートとして実行され、ホスト デーモンはルートとして実行されるとも記載されています。両方の事実を脚注ではなく設計入力として扱います。
| 脅威 | VM が役立つ | 追加の制御が必要 |
|---|---|---|
| 2 つのエージェントが同じ依存関係を変更する | 個別の書き込み可能なディスクとプロセス | ブランチ/ワークツリーを分離し、レビューをマージする |
| エージェントが破壊的なシェル コマンドを実行する | 使い捨てゲストの内部に損傷が残る可能性があります | ホストのマウント、スコープ指定された認証情報、送信制限はありません |
| 悪意のあるパッケージのインストール | 他のゲストからのプロセスの分離 | レジストリ ポリシー、ロックファイル、スキャンと再構築 |
| 資格情報の悪用 | 資格情報が外部権限を付与する場合はなし | 有効期間の短いタスクごとのトークンとプロバイダー側の制限 |
| ハイパーバイザーまたはデーモンのエクスプロイト | VM 境界により横方向の動きが遅くなる可能性がある | ホストのパッチ適用、最小限のサービス、専用のワーカー ノード |
| 不正なコードが本番環境に到達 | なし | 保護されたブランチ、CI、レビューおよび展開の承認 |
ホストの要件とインストール
現在のランタイムには、x86_64 上の Linux、読み取り/書き込みアクセスが必要です。 /dev/kvm そして /dev/vhost-vsock、および Bastion ホスト自体が VM である場合のネストされた仮想化。 macOS Apple シリコンはクライアント専用です。必要なホスト ユーティリティには、SSH/SCP、qemu-img、mkfs.vfat、mcopy、iptables、および IP ツールが含まれます。 Bastion は、明示的に要求された場合に、いくつかのパッケージ マネージャーを通じて不足しているユーティリティを自動的にインストールできます。
ホームページでは、curl-to-shell インストーラーが提供され、GitHub Releases ではアーカイブが提供されます。運用環境の場合は、スクリプトを検査し、リリースの出所とチェックサムを確認し、バージョンを固定し、インストールされている Cloud Hypervisor、ゲスト カーネルおよびベース イメージのバージョンを記録します。走る 要塞システムのチェック インストール後とホストのアップグレード後。デフォルトの API を信頼できないネットワークに直接公開しないでください。
テンプレートはインフラストラクチャ コードです
テンプレートは不変の JSON で、リソース、名前付きトンネル、エージェント、ライフサイクル アクションを定義します。作成中に、Bastion は一時 VM を起動し、初期化アクションを実行し、準備された qcow2 レイヤーを保存します。新しい環境では、新しい書き込み可能なオーバーレイが追加され、オプションの開始アクションが実行されます。これにより、依存関係のインストールが再利用可能になり、エージェント環境が再現可能になります。
バージョン テンプレート JSON はリポジトリと並行しますが、プロジェクトの利便性から組織ポリシーを分離します。パッケージのバージョンと Git コミットを固定します。避ける カール |バッシュ init アクション内、フローティング パッケージ タグ、未チェックのバイナリ ダウンロード。 JSON、シェル履歴、基本イメージ、またはテンプレート スナップショットには、API キーを決して配置しないでください。スナップショットには、削除されたファイルと環境の状態を保存できます。
| テンプレートフィールド | 質問を確認する | 安全なデフォルト |
|---|---|---|
| リソース | 1 つのジョブでホストの CPU、メモリ、またはディスクを使い果たす可能性がありますか? | 小さなクォータとホスト容量の予約 |
| エージェント | どのサーバーがインストールされ、どの許可モードが適用されますか? | インタラクティブな保護機能を備えた 1 つの承認済みエージェント/バージョン |
| アクションの初期化 | root として実行され、不変層の一部となるものは何ですか? | ピン留めされ、レビューされた、非機密依存関係のセットアップ |
| アクション.スタート | 起動するたびに何が変わるのでしょうか? | 冪等チェックアウトと明確なログによるサービス起動 |
| トンネル | API を介して到達可能になるゲスト ポートはどれですか? | タスクでレビュー済みのプレビューが必要な場合を除き、トンネルはありません |
| 認証/秘密 | 資格情報がログ、ディスク、または子プロセスを通じて漏洩する可能性はありますか? | 実行時のみに注入される有効期間の短いタスク トークン |
リポジトリ、ブランチ、アーティファクト フロー
各環境に固有の問題、ブランチ、タスク キーを与えます。リポジトリを読み取り、指定されたブランチのみをプッシュできるトークンを使用してクローンを作成します。保護されたブランチをバイパスしたり、独自のプル リクエストを承認したり、組織設定を管理したりする権限をエージェントに与えないでください。出力は、制御されたパス (コミット/差分、テスト レポート、ビルド アーティファクト、機械可読タスクの概要) を通じて出力される必要があります。
- 許可されたパス、禁止された変更、受け入れテストに関する問題を作成します。
- 1 つのリポジトリとタスク ブランチを範囲とする、有効期間の短い認証情報を作成します。
- 固定されたテンプレート リビジョンから環境を作成します。
- 送信制限と実行時間制限を設定してエージェントを実行します。
- ログ、差分、テスト結果、依存関係の変更、アーティファクト ハッシュを収集します。
- 人間によるレビューの前に資格情報を取り消してください。
- 通常の保護ブランチと CI コントロールを介してマージします。
- 環境を削除し、データ保持の期待値を確認します。
ネットワーク設計とトンネル
API はデフォルトで localhost にバインドされており、プロジェクトは、それにアクセスできる人は誰でも環境を作成、削除、および入ることができると警告します。リモート アクセスが必要な場合は、慎重に構成されたプライベート ネットワークなどの認証された TLS 境界の内側に配置してください。バインド アドレスを 0.0.0.0 に変更して、クラウド ファイアウォールで十分であると想定しないでください。
目的地と目的に応じてゲストの退出を制御します。パッケージ レジストリ、モデル プロバイダー、およびソース ホストが許可される場合があります。特定のタスクが承認されない限り、メタデータ エンドポイント、内部管理システム、運用データベースはブロックされる必要があります。名前付きサービス トンネルはプレビュー サーバーには便利ですが、プレビュー アプリケーションには認証がないことが多く、開発ミドルウェアが実行されます。トンネルの寿命を短くし、公衆への露出を避けてください。
シークレットとエージェントの権限
設定例では、キー値を埋め込むのではなく、保存されたシークレットを参照します。これは正しい方向ですが、エージェント VM への注入では、ゲスト ルート制御を持つプロセスでシークレットを利用できるようになります。有効期限が自動的に切れる、範囲が狭いインストール トークン、ワークロード ID、または仲介された資格情報を優先します。ソース アクセス、モデル アクセス、パッケージ公開、クラウド デプロイメントを異なる ID に分離します。
ホームページの例では、OpenCode 権限の値「allow」を示しています。正確なセマンティクスをマッピングせずに、許容的な例を運用環境にコピーしないでください。 VM を分離するとホストへの影響は軽減されますが、すべての外部アクションが元に戻せるわけではありません。重要な操作は、ゲスト外部の人間またはポリシー サービスの背後で実行してください。
単一ホストとクラスターの比較
単一の KVM ホストが最も単純な評価ターゲットです。オプションのクラスターは、共有 Postgres 状態、ベース/テンプレート アーカイブ用の S3-compatible ストレージ、ノード登録、スケジューリング、およびプロキシ接続を追加します。これにより、容量と可用性のオプションが増加しますが、セキュリティとバックアップの面も拡大します。
| デザイン | 利点 | 新たな責任 |
|---|---|---|
| 単一ホスト | 最小のコントロール プレーンと簡単なデバッグ | 容量、ローカル障害、およびメンテナンスウィンドウ |
| 複数のスタンドアロン ホスト | チームまたは信頼レベルごとに手動で分離する | 重複したイメージ、ポリシー、スケジュール |
| Bastion クラスター | 共有スケジュールとテンプレート配布 | Postgres、オブジェクトストレージ、ノード認証とリカバリ |
| クラウド KVM インスタンス | 柔軟なインフラストラクチャ | ネストされた仮想化のサポート、インスタンスのコスト、クラウド IAM |
| 専用ベアメタル | 予測可能なパフォーマンスとより明確なテナント境界 | ハードウェア操作と低速な容量変更 |
容量とコストの計画
VM の分離には実際のオーバーヘッドがかかります。オペレーティング システム、bastiond、API、ページ キャッシュ、およびピーク時の同時ゲスト用にホスト メモリを割り当てます。ディスクの消費量には、共有ベース、テンプレート オーバーレイ、すべての書き込み可能な環境、ログ、クラスター アーカイブが含まれます。コピーオンライトは最初はスペースを節約しますが、書き込みの多いビルドは急速に増大する可能性があります。
環境の起動遅延、キュー時間、CPU とメモリの飽和、ディスクの増加、ネットワーク下り、エージェント/プロバイダーの支出、失敗したタスクのクリーンアップ、および受け入れられた変更ごとのコストを追跡します。 TTL とアイドル終了を設定します。削除を所有するプロセスがない場合、「使い捨て」環境は永続的な費用となります。
代替案
| オプション | ベストフィット | トレードオフと Bastion |
|---|---|---|
| Bastion | 宣言レイヤーを使用した Linux/KVM 上のセルフホスト型エージェントごとの VM | 1.0 より前では、特権のあるインフラストラクチャ操作が必要です |
| E2B | マネージド、API-初のクラウド サンドボックス | セルフホスト制御と外部データプロセッサが少ない |
| Daytona | プロバイダー全体にわたる開発環境のオーケストレーション | より広範なワークスペースの焦点と異なる分離モデル |
| GitHub アクションランナー | 監査可能な非対話型リポジトリの自動化 | 永続的な会話エージェントにはあまり適していません |
| Firecracker プラットフォーム | カスタム microVM コントロール プレーンを構築するチーム | より高度なエンジニアリング、最大限のアーキテクチャ制御 |
| 根のないコンテナ | オーバーヘッドの低い信頼できるワークロード | 共有ホストカーネルと弱い分離境界 |
よくある質問
Bastion は Mac 上で実行できますか?
現在、VM ホストには KVM を備えた Linux x86_64 が必要です。 Apple Silicon macOS は、仮想化ホストではなくクライアントとして機能できます。
どのコーディング エージェントがサポートされていますか?
OpenCode は、現在組み込まれている統合です。 SSH は他のツールへのパスを提供しますが、それらのワークフローには独自のセットアップと検証が必要です。
すべてのエージェントは個別の VM 内にありますか?
各 Bastion 環境は、独自のゲスト カーネル、ファイル システム、プロセス、およびネットワークを備えた Cloud Hypervisor VM を受け取ります。
本番環境に対応していますか?
このプロジェクトは自身を 1.0 以前であると説明し、インターフェースが変更される可能性があると警告しています。限定されたパイロットを実行し、正確なバージョンを固定します。
VM を分離すると自動承認は安全になりますか?
いいえ。ホスト ファイルが分離されている場合でも、外部資格情報とネットワーク権限は引き続き重要です。
Bastion はオープンソースですか?
はい。現在のリポジトリは MIT ライセンスに基づいて公開されています。
一次情報源
- 公式製品の概要とワークフロー
- 公式リポジトリ、アーキテクチャ、制限事項
- 公式ホストおよびランタイムセットアップガイド
- 公式テンプレートガイド
- 公式クラスターアーキテクチャガイド
- 公式プライベート リモート アクセスの例
- MIT公式ライセンス
- Cloud Hypervisor ドキュメント
最終レビュー日は 2026 年 7 月 25 日です。Bastion は 1.0 より前です。展開する前に、現在のスキーマ、リリース、セキュリティに関する注意事項、およびインフラストラクチャ要件を確認してください。



