Arquitectura

NemoClaw tiene dos componentes principales: un plugin TypeScript que se integra con el CLI de OpenClaw, y un blueprint Python que orquesta los recursos de OpenShell.

Plugin de NemoClaw

El plugin es un paquete TypeScript delgado que registra comandos bajo openclaw nemoclaw. Se ejecuta en el mismo proceso que el gateway de OpenClaw y maneja las interacciones del CLI orientadas al usuario.

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 de NemoClaw

El blueprint es un artefacto Python versionado con su propio flujo de lanzamiento. El plugin resuelve, verifica y ejecuta el blueprint como un subproceso. El blueprint controla todas las interacciones con el CLI de 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 de Vida del Blueprint

flowchart LR
    A[resolve] --> B[verify digest]
    B --> C[plan]
    C --> D[apply]
    D --> E[status]
  1. Resolución. El plugin localiza el artefacto del blueprint y verifica la versión contra las restricciones min_openshell_version y min_openclaw_version en blueprint.yaml.
  2. Verificación. El plugin comprueba el digest del artefacto contra el valor esperado.
  3. Planificación. El ejecutor determina qué recursos de OpenShell crear o actualizar, como el gateway, los proveedores, el sandbox, la ruta de inferencia y la política.
  4. Aplicación. El ejecutor ejecuta el plan llamando a los comandos del CLI de openshell.
  5. Estado. El ejecutor reporta el estado actual.

Entorno del Sandbox

El sandbox ejecuta la imagen de contenedor ghcr.io/nvidia/openshell-community/sandboxes/openclaw. Dentro del sandbox:

  • OpenClaw se ejecuta con el plugin de NemoClaw preinstalado.
  • Las llamadas de inferencia se enrutan a través de OpenShell al proveedor configurado.
  • El tráfico de red saliente está restringido por la política base en openclaw-sandbox.yaml.
  • El acceso al sistema de archivos está confinado a /sandbox y /tmp para acceso de lectura-escritura, con rutas del sistema en solo lectura.

Enrutamiento de Inferencia

Las solicitudes de inferencia del agente nunca salen del sandbox directamente. OpenShell las intercepta y las enruta al proveedor configurado:

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

Consulte los Perfiles de Inferencia para los detalles de configuración del proveedor.