このページの
box.* 設定はすべて data/config.yaml に記述します。ファイルの場所と読み込みの仕組みはシステム環境設定を参照してください。推奨設定
enabled:サンドボックスのマスタースイッチ。falseにすると、サンドボックス組み込みツール、Skill の追加 / 編集、stdio MCP のホスティングなど Box 依存の機能はすべて無効になります。backend:下記「バックエンドの選択」を参照。local.profile:セキュリティプロファイル。ネットワーク、マウント、リソース制限を制御。local.host_root:ホスト側のサンドボックス作業ディレクトリ。サンドボックス内では/workspaceにマウントされます。local.skills_root:Skill パッケージのディレクトリ。相対パスはhost_root配下に解決され、デフォルトはhost_root/skills。docker.cpu_limit_enabled:Docker サンドボックスコンテナに CPU 制限を付けるかどうか。falseにするとdocker run --cpusを省略し、メモリと PID 制限は維持します。
Skill は Box Runtime が管理する skill store からのみ読み込まれます。Box Runtime またはバックエンドが利用できない場合、Skill 一覧は空になり、追加 / 編集 /
register_skill も使えません。data/skills/ へのフォールバックは行いません。バックエンドの選択
Box はローカルコンテナ、クラウドサンドボックス、または Box Runtime ホスト上のプロセスとして動作させられます。box.backend で使用する方式を指定します:
local は「自動選択」のショートハンドであり、docker / nsjail と並列の 4 つ目のバックエンドではありません。試行対象は Docker と Nsjail だけで、host が自動選択されることはありません。ローカル系バックエンドは box.local.* のワークスペース設定を使い、クラウドバックエンドは box.e2b.* を使います。
backend は強制値です。docker を指定して Docker が使えない場合、Nsjail や E2B に自動でフォールバックしません。自動 fan-out するのは local だけです。環境変数 BOX__BACKEND で box.backend を上書きできます(config.yaml より優先)。セキュリティプロファイル
box.local.profile は Docker / Nsjail ローカルサンドボックスバックエンドのネットワーク、マウント、リソース制限を制御します:
最小権限を優先:ネットワークが不要なら
default または offline_readonly;allowed_mount_roots には必要なディレクトリのみを追加。
Host バックエンドはこれらの隔離ポリシーを適用しません。profile、CPU / メモリ / PID 制限、読み取り専用 rootfs、ネットワーク無効化を設定しても、ホストプロセスにサンドボックス境界は作られません。
ローカルワークスペース設定(box.local.*)
Docker、Nsjail、Host はワークスペースパス設定を共有します。隔離とリソース設定は、選択したサンドボックスバックエンドが実施できる場合にのみ有効です:Host バックエンド(信頼できるローカル開発)
Host は依存関係が最も少ないローカルオプションで、Docker や Nsjail は不要です。必ず明示的に選択します:exec/read/write/edit/glob/grep、Skills、stdio MCP は既存の Box API をそのまま使います。違いは実行層だけです:
/workspace、workdir、Skill のマウントパスは Box Runtime ホスト上の実パスに変換されます。- 子プロセスは最小限のパス、ロケール、端末環境と、リクエストで明示的に渡された変数だけを継承します。LangBot / Box の制御シークレットは自動継承されません。これは意図しない漏えいを減らしますが、ファイルシステム隔離を提供するものではありません。
execと管理対象プロセスは個別のプロセスグループで起動します。タイムアウト、キャンセル、プロセス停止、セッション削除、Runtime 終了時には対応するプロセスツリーを終了します。- アイドルクリーンアップ、管理対象プロセスによる維持、
persistentのルールは他のバックエンドと同じです。 - ステータスレスポンスには
unsafe_direct_execution: trueが含まれ、サンドボックス隔離がないことを運用側で識別できます。
Host は Box Runtime が動作する環境を指します。LangBot がローカル stdio Box Runtime を管理する場合は現在のマシンです。Box Runtime 自体がコンテナ内で動作している場合、コマンドはそのコンテナ内で直接実行され、物理ホストへ自動的に抜けることはありません。
sh を備えた POSIX システム(Linux / macOS)をサポートします。Windows では WSL を使用してください。Windows ネイティブのプロセスバックエンドはまだサポートされていません。
外部 WebSocket Box Runtime で Host を使う場合、LangBot と Box Runtime の両方に同じ強力なランダム値の LANGBOT_BOX_CONTROL_TOKEN を設定してください。ローカル管理の stdio Runtime では追加のトークン設定は不要です。管理サンドボックス admission を有効にした Cloud 環境では、隔離能力と必須バックエンドの検証が継続され、Host がこれらを迂回することはありません。
Docker バックエンド設定(box.docker.*)
クラウドバックエンド設定(box.e2b.*)
backend: 'e2b' を指定したうえで設定します:
E2B はホスト側に Docker や Nsjail を必要とせず、毎回の実行をリモートサンドボックスで行います。
Docker Compose デプロイ
Docker Compose では、サンドボックス設定はlangbot サービス側に記述します。LangBot は起動時に INIT RPC で設定を langbot_box に転送します。
box.runtime.endpoint で URL を指定します:
環境変数
langbot_box サービス側には BOX__* や LANGBOT_BOX_* を設定しないでください。Box Runtime はこれらを直接読みません——設定は LangBot から INIT RPC 経由で渡されます。