NVIDIA/OpenShell
AI エージェントに、決めた範囲のものだけを触らせて動かす
どういうものか
NVIDIA が作っている、AI エージェントを安全に動かすための実行環境だ。エージェントは、ファイルを読み、パッケージを入れ、API を呼び、認証情報を使えるほど役に立つが、そのぶん危ない。OpenShell では、エージェントごとに何に触ってよいかを「ポリシー」に書き、それを守らせる。
エージェントは1体ずつ隔離されたサンドボックスで動く。OS のカーネルの段階で、触れるファイルと使えるシステムコールを絞り、外への通信はすべてポリシーの確認を通ってから出ていく。認証情報はエージェントに見せない。許可された宛先へ向かう通信にだけ、OpenShell が後から付け足す。
ポリシーを変えるときは、形式検証(数学的に調べる手法)で、その変更が新たに何を許すかを調べる。認証情報を持って新しいホストへ出る、新しい API の操作を呼ぶ、といった危ない広がりが見つかれば、人が確かめるまで止めておく。動かせるのは Linux、Apple Silicon の macOS、WSL 2 の Windows(試験的)で、Docker、Podman、仮想化のいずれかが要る。Kubernetes の上にも置ける。
どんなときに使うか
コーディングエージェントに作業を任せたいが、手元の秘密情報や社内のネットワークには触らせたくないとき
何を読めて、どこへ通信できるかをポリシーで先に決めてから動かせる。
チームで複数のエージェントを、同じ規則のもとで動かしたいとき
サンドボックス、ポリシー、アクセスを管理する「ゲートウェイ」を1か所に置き、Kubernetes の上でも運用できる。
注意点
既定のサンドボックスに、エージェントは入っていない。 既定のイメージは最小構成の Ubuntu だ。動かすときは、エージェント入りのイメージを指定してサンドボックスを作る。公式の手順書は、OpenCode のイメージと OpenRouter の無料モデルを例にしている。
匿名の利用統計を送る。 送るのは動作の種類や件数に限るとしている。止めるには、ゲートウェイで OPENSHELL_TELEMETRY_ENABLED=false を設定する。
Kubernetes に置くなら、ネットワークの設定に条件がある。 使っている CNI が NetworkPolicy を強制できる必要がある。