「AIエージェントキャッチアップ #74 - NemoClaw」を開催しました
ジェネラティブエージェンツは勉強会「AIエージェントキャッチアップ #74」を開催し、NVIDIAが公開する常時稼働アシスタント実行フレームワーク「NemoClaw」の安全な運用方法について解説しました。
ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #74 - NemoClaw」という勉強会を開催しました。
https://generative-agents.connpass.com/event/390939/generative-agents.connpass.com
アーカイブ動画はこちらです。
www.youtube.com
今回は、OpenClawのような常時稼働アシスタントをより安全に実行するためのNVIDIAの「NemoClaw」をキャッチアップしました。
NemoClawのGitHubリポジトリはこちらです。
github.com
公式ドキュメントはこちらです。
docs.nvidia.com
今回のポイント
NemoClawとは
NemoClawは、OpenClawの安全な実行を容易にするリファレンススタック(Reference Stack)です。
NemoClawと同時に発表された「OpenShell」を使用してOpenClawを動作させるツールとなっています。
OpenShellは、AIエージェント(AI Agent)のための安全かつプライベートなランタイム(Runtime)です。
ポリシー(Policy)によってファイル操作やネットワークアクセスを制御します。
以前OpenShellを扱った際のブログ記事は以下になります。
blog.generative-agents.co.jp
NemoClawをさわってみた
NemoClawのインストールは、ドキュメントに記載されているコマンドを実行するだけです。
指示に従ってセットアップを進めると、OpenShellが起動し、そのサンドボックス(Sandbox)内でOpenClawが起動します。
セットアップが完了すると、以下のコマンドでサンドボックスに接続できます。
nemoclaw connect
サンドボックス内でOpenClawのTUI(Text User Interface)を起動して操作できます。
openclaw tui
~/.openclaw/workspaceには、OpenClawのAGENTS.mdやSOUL.mdなどが配置されています。
プラグインとブループリント
NemoClawは、プラグイン(Plugin)とブループリント(Blueprint)の2つのコンポーネントで構成されます。
プラグイン:サンドボックスに推論プロバイダー(Inference Provider)と/nemoclawコマンドを登録するTypeScriptパッケージ
ブループリント:サンドボックスの作成やポリシー適用などのロジックを含むPythonパッケージ
docs.nvidia.com
4層のセキュリティ
NemoClawのセキュリティは、以下の4つのレイヤーで構成されています。
ネットワーク(Network)
ファイルシステム(File System)
プロセス(Process:権限昇格や危険なシステムコールのブロック)
推論(Inference:モデルの推論をプロキシ経由とする)
とくにネットワークポリシーについて確認したので、以下で説明します。
docs.nvidia.com
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 }
:引用元:https://github.com/NVIDIA/NemoClaw/blob/67db244d88f539755b7486acddea2b1618bf2621/nemoclaw-blueprint/policies/openclaw-sandbox.yaml
これは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: "/**" }
# ソケットモードWebSocket — 永続接続を維持するためにCONNECTトンネルが必要です
# HTTPアイドルタイムアウトが永続接続を切断するのを避けるため。詳細は#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 }
引用元:https://github.com/NVIDIA/NemoClaw/blob/67db244d88f539755b7486acddea2b1618bf2621/nemoclaw-blueprint/policies/presets/slack.yaml
NemoClawはこのように、OpenClawを安全に使うためのOpenShellの設定集のような存在と言えます。
docs.nvidia.com
次回のご案内
以上、今回は「NemoClaw」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #75 - Hermes Agent」ということで、ユーザーとともに成長するAIエージェント「Hermes Agent」がテーマです!
https://generative-agents.connpass.com/event/391588/generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!
原文を表示
ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #74 - NemoClaw」という勉強会を開催しました。
https://generative-agents.connpass.com/event/390939/generative-agents.connpass.com
アーカイブ動画はこちらです。
www.youtube.com
今回は、OpenClawのような常時稼働アシスタントをより安全に実行するためのNVIDIAの「NemoClaw」をキャッチアップしました。
NemoClawのGitHubリポジトリはこちらです。
github.com
公式ドキュメントはこちらです。
docs.nvidia.com
今回のポイント
NemoClawとは
NemoClawは、OpenClawの安全な実行を簡単にするリファレンススタックです。
NemoClawと同時に発表された「OpenShell」を使用してOpenClawを動かすツールとなっています。
OpenShellは、AIエージェントのための安全でプライベートなランタイムです。
ポリシーによってファイル操作やネットワークアクセスを制御します。
以前OpenShellを扱った際のブログ記事は以下になります。
blog.generative-agents.co.jp
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パッケージ
docs.nvidia.com
4層のセキュリティ
NemoClawのセキュリティは、以下の4層で構成されています。
ネットワーク
ファイルシステム
プロセス(権限昇格や危険なシステムコールのブロック)
推論(モデルの推論をプロキシ経由とする)
とくにネットワークポリシーについて確認したので説明します。
docs.nvidia.com
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 }
:
引用元:https://github.com/NVIDIA/NemoClaw/blob/67db244d88f539755b7486acddea2b1618bf2621/nemoclaw-blueprint/policies/openclaw-sandbox.yaml
これは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 }
引用元:https://github.com/NVIDIA/NemoClaw/blob/67db244d88f539755b7486acddea2b1618bf2621/nemoclaw-blueprint/policies/presets/slack.yaml
NemoClawはこのように、OpenClawを安全に使うためのOpenShellの設定集のような存在と言えます。
docs.nvidia.com
次回のご案内
以上、今回は「NemoClaw」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #75 - Hermes Agent」ということで、ユーザーとともに成長するAIエージェント「Hermes Agent」がテーマです!
https://generative-agents.connpass.com/event/391588/generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み