ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #74 - NemoClaw」という勉強会を開催しました。
https://generative-agents.connpass.com/event/390939/generative-agents.connpass.com
アーカイブ動画はこちらです。
NemoClaw
今回は、OpenClawのような常時稼働アシスタントをより安全に実行するためのNVIDIAの「NemoClaw」をキャッチアップしました。
NemoClawのGitHubリポジトリはこちらです。
公式ドキュメントはこちらです。
今回のポイント
NemoClawとは
NemoClawは、OpenClawの安全な実行を簡単にするリファレンススタックです。 NemoClawと同時に発表された「OpenShell」を使用してOpenClawを動かすツールとなっています。
OpenShellは、AIエージェントのための安全でプライベートなランタイムです。 ポリシーによってファイル操作やネットワークアクセスを制御します。 以前OpenShellを扱った際のブログ記事は以下になります。
NemoClawをさわってみた
NemoClawのインストールは、ドキュメントに記載されているコマンドを実行するだけです。 指示に従ってセットアップを進めると、OpenShellが起動し、OpenShellのサンドボックスでOpenClawが起動します。
セットアップが完了すると、以下のコマンドでサンドボックスに接続できます。
nemoclaw <sandbox-name> connect
サンドボックスでOpenClawのTUIを起動して操作できます。
openclaw tui

~/.openclaw/workspaceには、OpenClawのAGENTS.mdやSOUL.mdなどが配置されています。

プラグインとブループリント
NemoClawは、プラグインとブループリントの2つで構成されます。
- プラグイン:サンドボックスに推論プロバイダーと
/nemoclawコマンドを登録するTypeScriptパッケージ - ブループリント:サンドボックスの作成・ポリシーの適用などのロジックを含むPythonパッケージ
4層のセキュリティ
NemoClawのセキュリティは、以下の4層で構成されています。
- ネットワーク
- ファイルシステム
- プロセス(権限昇格や危険なシステムコールのブロック)
- 推論(モデルの推論をプロキシ経由とする)
とくにネットワークポリシーについて確認したので説明します。
NemoClawのネットワークポリシー
NemoClawのネットワークポリシーは、nemoclaw-blueprint/policies/openclaw-sandbox.yamlに以下のように定義されています。
: network_policies: claude_code: name: claude_code endpoints: - host: api.anthropic.com port: 443 protocol: rest enforcement: enforce tls: terminate rules: - allow: { method: POST, path: "/v1/messages" } - allow: { method: POST, path: "/v1/messages/batches" } - allow: { method: GET, path: "/v1/messages/batches/**" } - allow: { method: POST, path: "/v1/complete" } - host: statsig.anthropic.com port: 443 protocol: rest enforcement: enforce tls: terminate rules: - allow: { method: POST, path: "/**" } : - host: sentry.io port: 443 protocol: rest enforcement: enforce tls: terminate rules: - allow: { method: GET, path: "/**" } binaries: - { path: /usr/local/bin/claude } :
これはOpenShellのポリシーであり、上記の箇所では/usr/local/bin/claudeというバイナリファイルからどのような通信を許可するかが定義されています。
このように、NemoClawはOpenShellを使用して、バイナリ単位でのネットワークポリシーが定められるようになっています。 AIエージェントがバイナリを編集する可能性も想定し、起動時からバイナリのハッシュ値の違いがないことをチェックする仕組みも含まれています。
ネットワークポリシーのプリセット
NemoClawでは、たとえばSlackと接続して使う場合のために、nemoclaw-blueprint/policies/presets/slack.yamlというプリセットのポリシーが用意されています。
:
network_policies:
slack:
name: slack
endpoints:
- host: slack.com
port: 443
protocol: rest
enforcement: enforce
rules:
- allow: { method: GET, path: "/**" }
- allow: { method: POST, path: "/**" }
- host: api.slack.com
port: 443
protocol: rest
enforcement: enforce
rules:
- allow: { method: GET, path: "/**" }
- allow: { method: POST, path: "/**" }
- host: hooks.slack.com
port: 443
protocol: rest
enforcement: enforce
rules:
- allow: { method: GET, path: "/**" }
- allow: { method: POST, path: "/**" }
# Socket Mode WebSocket — requires CONNECT tunnel to avoid
# HTTP idle timeout killing the persistent connection. See #409.
- host: wss-primary.slack.com
port: 443
access: full
- host: wss-backup.slack.com
port: 443
access: full
binaries:
- { path: /usr/local/bin/node }
- { path: /usr/bin/node }
NemoClawはこのように、OpenClawを安全に使うためのOpenShellの設定集のような存在と言えます。
次回のご案内
以上、今回は「NemoClaw」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #75 - Hermes Agent」ということで、ユーザーとともに成長するAIエージェント「Hermes Agent」がテーマです!
https://generative-agents.connpass.com/event/391588/generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!