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]
  1. Résolution. Le plugin localise l’artefact du blueprint et vérifie la version par rapport aux contraintes min_openshell_version et min_openclaw_version dans blueprint.yaml.
  2. Vérification. Le plugin vérifie l’empreinte de l’artefact par rapport à la valeur attendue.
  3. 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.
  4. Application. Le runner exécute le plan en appelant les commandes du CLI openshell.
  5. 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é à /sandbox et /tmp en 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.