アーキテクチャ
NemoClawは2つの主要コンポーネントから成ります。OpenClaw CLIと統合するTypeScriptプラグインと、OpenShellリソースをオーケストレーションするPythonブループリントです。
NemoClawプラグイン
プラグインは軽量なTypeScriptパッケージで、openclaw nemoclaw配下にコマンドを登録します。
OpenClaw gatewayとインプロセスで実行され、ユーザー向けのCLIインタラクションを処理します。
nemoclaw/
├── src/
│ ├── index.ts プラグインエントリ — 全コマンド登録
│ ├── cli.ts Commander.jsサブコマンド配線
│ ├── commands/
│ │ ├── launch.ts OpenShellへの新規インストール
│ │ ├── connect.ts サンドボックスへの対話シェル
│ │ ├── status.ts ブループリント実行状態 + サンドボックスヘルス
│ │ ├── logs.ts ブループリント・サンドボックスログのストリーム
│ │ └── slash.ts /nemoClawチャットコマンドハンドラ
│ └── blueprint/
│ ├── resolve.ts バージョン解決、キャッシュ管理
│ ├── fetch.ts OCIレジストリからブループリントをダウンロード
│ ├── verify.ts ダイジェスト検証、互換性チェック
│ ├── exec.ts ブループリントランナーのサブプロセス実行
│ └── state.ts 永続状態(実行ID)
├── openclaw.plugin.json プラグインマニフェスト
└── package.json openclaw.extensions配下にコマンド宣言
NemoClawブループリント
ブループリントは独自のリリースストリームを持つバージョン管理されたPythonアーティファクトです。 プラグインがブループリントの解決、検証、サブプロセスとしての実行を行います。 ブループリントがOpenShell CLIとのすべてのやり取りを駆動します。
nemoclaw-blueprint/
├── blueprint.yaml マニフェスト — バージョン、プロファイル、互換性
├── orchestrator/
│ └── runner.py CLIランナー — plan / apply / status
├── policies/
│ └── openclaw-sandbox.yaml 厳格なベースラインネットワーク + ファイルシステムポリシー
ブループリントのライフサイクル
flowchart LR
A[resolve] --> B[verify digest]
B --> C[plan]
C --> D[apply]
D --> E[status]
- Resolve. プラグインがブループリントアーティファクトを検出し、
blueprint.yamlのmin_openshell_versionとmin_openclaw_version制約に対してバージョンを確認。 - Verify. プラグインがアーティファクトのダイジェストを期待値と照合。
- Plan. ランナーが作成・更新すべきOpenShellリソース(gateway、プロバイダー、サンドボックス、推論ルート、ポリシー)を判断。
- Apply. ランナーが
openshellCLIコマンドを実行してプランを適用。 - Status. ランナーが現在の状態を報告。
サンドボックス環境
サンドボックスは
ghcr.io/nvidia/openshell-community/sandboxes/openclaw
コンテナイメージを実行します。サンドボックス内では:
- OpenClawにNemoClawプラグインがプリインストール済み。
- 推論コールはOpenShellを通じて設定済みプロバイダーにルーティング。
- ネットワークアウトバウンドは
openclaw-sandbox.yamlのベースラインポリシーで制限。 - ファイルシステムアクセスは
/sandboxと/tmpが読み書き可能、システムパスは読み取り専用。
推論ルーティング
エージェントからの推論リクエストはサンドボックスから直接出ません。 OpenShellがインターセプトして設定済みプロバイダーにルーティングします:
Agent (sandbox) ──▶ OpenShell gateway ──▶ NVIDIA cloud (build.nvidia.com)
プロバイダー設定の詳細は推論プロファイルを参照してください。