NemoClawアーキテクチャ詳細解説
NemoClawは単一の製品ではない — 自律型AIエージェントを本番環境で安全にデプロイするために設計された、多層構造のセキュリティアーキテクチャである。この記事では各層を解説し、それらの相互作用を説明し、自社のインフラストラクチャでNemoClawを評価するために必要な技術的コンテキストを提供する。
アーキテクチャ概要
NemoClawスタックは、エージェントセキュリティの異なる側面にそれぞれ対応する4つの主要な層で構成される:
┌─────────────────────────────────────────────┐
│ Agent Application │
│ (OpenClaw Agent Framework) │
├─────────────────────────────────────────────┤
│ Privacy Router │
│ (Local vs. Cloud Model Routing) │
├─────────────────────────────────────────────┤
│ Nemotron Policy Engine │
│ (120B MoE Intent Classification) │
├─────────────────────────────────────────────┤
│ OpenShell Runtime │
│ (Kernel-Level Sandbox + Isolation) │
├─────────────────────────────────────────────┤
│ Host OS / Hardware (DGX) │
└─────────────────────────────────────────────┘
各層は独立して動作し、スタンドアロンでデプロイ可能だが、フルスタックは単一の層では実現できない多層防御セキュリティを提供する。
第1層:OpenShellセキュリティランタイム
OpenShellはNemoClawのセキュリティモデルの基盤である。エージェント実行のカーネルレベルのサンドボックスを提供し、たとえエージェントが侵害されてもセキュリティ境界を越えられないことを保証する。
OpenShellの仕組み
OpenShellは、Linuxカーネルの名前空間、seccomp-BPFフィルター、NVIDIAのカスタムeBPFプログラムを組み合わせて、各エージェントタスクの分離された実行環境を作成する:
# openshell-policy.yaml
apiVersion: openshell.nvidia.com/v1
kind: SandboxPolicy
metadata:
name: customer-support-agent
spec:
isolation:
network: restricted
filesystem: read-only
syscalls: minimal
resources:
maxMemory: 4Gi
maxCPU: 2
gpuAccess: inference-only
permissions:
allowedAPIs:
- crm.read
- crm.update
- ticket.create
- ticket.resolve
deniedAPIs:
- admin.*
- billing.*
- user.delete
auditLog:
enabled: true
destination: siem://security-events
エージェントが行うすべてのシステムコールはOpenShellのeBPF層でインターセプトされ、ポリシーに基づいて分類され、許可、拒否、または人間の承認へのエスカレーションが判断される。決定パイプライン全体がカーネル空間で実行されるため、システムコールあたり50マイクロ秒未満のレイテンシーしか追加しない。
オペレーター承認ワークフロー
高リスク操作 — データの削除、インフラストラクチャの変更、外部通信の送信 — に対して、OpenShellはエージェントの実行を一時停止し、アクションを人間のオペレーターにルーティングして承認を求めることができる:
// Approval workflow configuration
const approvalPolicy = {
triggers: [
{ action: 'data.delete', threshold: 'always' },
{ action: 'infra.modify', threshold: 'always' },
{ action: 'email.send', threshold: 'external-only' },
{ action: 'payment.process', threshold: 'above-100-usd' },
],
channels: ['slack', 'teams', 'pagerduty'],
timeout: '15m',
defaultAction: 'deny',
};
これにより、エージェントは日常的なタスクを自律的に処理しつつ、重要なアクションに対しては人間の監視を維持できる。
第2層:Nemotron 120B MoEポリシーエンジン
Nemotron 120B Mixture-of-Expertsモデルは、NemoClawのインテリジェントなポリシー評価エンジンとして機能する。従来のルールベースのセキュリティシステムとは異なり、Nemotronはエージェントアクションの背後にある意図を理解し、自然言語のセキュリティポリシーに対して評価できる。
意図分類
エージェントがアクションを要求すると、Nemotronは複数の次元で意図を分類する:
- •機密性:関連するデータはどの程度機密か?(パブリック、内部、機密、制限付き)
- •可逆性:このアクションは取り消せるか?(完全に可逆、部分的に可逆、不可逆)
- •影響範囲:影響を受けるシステムまたはユーザーの数は?(個人、チーム、組織、外部)
- •コンプライアンス:このアクションは規制の枠組みに該当するか?(GDPR、HIPAA、SOC 2、PCI-DSS)
分類処理は単一のA100 GPUで200ms未満、量子化モデルバリアントを使用したDGX Sparkでは50ms未満で実行される。
自然言語ポリシー
セキュリティチームは平易な英語でポリシーを定義でき、Nemotronがそれを解釈して実行する:
Policy: "Customer support agents may access customer records for active tickets only.
They may not access financial data, modify account settings, or communicate
with customers outside of the ticketing system. All PII must be redacted
from internal logs."
Nemotronはこれらの自然言語ポリシーを実行可能なセキュリティルールに変換し、セキュリティチームの意図と技術的な実施の間のギャップを橋渡しする。
第3層:Privacy Router
Privacy RouterはNemoClawのインテリジェントなモデルルーティング層である。データの機密性分類に基づいて、各エージェントタスクをローカルモデル(オンプレミスで実行されるNemotron)で処理するか、クラウドモデルエンドポイントにルーティングするかを決定する。
ルーティングロジック
# Simplified Privacy Router logic
def route_request(request: AgentRequest) -> ModelEndpoint:
sensitivity = classify_sensitivity(request.context)
if sensitivity in ['restricted', 'confidential']:
# Highly sensitive data stays local
return local_nemotron_endpoint
if sensitivity == 'internal':
# Internal data can use cloud with encryption
return cloud_endpoint_with_e2e_encryption
if sensitivity == 'public':
# Public data can use any endpoint for best performance
return optimal_cloud_endpoint
# Default: local processing
return local_nemotron_endpoint
Privacy Routerはリアルタイムの分類キャッシュを維持するため、類似のコンテキストを持つ繰り返しリクエストは再評価なしでルーティングされる。ベンチマークでは、ルーターはリクエストパイプラインに5ms未満のレイテンシーしか追加しない。
データレジデンシーコンプライアンス
データレジデンシー要件(EU GDPR、中国のPIPLなど)の下で運用している組織向けに、Privacy Routerは地理的なルーティング制約を適用できる:
privacyRouter:
residencyRules:
- region: EU
dataTypes: [personalData, financialData]
allowedEndpoints: [eu-west-1-local, eu-central-1-local]
- region: CN
dataTypes: [all]
allowedEndpoints: [cn-north-1-local]
fallback: local-only
第4層:ネットワークポリシーエンジン
ネットワークポリシーエンジンは、エージェントがアクセスできる外部リソースを制御する。透過プロキシとして動作し、エージェントサンドボックスからのすべてのアウトバウンドネットワークリクエストを検査・フィルタリングする。
ポリシー定義
networkPolicy:
name: sales-ops-agent
egress:
allow:
- domain: "*.salesforce.com"
methods: [GET, POST, PATCH]
- domain: "api.hubspot.com"
methods: [GET]
- domain: "smtp.company.com"
ports: [587]
deny:
- domain: "*" # deny all other outbound traffic
ingress:
allow:
- source: "webhook.salesforce.com"
path: "/api/v1/events"
inspection:
tlsDecrypt: true
logPayloads: false
scanForPII: true
ネットワークポリシーエンジンは、アウトバウンドリクエストのTLSインターセプション(適切な証明書管理付き)をサポートし、リクエストペイロードの意図しないPII漏洩をスキャンできる。
すべてを統合する
OpenClawエージェントがタスクを受信すると、リクエストは以下のようにNemoClawスタックを通じて処理される:
- 1.OpenClawがタスクを受信し、実行プランを構築する
- 2.Privacy Routerがデータの機密性を分類し、適切なモデルエンドポイントを選択する
- 3.Nemotronが実行プランをセキュリティポリシーに対して評価し、意図を分類する
- 4.OpenShellがタスク実行のための分離されたサンドボックスを作成する
- 5.ネットワークポリシーエンジンがエージェントのロールに基づいてサンドボックスのネットワークアクセスを設定する
- 6.エージェントがサンドボックス内で実行され、すべてのアクションが監査される
- 7.高リスクアクションは人間のオペレーターにエスカレーションされ承認を受ける
- 8.結果がPrivacy Routerを通じて返され、ログからPIIが墨消しされる
このパイプライン全体で、セッションの最初のリクエストに約300msのレイテンシーが追加され、後続のリクエストにはキャッシュにより100ms未満しか追加されない。ほとんどのエンタープライズワークロードでは、このオーバーヘッドはモデル推論時間と比較して無視できる。
パフォーマンスベンチマーク
単一のDGX Sparkでの結果:
| メトリクス | 値 |
|---|---|
| ポリシー評価レイテンシー(p50) | 45ms |
| ポリシー評価レイテンシー(p99) | 180ms |
| サンドボックス作成時間 | 120ms |
| ネットワークポリシー適用 | 15ms |
| スループット(同時エージェント数) | 64 |
| サンドボックスあたりのメモリオーバーヘッド | 256MB |
DGX H100クラスター(8 GPU)での結果:
| メトリクス | 値 |
|---|---|
| ポリシー評価レイテンシー(p50) | 12ms |
| ポリシー評価レイテンシー(p99) | 45ms |
| スループット(同時エージェント数) | 512 |
はじめに
NemoClawのアーキテクチャドキュメントはGitHubのnvidia/nemoclawで公開されている。各層は独立してデプロイ可能なため、OpenShellのサンドボックスから始めて、セキュリティ要件の進化に合わせて他の層を追加していくことで、NemoClawを段階的に採用できる。
次回の記事では、DGX SparkにフルNemoClawスタックをデプロイするハンズオンチュートリアルをお届けする。