아키텍처

NemoClaw는 두 가지 주요 컴포넌트로 구성됩니다. OpenClaw CLI와 통합되는 TypeScript 플러그인과, OpenShell 리소스를 오케스트레이션하는 Python 블루프린트입니다.

NemoClaw 플러그인

플러그인은 경량 TypeScript 패키지로, openclaw nemoclaw 아래에 명령어를 등록합니다. OpenClaw gateway와 동일 프로세스에서 실행되며, 사용자 대면 CLI 인터랙션을 처리합니다.

nemoclaw/
├── src/
│   ├── index.ts                    플러그인 엔트리 — 전체 명령어 등록
│   ├── cli.ts                      Commander.js 서브커맨드 연결
│   ├── commands/
│   │   ├── launch.ts               OpenShell에 신규 설치
│   │   ├── connect.ts              샌드박스 대화형 셸
│   │   ├── status.ts               블루프린트 실행 상태 + 샌드박스 헬스
│   │   ├── logs.ts                 블루프린트/샌드박스 로그 스트리밍
│   │   └── slash.ts                /nemoclaw 채팅 명령어 핸들러
│   └── blueprint/
│       ├── resolve.ts              버전 해석, 캐시 관리
│       ├── fetch.ts                OCI 레지스트리에서 블루프린트 다운로드
│       ├── verify.ts               다이제스트 검증, 호환성 검사
│       ├── exec.ts                 블루프린트 러너 서브프로세스 실행
│       └── state.ts                영구 상태(실행 ID)
├── openclaw.plugin.json            플러그인 매니페스트
└── package.json                    openclaw.extensions 아래 명령어 선언

NemoClaw 블루프린트

블루프린트는 자체 릴리스 스트림을 가진 버전 관리된 Python 아티팩트입니다. 플러그인이 블루프린트를 해석, 검증하고 서브프로세스로 실행합니다. 블루프린트가 OpenShell CLI와의 모든 상호작용을 구동합니다.

nemoclaw-blueprint/
├── blueprint.yaml                  매니페스트 — 버전, 프로필, 호환성
├── orchestrator/
│   └── runner.py                   CLI 러너 — plan / apply / status
├── policies/
│   └── openclaw-sandbox.yaml       엄격한 기본 네트워크 + 파일시스템 정책

블루프린트 라이프사이클

flowchart LR
    A[resolve] --> B[verify digest]
    B --> C[plan]
    C --> D[apply]
    D --> E[status]
  1. Resolve. 플러그인이 블루프린트 아티팩트를 찾고, blueprint.yamlmin_openshell_versionmin_openclaw_version 제약에 대해 버전을 확인.
  2. Verify. 플러그인이 아티팩트 다이제스트를 기대값과 대조.
  3. Plan. 러너가 생성·업데이트할 OpenShell 리소스(gateway, 프로바이더, 샌드박스, 추론 라우트, 정책)를 결정.
  4. Apply. 러너가 openshell CLI 명령어를 실행하여 계획을 적용.
  5. Status. 러너가 현재 상태를 보고.

샌드박스 환경

샌드박스는 ghcr.io/nvidia/openshell-community/sandboxes/openclaw 컨테이너 이미지를 실행합니다. 샌드박스 안에서:

  • OpenClaw에 NemoClaw 플러그인이 사전 설치됨.
  • 추론 호출이 OpenShell을 통해 설정된 프로바이더로 라우팅.
  • 네트워크 아웃바운드가 openclaw-sandbox.yaml의 기본 정책으로 제한.
  • 파일시스템 접근은 /sandbox/tmp이 읽기-쓰기, 시스템 경로는 읽기 전용.

추론 라우팅

에이전트의 추론 요청은 샌드박스에서 직접 나가지 않습니다. OpenShell이 가로채서 설정된 프로바이더로 라우팅합니다:

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

프로바이더 설정 세부 사항은 추론 프로필을 참고하세요.