OpenShell
OpenShell は OpenClaw 用の管理された sandbox バックエンドです。Docker コンテナーをローカルで実行する代わりに、OpenClaw は sandbox のライフサイクルをopenshell CLI に委任し、
それが SSH ベースのコマンド実行を備えたリモート環境をプロビジョニングします。
OpenShell プラグインは、汎用の SSH backend と同じコア SSH 転送とリモートファイルシステム
ブリッジを再利用します。これに OpenShell 固有のライフサイクル(sandbox create/get/delete、sandbox ssh-config)
と、任意の mirror ワークスペースモードを追加します。
前提条件
openshellCLI がインストールされていてPATH上にあること(またはplugins.entries.openshell.config.commandでカスタムパスを設定すること)- sandbox アクセス権のある OpenShell アカウント
- ホスト上で OpenClaw Gateway が実行中であること
クイックスタート
- プラグインを有効にし、sandbox バックエンドを設定します:
- Gateway を再起動します。次のエージェントターンで、OpenClaw は OpenShell sandbox を作成し、ツール実行をそこ経由にルーティングします。
- 確認します:
ワークスペースモード
これは、OpenShell を使うときの最も重要な判断です。mirror
ローカル
ワークスペースを正本のまま保ちたい場合は、plugins.entries.openshell.config.mode: "mirror" を使います。
動作:
execの前に、OpenClaw はローカルワークスペースを OpenShell sandbox に同期します。execの後に、OpenClaw はリモートワークスペースをローカルワークスペースへ同期し戻します。- ファイルツールは引き続き sandbox ブリッジ経由で動作しますが、ターン間ではローカルワークスペース が正本のままです。
- OpenClaw の外でローカルにファイルを編集し、その変更を sandbox に自動的に反映させたい。
- OpenShell sandbox を Docker バックエンドにできるだけ近い形で動作させたい。
- 各 exec ターン後に、ホストワークスペースへ sandbox の書き込みを反映させたい。
remote
OpenShell ワークスペースを正本にしたい場合は、plugins.entries.openshell.config.mode: "remote" を使います。
動作:
- sandbox が最初に作成されるとき、OpenClaw はローカルワークスペースから リモートワークスペースへ 1 回だけシードします。
- その後は、
exec、read、write、edit、apply_patchが リモートの OpenShell ワークスペースに対して直接動作します。 - OpenClaw はリモート側の変更をローカルワークスペースへ同期し戻しません。
- プロンプト時のメディア読み取りは、ファイルツールとメディアツールが sandbox ブリッジ経由で読むため、引き続き動作します。
- ワークスペースを主にリモート側で運用したい。
- ターンごとの同期オーバーヘッドを低くしたい。
- ホスト側ローカル編集でリモート sandbox の状態が暗黙に上書きされるのを避けたい。
openclaw sandbox recreate を使ってください。
モードの選び方
mirror | remote | |
|---|---|---|
| 正本ワークスペース | ローカルホスト | リモート OpenShell |
| 同期方向 | 双方向(各 exec ごと) | 初回シードのみ |
| ターンごとの負荷 | 高い(アップロード + ダウンロード) | 低い(直接リモート操作) |
| ローカル編集は見えるか | はい、次の exec で反映 | いいえ、recreate まで反映されない |
| 最適な用途 | 開発ワークフロー | 長時間実行エージェント、CI |
設定リファレンス
OpenShell の設定はすべてplugins.entries.openshell.config 配下にあります:
| Key | Type | Default | 説明 |
|---|---|---|---|
mode | "mirror" or "remote" | "mirror" | ワークスペース同期モード |
command | string | "openshell" | openshell CLI のパスまたは名前 |
from | string | "openclaw" | 初回 create 時の sandbox ソース |
gateway | string | — | OpenShell Gateway 名(--gateway) |
gatewayEndpoint | string | — | OpenShell Gateway エンドポイント URL(--gateway-endpoint) |
policy | string | — | sandbox 作成用の OpenShell ポリシー ID |
providers | string[] | [] | sandbox 作成時にアタッチするプロバイダー名 |
gpu | boolean | false | GPU リソースを要求する |
autoProviders | boolean | true | sandbox create 時に --auto-providers を渡す |
remoteWorkspaceDir | string | "/sandbox" | sandbox 内の主要な書き込み可能ワークスペース |
remoteAgentWorkspaceDir | string | "/agent" | エージェントワークスペースのマウントパス(読み取り専用アクセス用) |
timeoutSeconds | number | 120 | openshell CLI 操作のタイムアウト |
mode、scope、workspaceAccess)は、他のバックエンドと同様に
agents.defaults.sandbox 配下で設定します。完全な対応表については
Sandboxing を参照してください。
例
最小の remote セットアップ
GPU ありの mirror モード
カスタム Gateway を使うエージェント単位の OpenShell
ライフサイクル管理
OpenShell sandbox は通常の sandbox CLI で管理されます:remote モードでは、recreate が特に重要です。これは、そのスコープの正本である
リモートワークスペースを削除します。次回利用時に、ローカルワークスペースから
新しいリモートワークスペースがシードされます。
mirror モードでは、ローカルワークスペースが正本のままであるため、recreate は主に
リモート実行環境をリセットする用途になります。
recreate すべきタイミング
以下のいずれかを変更した後は recreate してください:agents.defaults.sandbox.backendplugins.entries.openshell.config.fromplugins.entries.openshell.config.modeplugins.entries.openshell.config.policy
現在の制限
- sandbox browser は OpenShell バックエンドではサポートされていません。
sandbox.docker.bindsは OpenShell には適用されません。sandbox.docker.*配下の Docker 固有ランタイム設定は、Docker バックエンドにのみ適用されます。
仕組み
- OpenClaw は
openshell sandbox createを呼び出します(設定に応じて--from、--gateway、--policy、--providers、--gpuフラグ付き)。 - OpenClaw は
openshell sandbox ssh-config <name>を呼び出して、sandbox の SSH 接続 詳細を取得します。 - コアは SSH 設定を一時ファイルに書き込み、汎用 SSH バックエンドと同じ リモートファイルシステムブリッジを使って SSH セッションを開きます。
mirrorモードでは: exec の前にローカルからリモートへ同期し、実行し、exec 後に同期し戻します。remoteモードでは: create 時に 1 回だけシードし、その後はリモート ワークスペースに対して直接操作します。
関連項目
- Sandboxing — モード、スコープ、バックエンド比較
- Sandbox vs Tool Policy vs Elevated — ブロックされたツールのデバッグ
- Multi-Agent Sandbox and Tools — エージェントごとの上書き
- Sandbox CLI —
openclaw sandboxコマンド