Architecture
NemoClaw comporte deux composants principaux : un plugin TypeScript qui s’intègre au CLI OpenClaw, et un blueprint Python qui orchestre les ressources OpenShell.
Plugin NemoClaw
Le plugin est un package TypeScript léger qui enregistre des commandes sous openclaw nemoclaw.
Il fonctionne dans le même processus que le gateway OpenClaw et gère les interactions CLI côté utilisateur.
nemoclaw/
├── src/
│ ├── index.ts Plugin entry — registers all commands
│ ├── cli.ts Commander.js subcommand wiring
│ ├── commands/
│ │ ├── launch.ts Fresh install into OpenShell
│ │ ├── connect.ts Interactive shell into sandbox
│ │ ├── status.ts Blueprint run state + sandbox health
│ │ ├── logs.ts Stream blueprint and sandbox logs
│ │ └── slash.ts /nemoclaw chat command handler
│ └── blueprint/
│ ├── resolve.ts Version resolution, cache management
│ ├── fetch.ts Download blueprint from OCI registry
│ ├── verify.ts Digest verification, compatibility checks
│ ├── exec.ts Subprocess execution of blueprint runner
│ └── state.ts Persistent state (run IDs)
├── openclaw.plugin.json Plugin manifest
└── package.json Commands declared under openclaw.extensions
Blueprint NemoClaw
Le blueprint est un artefact Python versionné avec son propre flux de publication. Le plugin résout, vérifie et exécute le blueprint en tant que sous-processus. Le blueprint pilote toutes les interactions avec le CLI OpenShell.
nemoclaw-blueprint/
├── blueprint.yaml Manifest — version, profiles, compatibility
├── orchestrator/
│ └── runner.py CLI runner — plan / apply / status
├── policies/
│ └── openclaw-sandbox.yaml Strict baseline network + filesystem policy
Cycle de vie du blueprint
flowchart LR
A[resolve] --> B[verify digest]
B --> C[plan]
C --> D[apply]
D --> E[status]
- Résolution. Le plugin localise l’artefact du blueprint et vérifie la version par rapport aux contraintes
min_openshell_versionetmin_openclaw_versiondansblueprint.yaml. - Vérification. Le plugin vérifie l’empreinte de l’artefact par rapport à la valeur attendue.
- Planification. Le runner détermine quelles ressources OpenShell créer ou mettre à jour, telles que le gateway, les fournisseurs, le sandbox, la route d’inférence et la politique.
- Application. Le runner exécute le plan en appelant les commandes du CLI
openshell. - Statut. Le runner rapporte l’état actuel.
Environnement sandbox
Le sandbox exécute l’image de conteneur
ghcr.io/nvidia/openshell-community/sandboxes/openclaw.
À l’intérieur du sandbox :
- OpenClaw fonctionne avec le plugin NemoClaw préinstallé.
- Les appels d’inférence sont routés via OpenShell vers le fournisseur configuré.
- Le trafic réseau sortant est restreint par la politique de base dans
openclaw-sandbox.yaml. - L’accès au système de fichiers est limité à
/sandboxet/tmpen lecture-écriture, les chemins système étant en lecture seule.
Routage d’inférence
Les requêtes d’inférence de l’agent ne quittent jamais directement le sandbox. OpenShell les intercepte et les route vers le fournisseur configuré :
Agent (sandbox) ──▶ OpenShell gateway ──▶ NVIDIA cloud (build.nvidia.com)
Consultez les Profils d’inférence pour les détails de configuration des fournisseurs.