Arquitetura

O NemoClaw possui dois componentes principais: um plugin TypeScript que se integra com o CLI do OpenClaw, e um blueprint Python que orquestra recursos do OpenShell.

Plugin do NemoClaw

O plugin é um pacote TypeScript enxuto que registra comandos em openclaw nemoclaw. Ele roda no mesmo processo que o gateway do OpenClaw e lida com as interações de CLI voltadas ao usuário.

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

O blueprint é um artefato Python versionado com sua própria cadência de release. O plugin resolve, verifica e executa o blueprint como um subprocesso. O blueprint conduz todas as interações com o CLI do 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 do Blueprint

flowchart LR
    A[resolve] --> B[verify digest]
    B --> C[plan]
    C --> D[apply]
    D --> E[status]
  1. Resolve. O plugin localiza o artefato do blueprint e verifica a versão contra as restrições min_openshell_version e min_openclaw_version em blueprint.yaml.
  2. Verify. O plugin verifica o digest do artefato contra o valor esperado.
  3. Plan. O executor determina quais recursos do OpenShell criar ou atualizar, como gateway, provedores, sandbox, rota de inferência e política.
  4. Apply. O executor executa o plano chamando comandos do CLI openshell.
  5. Status. O executor reporta o estado atual.

Ambiente do Sandbox

O sandbox roda a imagem de contêiner ghcr.io/nvidia/openshell-community/sandboxes/openclaw. Dentro do sandbox:

  • O OpenClaw roda com o plugin NemoClaw pré-instalado.
  • As chamadas de inferência são roteadas através do OpenShell para o provedor configurado.
  • A saída de rede é restrita pela política de linha de base em openclaw-sandbox.yaml.
  • O acesso ao sistema de arquivos é confinado a /sandbox e /tmp para leitura e escrita, com caminhos do sistema em modo somente leitura.

Roteamento de Inferência

As requisições de inferência do agente nunca saem do sandbox diretamente. O OpenShell as intercepta e roteia para o provedor configurado:

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

Consulte os Perfis de Inferência para detalhes de configuração do provedor.