Architettura

NemoClaw ha due componenti principali: un plugin TypeScript che si integra con la CLI di OpenClaw, e un blueprint Python che orchestra le risorse OpenShell.

Plugin NemoClaw

Il plugin è un pacchetto TypeScript leggero che registra comandi sotto openclaw nemoclaw. Viene eseguito in-process con il gateway OpenClaw e gestisce le interazioni CLI rivolte all’utente.

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

Il blueprint è un artefatto Python versionato con il proprio flusso di rilascio. Il plugin risolve, verifica ed esegue il blueprint come sottoprocesso. Il blueprint gestisce tutte le interazioni con la CLI di 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

Ciclo di Vita del Blueprint

flowchart LR
    A[resolve] --> B[verify digest]
    B --> C[plan]
    C --> D[apply]
    D --> E[status]
  1. Risoluzione. Il plugin localizza l’artefatto del blueprint e verifica la versione rispetto ai vincoli min_openshell_version e min_openclaw_version in blueprint.yaml.
  2. Verifica. Il plugin controlla il digest dell’artefatto rispetto al valore atteso.
  3. Pianificazione. Il runner determina quali risorse OpenShell creare o aggiornare, come gateway, provider, sandbox, route di inferenza e policy.
  4. Applicazione. Il runner esegue il piano chiamando i comandi della CLI openshell.
  5. Stato. Il runner riporta lo stato corrente.

Ambiente Sandbox

La sandbox esegue l’immagine container ghcr.io/nvidia/openshell-community/sandboxes/openclaw. All’interno della sandbox:

  • OpenClaw viene eseguito con il plugin NemoClaw pre-installato.
  • Le chiamate di inferenza vengono instradate attraverso OpenShell verso il provider configurato.
  • L’egress di rete è limitato dalla policy di base in openclaw-sandbox.yaml.
  • L’accesso al filesystem è confinato a /sandbox e /tmp per l’accesso in lettura-scrittura, con i percorsi di sistema in sola lettura.

Routing dell’Inferenza

Le richieste di inferenza dall’agente non lasciano mai la sandbox direttamente. OpenShell le intercetta e le instrada verso il provider configurato:

Agent (sandbox)  ──▶  OpenShell gateway  ──▶  NVIDIA cloud (build.nvidia.com)

Consulta i Profili di Inferenza per i dettagli sulla configurazione dei provider.