From dec257d1d97abd63c9466f753076986c52ce4f89 Mon Sep 17 00:00:00 2001 From: Miyoung Choi Date: Thu, 28 May 2026 08:37:20 -0700 Subject: [PATCH 1/8] chore: export skill --- .agents/catalog-skills.yaml | 2 - skills/nemoclaw-user-agent-skills/SKILL.md | 10 +++ .../evals/evals.json | 44 ++++++++++ .../references/agent-skills.md | 83 +++++++++++++++++++ 4 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 skills/nemoclaw-user-agent-skills/SKILL.md create mode 100644 skills/nemoclaw-user-agent-skills/evals/evals.json create mode 100644 skills/nemoclaw-user-agent-skills/references/agent-skills.md diff --git a/.agents/catalog-skills.yaml b/.agents/catalog-skills.yaml index 94616a5f33a..e27724d4d51 100644 --- a/.agents/catalog-skills.yaml +++ b/.agents/catalog-skills.yaml @@ -8,8 +8,6 @@ version: 1 source: .agents/skills export: skills include: - - skill: nemoclaw-skills-guide - rationale: Public index for user-facing NemoClaw skills. - skill: nemoclaw-user-agent-skills rationale: Public user documentation skill. - skill: nemoclaw-user-configure-inference diff --git a/skills/nemoclaw-user-agent-skills/SKILL.md b/skills/nemoclaw-user-agent-skills/SKILL.md new file mode 100644 index 00000000000..fd12b0566d0 --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/SKILL.md @@ -0,0 +1,10 @@ +--- +name: "nemoclaw-user-agent-skills" +description: "Describes the agent skills shipped with NemoClaw and how to access them by cloning the repository. Use when users ask about AI agent support, coding assistant integration, or the .agents/skills/ directory. Trigger keywords - nemoclaw agent skills, ai coding assistant, cursor, claude code, copilot." +license: "Apache-2.0" +--- +# NemoClaw Agent Skills for Your AI Coding Assistant + +## References + +- **Load [references/agent-skills.md](references/agent-skills.md)** when users ask about AI agent support, coding assistant integration, or the .agents/skills/ directory. Describes the agent skills shipped with NemoClaw and how to access them by cloning the repository. diff --git a/skills/nemoclaw-user-agent-skills/evals/evals.json b/skills/nemoclaw-user-agent-skills/evals/evals.json new file mode 100644 index 00000000000..5cb9c25f141 --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/evals/evals.json @@ -0,0 +1,44 @@ +[ + { + "id": "docs-resources-agent-skills-001", + "question": "I'm looking at NemoClaw agent skills. Help me find a skill that can guide installation, policy, inference, or operations so I can delegate the right workflow to my AI coding assistant.", + "expected_skill": "nemoclaw-user-agent-skills", + "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant.", + "expected_behavior": [ + "The output directly addresses the user's situation: looking at NemoClaw agent skills.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user find a skill that can guide installation, policy, inference, or operations with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to delegate the right workflow to the AI coding assistant.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] + }, + { + "id": "docs-resources-agent-skills-002", + "question": "I'm choosing among multiple NemoClaw skills. Help me understand what each skill is designed to do so I can avoid using a broad assistant when a targeted skill exists.", + "expected_skill": "nemoclaw-user-agent-skills", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing among multiple NemoClaw skills.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user understand what each skill is designed to do with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid using a broad assistant when a targeted skill exists.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] + }, + { + "id": "docs-resources-agent-skills-003", + "question": "I'm letting an agent follow NemoClaw-specific instructions. Help me see why the skill guidance is trustworthy and scoped so I can use agent assistance without losing operational control.", + "expected_skill": "nemoclaw-user-agent-skills", + "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control.", + "expected_behavior": [ + "The output directly addresses the user's situation: letting an agent follow NemoClaw-specific instructions.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user see why the skill guidance is trustworthy and scoped with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to use agent assistance without losing operational control.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] + } +] diff --git a/skills/nemoclaw-user-agent-skills/references/agent-skills.md b/skills/nemoclaw-user-agent-skills/references/agent-skills.md new file mode 100644 index 00000000000..cf2f6e95ea2 --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/references/agent-skills.md @@ -0,0 +1,83 @@ +# NemoClaw Agent Skills for Your AI Coding Assistant + +NemoClaw ships agent skills that are generated directly from this documentation. +Each skill is a converted version of one or more doc pages, structured so AI coding assistants can consume it as context. +This means you can interact with the full NemoClaw documentation as skills inside your agent chat session, instead of reading the docs separately. + +Ask your assistant a question about NemoClaw and it responds with the same guidance found in these docs, adapted to your current situation. +Skills cover installation, inference configuration, network policy management, monitoring, deployment, security, workspace management, and the CLI reference. + +**Note:** + +If you are a contributor and have cloned the full NemoClaw repository, the full set of skills including contributor and maintainer skills are already available at the project root. +Open the `NemoClaw` directory in your coding assistant and the skills load automatically. +This page is for users who installed NemoClaw with the installer and do not have a local clone. + +## Get the Skills + +Fetch only the skills from the NemoClaw repository without downloading the full source tree. + +```console +$ git clone --filter=blob:none --no-checkout https://github.com/NVIDIA/NemoClaw.git +$ cd NemoClaw +$ git sparse-checkout set --no-cone '/.agents/skills/nemoclaw-user-*/**' '/.agents/skills/nemoclaw-skills-guide/**' '/.claude/**' '/AGENTS.md' '/CLAUDE.md' +$ git checkout +``` + +Open the `NemoClaw` directory in your AI coding assistant. +The assistant discovers the skills in `.agents/skills/` and uses them to answer NemoClaw questions with project-specific guidance. + +You can keep the skills inside the cloned directory or copy `.agents/skills/` to a global location (such as `~/.cursor/skills/` or `~/.claude/skills/`) so they are available across all your projects. +The choice depends on whether you want NemoClaw skills scoped to one workspace or accessible everywhere. + +## Update the Skills + +The sparse checkout filter is saved, so `git pull` fetches only updated skills without downloading the full source tree. +Run `git pull` after each NemoClaw release to pick up new and updated skills. + +## Available Skills + +The following user skills ship with NemoClaw. + +| Skill | Summary | +|-------|---------| +| `nemoclaw-user-overview` | What NemoClaw is, ecosystem placement (OpenClaw + OpenShell + NemoClaw), how it works internally, and release notes. | +| `nemoclaw-user-get-started` | Install NemoClaw, launch a sandbox, and run the first agent prompt. | +| `nemoclaw-user-configure-inference` | Choose inference providers during onboarding, switch models without restarting, and set up local inference servers (Ollama, vLLM, TensorRT-LLM, NIM). | +| `nemoclaw-user-manage-policy` | Approve or deny blocked egress requests in the TUI and customize the sandbox network policy (add, remove, or modify allowed endpoints). | +| `nemoclaw-user-monitor-sandbox` | Check sandbox health, read logs, and trace agent behavior to diagnose problems. | +| `nemoclaw-user-deploy-remote` | Deploy NemoClaw to a remote GPU instance, set up the Telegram bridge, and review sandbox container hardening. | +| `nemoclaw-user-configure-security` | Review the risk framework for every configurable security control, understand credential storage, and assess posture trade-offs. | +| `nemoclaw-user-manage-sandboxes` | Manage day-two sandbox operations, including status, logs, diagnostics, rebuilds, upgrades, messaging channels, workspace files, backup, and restore. | +| `nemoclaw-user-reference` | CLI command reference, plugin and blueprint architecture, baseline network policies, and troubleshooting guide. | + +## Example Questions and Triggered Skills + +After opening the cloned repository in your coding assistant, ask a NemoClaw question in natural language. +The assistant matches your question to the relevant skill and follows the guidance it contains. + +Examples of questions your assistant can answer with these skills: + +| Question | Skill triggered | +|----------|-----------------| +| "How do I install NemoClaw?" | `nemoclaw-user-get-started` | +| "Switch my inference provider to Ollama." | `nemoclaw-user-configure-inference` | +| "A network request was blocked. How do I approve it?" | `nemoclaw-user-manage-policy` | +| "Show me the sandbox logs." | `nemoclaw-user-monitor-sandbox` | +| "How do I deploy NemoClaw to a remote GPU?" | `nemoclaw-user-deploy-remote` | +| "What security controls can I configure?" | `nemoclaw-user-configure-security` | +| "Back up my agent workspace files." | `nemoclaw-user-manage-sandboxes` | +| "What CLI commands are available?" | `nemoclaw-user-reference` | + +You can also reference a skill directly by name if you know which one you need. + +## AI Coding Assistants that You Can Use with NemoClaw Skills + +The NemoClaw agent skills follow the [Agent Skills best practices](https://agentskills.io/skill-creation/best-practices) and the [Claude Skills best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices). +The following table shows how each AI coding assistant can use the NemoClaw skills. + +| Assistant | Skill discovery | +|-----------|----------------| +| Cursor | Reads `AGENTS.md` at the project root, which references `.agents/skills/`. | +| Claude Code | Follows the `.claude/skills/` symlink, which points to `.agents/skills/`. | +| Other assistants | Point the assistant to `.agents/skills/` if it supports project-level skill loading. | From 9f29f0d74f70e0860895eeb202cb2823b1dea82b Mon Sep 17 00:00:00 2001 From: Miyoung Choi Date: Thu, 28 May 2026 08:38:08 -0700 Subject: [PATCH 2/8] chore: add artifacts --- skills/README.md | 19 +++++++++++++++++++ skills/catalog-metadata.json | 24 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 skills/README.md create mode 100644 skills/catalog-metadata.json diff --git a/skills/README.md b/skills/README.md new file mode 100644 index 00000000000..3f5aa9d161f --- /dev/null +++ b/skills/README.md @@ -0,0 +1,19 @@ + + + +# Generated NemoClaw Catalog Skills + +This directory is generated from `.agents/catalog-skills.yaml` and `.agents/skills/`. +Do not edit files here directly. The exporter preserves NVSkills signing artifacts (`skill.oms.sig` and `skill-card.md`) when regenerating an already-signed export. + +To update this export, edit the source skills or allowlist, then run: + +```bash +python3 scripts/export-catalog-skills.py +``` + +CI verifies the directory with: + +```bash +python3 scripts/export-catalog-skills.py --check +``` diff --git a/skills/catalog-metadata.json b/skills/catalog-metadata.json new file mode 100644 index 00000000000..194c40fe375 --- /dev/null +++ b/skills/catalog-metadata.json @@ -0,0 +1,24 @@ +{ + "exportContentSha256": "8ae01b8a0a5d6b0db85c94517331524be577bc79dfd0a95674c78cc45bad97f6", + "generatedBy": "scripts/export-catalog-skills.py", + "metadata": { + "minNemoClawVersion": "0.1.0", + "testedNemoClawVersion": "0.1.0" + }, + "schemaVersion": 1, + "skills": [ + "nemoclaw-user-agent-skills", + "nemoclaw-user-configure-inference", + "nemoclaw-user-configure-security", + "nemoclaw-user-deploy-remote", + "nemoclaw-user-get-started", + "nemoclaw-user-manage-policy", + "nemoclaw-user-manage-sandboxes", + "nemoclaw-user-monitor-sandbox", + "nemoclaw-user-overview", + "nemoclaw-user-reference" + ], + "source": ".agents/skills", + "sourceCommit": "ea100077c472455d119b9b9688b25c1271916054", + "sourceContentSha256": "7c608d871da3af3abd3a6853a25cd2339045de11163eae90d74e6bba17e4dacf" +} From 1f499a1809f28699fcde677180835297ef223c88 Mon Sep 17 00:00:00 2001 From: Miyoung Choi Date: Thu, 28 May 2026 09:01:27 -0700 Subject: [PATCH 3/8] chore: add get started skills --- skills/nemoclaw-user-get-started/SKILL.md | 192 ++++++++++++++++++ .../evals/evals.json | 170 ++++++++++++++++ .../references/prerequisites.md | 67 ++++++ .../references/quickstart-details.md | 165 +++++++++++++++ .../references/quickstart-hermes.md | 168 +++++++++++++++ .../references/windows-preparation.md | 144 +++++++++++++ 6 files changed, 906 insertions(+) create mode 100644 skills/nemoclaw-user-get-started/SKILL.md create mode 100644 skills/nemoclaw-user-get-started/evals/evals.json create mode 100644 skills/nemoclaw-user-get-started/references/prerequisites.md create mode 100644 skills/nemoclaw-user-get-started/references/quickstart-details.md create mode 100644 skills/nemoclaw-user-get-started/references/quickstart-hermes.md create mode 100644 skills/nemoclaw-user-get-started/references/windows-preparation.md diff --git a/skills/nemoclaw-user-get-started/SKILL.md b/skills/nemoclaw-user-get-started/SKILL.md new file mode 100644 index 00000000000..97439a5b6f6 --- /dev/null +++ b/skills/nemoclaw-user-get-started/SKILL.md @@ -0,0 +1,192 @@ +--- +name: "nemoclaw-user-get-started" +description: "Installs NemoClaw, launches a sandbox, and runs the first agent prompt. Use when onboarding, installing, or launching a NemoClaw sandbox for the first time. Trigger keywords - nemoclaw quickstart, install nemoclaw openclaw sandbox, nemohermes quickstart, hermes agent nemoclaw, run hermes openshell sandbox, nemoclaw prerequisites, nemoclaw supported platforms, nemoclaw hardware software, nemoclaw windows wsl2 setup, nemoclaw install windows docker desktop." +license: "Apache-2.0" +--- +# NemoClaw Quickstart with OpenClaw + +Follow these steps to get started with NemoClaw and your first sandboxed OpenClaw agent. + +**Note:** + +Make sure you have completed reviewing the [Prerequisites](references/prerequisites.md) before following this guide. + +## Install NemoClaw and Onboard OpenClaw Agent + +Download and run the installer script. +The script installs Node.js if it is not already present, then runs the guided onboard wizard to create a sandbox, configure inference, and apply security policies. + +**Note:** + +NemoClaw creates a fresh OpenClaw instance inside the sandbox during the onboarding process. + +```bash +curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +The piped installer prompts through your terminal. In headless scripts or CI, +pass explicit acceptance to the `bash` side of the pipe: + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_NON_INTERACTIVE=1 NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash +``` + +If you use nvm or fnm to manage Node.js, the installer might not update your current shell's PATH. +If `nemoclaw` is not found after install, run `source ~/.bashrc` (or `source ~/.zshrc` for zsh) or open a new terminal. + +On Linux, the installer checks Docker before it installs NemoClaw. +If Docker is missing, the installer downloads the official Docker convenience script, asks for `sudo`, installs Docker, and starts the Docker service when systemd is available. +If Docker is installed but your current shell cannot use the Docker socket yet, the installer adds your user to the `docker` group when needed and exits with a recovery command. + +On macOS, the installer uses the Docker-driver OpenShell gateway path with Docker Desktop or Colima. + +```console +$ newgrp docker +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +On DGX Spark, DGX Station, and Windows WSL, an interactive installer offers express install after you accept the third-party software notice. +Express install switches onboarding to non-interactive mode, allows `sudo` password prompts for required host changes, and selects the managed local inference path for that platform. +Unless `NEMOCLAW_POLICY_TIER` is set, it applies sandbox policy in `suggested` mode with the `balanced` tier by default, using the base sandbox policy plus supported package, model, web-search, and local-inference presets. +On WSL, express install selects the Windows-host Ollama setup path. +Set `NEMOCLAW_NO_EXPRESS=1` to skip the express prompt, or set `NEMOCLAW_PROVIDER` before launching the installer when you want to choose a provider yourself. + +The installer auto-launches `nemoclaw onboard` when it can locate the freshly-installed binary. +If it cannot locate the binary, or if blocking host preflight checks fail, it does not launch the wizard automatically. +In that case, the installer prints the relevant diagnostics and a `To finish setup, run:` block with the explicit `nemoclaw onboard` command. + +**Note:** + +The onboard flow builds the sandbox image with `NEMOCLAW_DISABLE_DEVICE_AUTH=1` so the dashboard is immediately usable during setup. +This is a build-time setting baked into the sandbox image, not a runtime knob. +If you export `NEMOCLAW_DISABLE_DEVICE_AUTH` after onboarding finishes, it has no effect on an existing sandbox. + +### Review the Configuration Before the Sandbox Build + +After you enter the sandbox name, the wizard prints a review summary and asks for final confirmation before registering the provider, prompting for optional integrations, and building the sandbox image. +For example, if you picked an OpenAI-compatible endpoint, the summary looks like the following: + +```text + ────────────────────────────────────────────────── + Review configuration + ────────────────────────────────────────────────── + Provider: compatible-endpoint + Model: openai/openai/gpt-5.5 + API key: COMPATIBLE_API_KEY (staged for OpenShell gateway registration) + Web search: disabled + Messaging: none + Sandbox name: my-gpt-claw + Note: Sandbox build typically takes 5–15 minutes on this host. + ────────────────────────────────────────────────── + Web search and messaging channels will be prompted next. + Apply this configuration? [Y/n]: +``` + +The default is `Y`, so you can press Enter once to continue. Answer `n` to abort cleanly, fix the entries, and re-run `nemoclaw onboard`. + +Non-interactive runs (`NEMOCLAW_NON_INTERACTIVE=1`) print the summary for log clarity but skip the prompt. + +### Configure Web Search and Messaging + +After you confirm the summary, NemoClaw registers the selected provider with the OpenShell gateway and sets the `inference.local` route. +The wizard then asks whether to enable Brave Web Search. +If you enable it, enter a Brave Search API key when prompted. + +The wizard also offers messaging channels such as Telegram, Discord, Slack, WeChat, and WhatsApp. +Press a channel number to toggle it, then press Enter to continue. +If you select a channel, NemoClaw validates the token format before it bakes the channel configuration into the sandbox. +For example, Slack bot tokens must start with `xoxb-`. +WeChat and WhatsApp are experimental. +Review Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) before enabling them. + +### Choose Network Policy Presets + +After the sandbox image builds and OpenClaw starts inside the sandbox, NemoClaw asks which network policy tier to apply. +The default **Balanced** tier includes common development presets such as npm, PyPI, Hugging Face, Homebrew, and Brave Search when the selected agent supports web search. +Use the arrow keys or `j` and `k` to move, Space to select, and Enter to confirm. + +The preset selector lets you include more destinations, such as GitHub, Jira, Slack, Telegram, or local inference. +Press `r` to toggle a selected preset between read-only and read-write when the preset supports both modes. + +When the install completes, a summary confirms the running environment. +Before printing the summary, NemoClaw verifies that the sandbox gateway and dashboard port forward are reachable. +Inference route and messaging bridge checks are reported as warnings when they need more time or additional configuration. +The `Model` and provider line reflects the inference option you picked during onboarding. +The example below shows the result if you picked an OpenAI-compatible endpoint during onboarding. + +```text +────────────────────────────────────────────────── +NemoClaw is ready + +Sandbox: my-gpt-claw +Model: openai/openai/gpt-5.5 (Other OpenAI-compatible endpoint) + +Start chatting + + Browser: + http://127.0.0.1:18789/ + + Terminal: + nemoclaw my-gpt-claw connect + then run: openclaw tui + +Authenticated dashboard URL, if needed: + nemoclaw my-gpt-claw dashboard-url --quiet + +Manage later + + Status: nemoclaw my-gpt-claw status + Logs: nemoclaw my-gpt-claw logs --follow + Model: nemoclaw inference set --model --provider --sandbox my-gpt-claw + Policies: nemoclaw my-gpt-claw policy-add + Credentials: nemoclaw credentials reset && nemoclaw onboard +────────────────────────────────────────────────── + +[INFO] === Installation complete === +``` + +If you picked a different option, the `Model` line shows that provider's model and label instead. For example, you might see `gpt-5.4 (OpenAI)`, `claude-sonnet-4-6 (Anthropic)`, `gemini-2.5-flash (Google Gemini)`, `llama3.1:8b (Local Ollama)`, `nvidia-routed (Model Router)`, or ` (Other OpenAI-compatible endpoint)`. + +Load [references/quickstart-details.md](references/quickstart-details.md) for detailed steps on Respond to the Onboard Wizard. + +## Run Your First Agent Prompt + +You can chat with the agent from the terminal or the browser. + +### Open the OpenClaw UI in a Browser to Chat with the Agent + +The onboard wizard starts a background port forward to the sandbox dashboard, then prints the dashboard URL in the install summary. +The default host port is `18789`. +If that port is already taken, NemoClaw uses the next free dashboard port, such as `18790`, and prints that port in the final URL. +If the chosen port becomes occupied after the sandbox build starts, onboarding rolls back the newly-created sandbox and asks you to retry instead of printing an unreachable dashboard URL. +The install transcript does not print the gateway token. +If the browser requires authentication, use the `dashboard-url --quiet` command to print a complete URL explicitly. + +```text +nemoclaw my-gpt-claw dashboard-url --quiet +``` + +Open the dashboard URL in your browser. +If the browser asks for authentication, run `nemoclaw my-gpt-claw dashboard-url --quiet` and open the returned URL. +Treat the authenticated URL like a password. + +### Chat with the Agent from the Terminal + +Connect to the sandbox and use the OpenClaw CLI. + +```bash +nemoclaw my-assistant connect +# inside the sandbox: +openclaw tui +``` + +## References + +- **Load [references/quickstart-hermes.md](references/quickstart-hermes.md)** when users ask for Hermes setup, NemoHermes onboarding, or running Hermes inside OpenShell. Installs NemoClaw, selects the Hermes agent, and launches a sandboxed Hermes API endpoint. +- **Load [references/prerequisites.md](references/prerequisites.md)** when verifying prerequisites before installation. Lists the hardware, software, and container runtime requirements for running NemoClaw. +- **Load [references/windows-preparation.md](references/windows-preparation.md)** when preparing a Windows machine for NemoClaw, enabling WSL 2, configuring Docker Desktop for Windows, or troubleshooting a Windows-specific install error. Covers Windows-only preparation steps required before the Quickstart. +- **Load [references/quickstart-details.md](references/quickstart-details.md)** when you need detailed steps for Respond to the Onboard Wizard. + +## Related Skills + +- `nemoclaw-user-overview` — NemoClaw Overview (use the `nemoclaw-user-overview` skill) to learn what NemoClaw is and its capabilities diff --git a/skills/nemoclaw-user-get-started/evals/evals.json b/skills/nemoclaw-user-get-started/evals/evals.json new file mode 100644 index 00000000000..08319bc6889 --- /dev/null +++ b/skills/nemoclaw-user-get-started/evals/evals.json @@ -0,0 +1,170 @@ +[ + { + "id": "docs-get-started-prerequisites-001", + "question": "I'm checking prerequisites before installation. Help me verify my host has the required hardware, software, and platform support so I can avoid a failed first setup.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup.", + "expected_behavior": [ + "The output directly addresses the user's situation: checking prerequisites before installation.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user verify my host has the required hardware, software, and platform support with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid a failed first setup.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] + }, + { + "id": "docs-get-started-prerequisites-002", + "question": "I'm using a machine with limited CPU, memory, disk, or Docker capacity. Help me understand the practical minimums and known bottlenecks so I can prepare the machine before onboarding starts.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts.", + "expected_behavior": [ + "The output directly addresses the user's situation: using a machine with limited CPU, memory, disk, or Docker capacity.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user understand the practical minimums and known bottlenecks with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prepare the machine before onboarding starts.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] + }, + { + "id": "docs-get-started-prerequisites-003", + "question": "I'm choosing between local, Windows WSL, and remote GPU setup. Help me compare supported platform paths so I can start with the environment most likely to work.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing between local, Windows WSL, and remote GPU setup.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user compare supported platform paths with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start with the environment most likely to work.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] + }, + { + "id": "docs-get-started-windows-preparation-001", + "question": "I'm preparing a Windows machine for NemoClaw. Help me enable WSL 2, Ubuntu, and Docker Desktop correctly so I can enter the standard quickstart from a working Linux environment.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: preparing a Windows machine for NemoClaw.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enter the standard quickstart from a working Linux environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] + }, + { + "id": "docs-get-started-windows-preparation-002", + "question": "I'm unsure whether Windows-specific setup is complete. Help me check the WSL and Docker integration steps that commonly block installs so I can fix host issues before running the NemoClaw installer.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer.", + "expected_behavior": [ + "The output directly addresses the user's situation: unsure whether Windows-specific setup is complete.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user check the WSL and Docker integration steps that commonly block installs with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix host issues before running the NemoClaw installer.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] + }, + { + "id": "docs-get-started-windows-preparation-003", + "question": "I'm ready to leave the Windows preparation guide. Help me confirm the Ubuntu shell can run the required commands so I can follow the quickstart without mixing Windows and Linux instructions.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions.", + "expected_behavior": [ + "The output directly addresses the user's situation: ready to leave the Windows preparation guide.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user confirm the Ubuntu shell can run the required commands with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to follow the quickstart without mixing Windows and Linux instructions.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] + }, + { + "id": "docs-get-started-quickstart-001", + "question": "I'm running the OpenClaw quickstart. Help me install NemoClaw and create my first sandboxed agent so I can send a prompt to a working OpenClaw assistant.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant.", + "expected_behavior": [ + "The output directly addresses the user's situation: running the OpenClaw quickstart.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user install NemoClaw and create my first sandboxed agent with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to send a prompt to a working OpenClaw assistant.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-get-started-quickstart-002", + "question": "I'm encountering installer prompts or host preflight checks. Help me understand what the installer is asking for and why so I can continue setup without granting unnecessary access.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access.", + "expected_behavior": [ + "The output directly addresses the user's situation: encountering installer prompts or host preflight checks.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand what the installer is asking for and why with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue setup without granting unnecessary access.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-get-started-quickstart-003", + "question": "I'm finishing onboarding. Help me verify the sandbox, inference route, and OpenClaw agent are connected so I can know the setup succeeded end to end.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end.", + "expected_behavior": [ + "The output directly addresses the user's situation: finishing onboarding.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user verify the sandbox, inference route, and OpenClaw agent are connected with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to know the setup succeeded end to end.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-get-started-quickstart-hermes-001", + "question": "I'm choosing Hermes instead of OpenClaw. Help me launch a sandboxed Hermes API endpoint so I can serve the agent workflow my downstream clients expect.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing Hermes instead of OpenClaw.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user launch a sandboxed Hermes API endpoint with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to serve the agent workflow my downstream clients expect.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] + }, + { + "id": "docs-get-started-quickstart-hermes-002", + "question": "I'm moving through onboarding for Hermes. Help me confirm NemoClaw selected Hermes-specific setup and configuration so I can avoid accidentally creating the default OpenClaw environment.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: moving through onboarding for Hermes.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user confirm NemoClaw selected Hermes-specific setup and configuration with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidentally creating the default OpenClaw environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] + }, + { + "id": "docs-get-started-quickstart-hermes-003", + "question": "I'm checking the sandboxed Hermes endpoint. Help me run a small request that proves the endpoint is live so I can hand it to clients or tests with confidence.", + "expected_skill": "nemoclaw-user-get-started", + "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence.", + "expected_behavior": [ + "The output directly addresses the user's situation: checking the sandboxed Hermes endpoint.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user run a small request that proves the endpoint is live with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to hand it to clients or tests with confidence.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] + } +] diff --git a/skills/nemoclaw-user-get-started/references/prerequisites.md b/skills/nemoclaw-user-get-started/references/prerequisites.md new file mode 100644 index 00000000000..776cba75777 --- /dev/null +++ b/skills/nemoclaw-user-get-started/references/prerequisites.md @@ -0,0 +1,67 @@ +# Prerequisites + +Before getting started, check the prerequisites to ensure you have the necessary software and hardware to run NemoClaw. + +## Hardware + +| Resource | Minimum | Recommended | +|----------|----------------|------------------| +| CPU | 4 vCPU | 4+ vCPU | +| RAM | 8 GB | 16 GB | +| Disk | 20 GB free | 40 GB free | + +The sandbox image is approximately 2.4 GB compressed. During image push, the Docker daemon, k3s, and the OpenShell gateway run alongside the export pipeline. The pipeline buffers decompressed layers in memory. On machines with less than 8 GB of RAM, this combined usage can trigger the OOM killer. If you cannot add memory, configuring at least 8 GB of swap can work around the issue at the cost of slower performance. + +## Software + +| Dependency | Version | +|------------|----------------------------------| +| Node.js | 22.16 or later | +| npm | 10 or later | +| Docker | Docker Engine, Docker Desktop, or Colima on a tested platform | +| Platform | See [Platforms](#platforms) below | + +On Linux, the installer can install Docker, start the Docker service, and add your user to the `docker` group. +If the group change is not active in the current shell, the installer exits with `newgrp docker` guidance before it starts onboarding. +If you choose the native Linux Ollama install path, the onboard wizard also requires `zstd` for Ollama archive extraction. + +**Docker group access:** + +NemoClaw needs Docker access. +On personal Linux development machines, adding your user to the `docker` group is the standard way to run Docker without sudo. +Members of the `docker` group can control the daemon with root-level impact, so grant this access only to trusted local accounts; on shared or managed systems, use your organization's approved Docker access path. +For background, review Docker's [daemon attack surface guidance](https://docs.docker.com/engine/security/#docker-daemon-attack-surface). + +On Debian and Ubuntu, NemoClaw installs `zstd` with `apt-get` if it is missing; on other Linux distributions, install `zstd` before onboarding. + +On macOS, NemoClaw uses the Docker-driver OpenShell gateway path with Docker Desktop or Colima. +You do not need to install or sign a separate OpenShell VM driver helper for standard macOS onboarding. + +**OpenShell Lifecycle:** + +For NemoClaw-managed environments, use `nemoclaw onboard` when you need to create or recreate the OpenShell gateway or sandbox. +Avoid `openshell self-update`, `npm update -g openshell`, `openshell gateway start --recreate`, or `openshell sandbox create` directly unless you intend to manage OpenShell separately and then rerun `nemoclaw onboard`. + +**Docker storage driver:** + +On Linux hosts running Docker 26 or later with the [containerd image store](https://docs.docker.com/engine/storage/containerd/) enabled (the install-time default for fresh `docker-ce` installations on Ubuntu 24.04 and similar distros), `nemoclaw onboard` transparently builds a `fuse-overlayfs`-enabled cluster image to bypass a kernel-level nested-overlay limitation in k3s. +No manual setup is required. +See the troubleshooting guide (use the `nemoclaw-user-reference` skill) for the override knobs and a manual `daemon.json` alternative. + +## Platforms + +The following table lists tested platform and runtime combinations. +Availability is not limited to these entries, but untested configurations can have issues. +The table is generated from [`ci/platform-matrix.json`](https://github.com/NVIDIA/NemoClaw/blob/main/ci/platform-matrix.json), the single source of truth kept in sync by CI and QA. + +| OS | Container runtime | Status | Notes | +|----|-------------------|--------|-------| +| Linux | Docker | Tested | Primary tested path. | +| macOS (Apple Silicon) | Colima, Docker Desktop | Tested with limitations | Install Xcode Command Line Tools (`xcode-select --install`) and start the runtime before running the installer. | +| DGX Spark | Docker | Tested | Use the standard installer and `nemoclaw onboard`. For an end-to-end walkthrough with local Ollama inference, see the [NVIDIA Spark playbook](https://build.nvidia.com/spark/nemoclaw). | +| Windows WSL2 | Docker Desktop (WSL backend) | Tested with limitations | Requires WSL2 with Docker Desktop backend. | + +## Next Steps + +- [Prepare Windows for NemoClaw](windows-preparation.md) if you are using Windows. +- [Quickstart](../SKILL.md) to install NemoClaw and launch your first sandbox. diff --git a/skills/nemoclaw-user-get-started/references/quickstart-details.md b/skills/nemoclaw-user-get-started/references/quickstart-details.md new file mode 100644 index 00000000000..1caf356ffb0 --- /dev/null +++ b/skills/nemoclaw-user-get-started/references/quickstart-details.md @@ -0,0 +1,165 @@ +# NemoClaw Quickstart with OpenClaw: Details + +## Respond to the Onboard Wizard + +After the installer launches `nemoclaw onboard`, the wizard runs preflight checks, starts or reuses the OpenShell gateway, and asks for an inference provider, sandbox name, optional web search, optional messaging channels, and network policy presets. +At any prompt, press Enter to accept the default shown in `[brackets]`, type `back` to return to the previous prompt, or type `exit` to quit. +If existing sandbox sessions are running, the installer warns before onboarding because the setup can rebuild or upgrade sandboxes after the new sandbox launches. + +The inference provider prompt presents a numbered list. + +```text + 1) NVIDIA Endpoints + 2) OpenAI + 3) Other OpenAI-compatible endpoint + 4) Anthropic + 5) Other Anthropic-compatible endpoint + 6) Google Gemini + 7) Local Ollama (localhost:11434) + 8) Model Router (experimental) + Choose [1]: +``` + +Pick the option that matches where you want inference traffic to go, then expand the matching helper below for the follow-up prompts and the API key environment variable to set. +For the full list of providers and validation behavior, refer to Inference Options (use the `nemoclaw-user-configure-inference` skill). +Local Ollama appears when NemoClaw detects a usable local Ollama path or can offer an install or start action for your platform. +The Model Router option appears when the blueprint router profile is enabled. + +**Tip:** + +Export the API key before launching the installer so the wizard does not have to ask for it. +For example, run `export NVIDIA_API_KEY=` before `curl ... | bash`. +If you entered a key incorrectly, refer to Reset a Stored Credential (use the `nemoclaw-user-manage-sandboxes` skill) to clear and re-enter it. + +**Option 1: NVIDIA Endpoints:** + +Routes inference to models hosted on [build.nvidia.com](https://build.nvidia.com). + +Use `NVIDIA_API_KEY` for the API key. Get one from the [NVIDIA build API keys page](https://build.nvidia.com/settings/api-keys). + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, press Enter (or type `1`) to select **NVIDIA Endpoints**. +2. At the `NVIDIA_API_KEY:` prompt, paste your key if it is not already exported. +3. At the `Choose model [1]:` prompt, pick a curated model from the list (for example, `Nemotron 3 Super 120B`, `GLM-5`, `MiniMax M2.7`, `GPT-OSS 120B`, or `DeepSeek V4 Pro`), or pick `Other...` to enter any model ID from the [NVIDIA Endpoints catalog](https://build.nvidia.com). + +NemoClaw validates the model against the catalog API before creating the sandbox. + +**Tip:** + +Use this option for Nemotron and other models hosted on `build.nvidia.com`. If you run NVIDIA Nemotron from a self-hosted NIM, an enterprise gateway, or any other endpoint, choose **Option 3** instead, since all Nemotron models expose OpenAI-compatible APIs. + +**Option 2: OpenAI:** + +Routes inference to the OpenAI API at `https://api.openai.com/v1`. + +Use `OPENAI_API_KEY` for the API key. Get one from the [OpenAI API keys page](https://platform.openai.com/api-keys). + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `2` to select **OpenAI**. +2. At the `OPENAI_API_KEY:` prompt, paste your key if it is not already exported. +3. At the `Choose model [1]:` prompt, pick a curated model (for example, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, or `gpt-5.4-pro-2026-03-05`), or pick **Other...** to enter any OpenAI model ID. + +**Option 3: Other OpenAI-Compatible Endpoint:** + +Routes inference to any server that implements `/v1/chat/completions`, including OpenRouter, LocalAI, llama.cpp, vLLM behind a proxy, and any compatible gateway. + +Use `COMPATIBLE_API_KEY` for the API key. Set it to whatever credential your endpoint expects. If your endpoint does not require auth, use any non-empty placeholder. + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `3` to select **Other OpenAI-compatible endpoint**. +2. At the `OpenAI-compatible base URL` prompt, enter the provider's base URL. Find the exact value in your provider's API documentation. NemoClaw appends `/v1` automatically, so leave that suffix off. +3. At the `COMPATIBLE_API_KEY:` prompt, paste your key if it is not already exported. +4. At the `Other OpenAI-compatible endpoint model []:` prompt, enter the model ID exactly as it appears in your provider's model catalog. + +For example, when you use NVIDIA's OpenAI-compatible inference endpoint, enter `https://inference-api.nvidia.com` as the base URL and the model ID your endpoint exposes, such as `openai/openai/gpt-5.5`. + +NemoClaw sends a real inference request to validate the endpoint and model. +If the endpoint does not return the streaming events OpenClaw needs from the Responses API, NemoClaw falls back to the chat completions API and configures OpenClaw to use `openai-completions`. + +**Tip:** + +NVIDIA Nemotron models expose OpenAI-compatible APIs, so this option is the right choice for any Nemotron deployment that does not live on `build.nvidia.com`. Common examples include a self-hosted NIM container, an enterprise NVIDIA AI Enterprise gateway, or a vLLM/SGLang server running Nemotron weights. Point the base URL at your endpoint and enter the Nemotron model ID exactly as your server reports it. + +**Option 4: Anthropic:** + +Routes inference to the Anthropic Messages API at `https://api.anthropic.com`. + +Use `ANTHROPIC_API_KEY` for the API key. Get one from the [Anthropic console keys page](https://console.anthropic.com/settings/keys). + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `4` to select **Anthropic**. +2. At the `ANTHROPIC_API_KEY:` prompt, paste your key if it is not already exported. +3. At the `Choose model [1]:` prompt, pick a curated model (for example, `claude-sonnet-4-6`, `claude-haiku-4-5`, or `claude-opus-4-6`), or pick **Other...** to enter any Claude model ID. + +**Option 5: Other Anthropic-Compatible Endpoint:** + +Routes inference to any server that implements the Anthropic Messages API at `/v1/messages`, including Claude proxies, Bedrock-compatible gateways, and self-hosted Anthropic-compatible servers. + +Use `COMPATIBLE_ANTHROPIC_API_KEY` for the API key. Set it to whatever credential your endpoint expects. + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `5` to select **Other Anthropic-compatible endpoint**. +2. At the `Anthropic-compatible base URL` prompt, enter the proxy or gateway's base URL from its documentation. +3. At the `COMPATIBLE_ANTHROPIC_API_KEY:` prompt, paste your key if it is not already exported. +4. At the `Other Anthropic-compatible endpoint model []:` prompt, enter the model ID exactly as it appears in your gateway's model catalog. + +**Option 6: Google Gemini:** + +Routes inference to Google's OpenAI-compatible Gemini endpoint at `https://generativelanguage.googleapis.com/v1beta/openai/`. + +Use `GEMINI_API_KEY` for the API key. Get one from [Google AI Studio API keys](https://aistudio.google.com/app/apikey). + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `6` to select **Google Gemini**. +2. At the `GEMINI_API_KEY:` prompt, paste your key if it is not already exported. +3. At the `Choose model [5]:` prompt, pick a curated model (for example, `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3-flash-preview`, `gemini-2.5-pro`, `gemini-2.5-flash`, or `gemini-2.5-flash-lite`), or pick **Other...** to enter any Gemini model ID. + +**Option 7: Local Ollama:** + +Routes inference to a local Ollama instance. Depending on your platform, the wizard can use an existing daemon, start an installed daemon, or offer an install action. + +No API key is required. On non-WSL hosts, NemoClaw generates a token and starts an authenticated proxy so containers can reach Ollama without exposing the daemon directly to your network. +On WSL, NemoClaw can also use Ollama on the Windows host through `host.docker.internal`. + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `7` to select **Local Ollama**. +2. At the `Choose model [1]:` prompt, pick from **Ollama models** if any are already installed. If none are installed, pick a **starter model** to pull and load now, or pick **Other...** to enter any Ollama model ID. + +For setup details, including GPU recommendations and starter model choices, refer to Use a Local Inference Server (use the `nemoclaw-user-configure-inference` skill). + +**Option 8: Model Router:** + +Starts a host-side model router and routes sandbox inference through OpenShell to that router. +The router chooses from the model pool in `nemoclaw-blueprint/router/pool-config.yaml` for each request. + +Use `NVIDIA_API_KEY` for the model pool credentials. + +Respond to the wizard as follows. + +1. At the `Choose [1]:` prompt, type `8` to select **Model Router (experimental)**. +2. At the `NVIDIA_API_KEY:` prompt, paste your key if it is not already exported. +3. Review the configuration summary and continue with the sandbox build. + +For scripted setup, set: + +```console +$ NEMOCLAW_PROVIDER=routed NVIDIA_API_KEY= nemoclaw onboard --non-interactive +``` + +The router listens on the host at port `4000`. +The sandbox still calls `https://inference.local/v1`, so do not point in-sandbox tools at the host router port directly. + +**Local NIM and Local vLLM:** + +- **Local NVIDIA NIM** appears when `NEMOCLAW_EXPERIMENTAL=1` is set and the host has a NIM-capable GPU. NemoClaw pulls and manages a NIM container. +- **Local vLLM (already running)** appears whenever NemoClaw detects a vLLM server on `localhost:8000`. No flag is required for the menu entry. NemoClaw auto-detects the loaded model. +- **Local vLLM (managed install/start)** appears by default on DGX Spark and DGX Station. Generic Linux NVIDIA GPU hosts require `NEMOCLAW_EXPERIMENTAL=1` or `NEMOCLAW_PROVIDER=install-vllm`. NemoClaw pulls and starts a vLLM container on supported hosts. + +For setup, refer to Use a Local Inference Server (use the `nemoclaw-user-configure-inference` skill). diff --git a/skills/nemoclaw-user-get-started/references/quickstart-hermes.md b/skills/nemoclaw-user-get-started/references/quickstart-hermes.md new file mode 100644 index 00000000000..dccb32a93ca --- /dev/null +++ b/skills/nemoclaw-user-get-started/references/quickstart-hermes.md @@ -0,0 +1,168 @@ +# NemoClaw Quickstart with Hermes + +Use NemoHermes when you want NemoClaw to create an OpenShell sandbox that runs Hermes instead of the default OpenClaw agent. +The `nemohermes` command is an alias for `nemoclaw` with the Hermes agent pre-selected. + +**Experimental Feature:** + +The Hermes agent option is experimental. +Interfaces, defaults, and supported features may change without notice, and it is not recommended for production use. + +Review the [Prerequisites](prerequisites.md) before starting. +The first Hermes build can take several minutes because NemoClaw builds the Hermes sandbox base image if it is not already cached. + +## Install and Onboard + +Start the installer with `NEMOCLAW_AGENT=hermes` set in your shell. +The installer installs the CLI, selects the `nemohermes` alias, and runs the guided onboarding flow. + +```console +$ export NEMOCLAW_AGENT=hermes +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +If NemoClaw is already installed, start Hermes onboarding directly. + +```console +$ nemohermes onboard +``` + +## Respond to the Wizard + +The onboard wizard asks for a sandbox name, inference provider, model, credentials, and network policy preset. +At any prompt, press Enter to accept the default shown in `[brackets]`, type `back` to return to the previous prompt, or type `exit` to quit. + +The default Hermes sandbox name is `hermes`. +Use a distinct sandbox name, such as `my-hermes`, so you can run Hermes and OpenClaw sandboxes side by side. +NemoClaw prevents same-name reuse when an existing sandbox uses a different agent. + +```text +Sandbox name [hermes]: my-hermes +``` + +Choose the inference provider that matches where you want Hermes model traffic to go. +The provider options and credential environment variables are the same as the standard NemoClaw quickstart. +For provider-specific prompts, refer to the [Respond to the Onboard Wizard](../SKILL.md#respond-to-the-onboard-wizard) section and the Inference Options (use the `nemoclaw-user-configure-inference` skill) page. +The Hermes wizard does not ask for Brave Web Search because Hermes does not use NemoClaw's OpenClaw web-search configuration. + +After provider and policy selection, review the summary and confirm the build. +NemoClaw writes Hermes configuration into `/sandbox/.hermes`, routes model traffic through `inference.local`, and starts the Hermes gateway inside the sandbox. +The Hermes image includes runtime dependencies for the supported NemoClaw messaging integrations, API service, and health endpoint. +The base image does not include unsupported Hermes integrations. + +**Note:** + +Hermes uses an agent-specific baseline policy that allows the Hermes binary and Python runtime to reach the required Nous Research service endpoints, PyPI, NVIDIA inference endpoints, and selected messaging APIs. + +## Use Non-Interactive Setup + +For CI or scripted installs, set the required environment variables before running the installer. +The example below uses NVIDIA Endpoints and creates a sandbox named `my-hermes`. + +```console +$ export NEMOCLAW_AGENT=hermes +$ export NEMOCLAW_NON_INTERACTIVE=1 +$ export NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 +$ export NEMOCLAW_SANDBOX_NAME=my-hermes +$ export NVIDIA_API_KEY= +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +Use the provider variables from Inference Options (use the `nemoclaw-user-configure-inference` skill) when you choose a different provider. + +## Connect to Hermes + +When onboarding completes, NemoClaw prints the sandbox name, model, lifecycle commands, and Hermes API endpoint. +Hermes exposes an OpenAI-compatible API on port `8642`, not a browser dashboard. + +```text +────────────────────────────────────────────────── +NemoHermes is ready + +Sandbox: my-hermes +Model: nvidia/nemotron-3-super-120b-a12b (NVIDIA Endpoints) + +Access + + Hermes Agent OpenAI-compatible API + Port 8642 must be forwarded before connecting. + http://127.0.0.1:8642/v1 + +Terminal: + nemohermes my-hermes connect + +Manage later + + Status: nemohermes my-hermes status + Logs: nemohermes my-hermes logs --follow + Model: nemohermes inference set --model --provider --sandbox my-hermes + Policies: nemohermes my-hermes policy-add + Credentials: nemohermes credentials reset && nemohermes onboard +────────────────────────────────────────────────── +``` + +To chat with the agent from a terminal, follow these steps: + +1. Connect to the sandbox and start the Hermes CLI. + + ```console + $ nemohermes my-hermes connect + ``` + +2. Inside the sandbox, run the Hermes CLI. + + ```console + $ hermes + ``` + +## Check the API Endpoint + +The onboard flow starts the port forward automatically. +Check the health endpoint from the host to confirm that the Hermes API is reachable. + +```console +$ curl -sf http://127.0.0.1:8642/health +``` + +If the command cannot connect after a reboot or terminal restart, start the forward again. + +```console +$ openshell forward start --background 8642 my-hermes +``` + +Configure an OpenAI-compatible client with the base URL `http://127.0.0.1:8642/v1`. +Hermes uses API header authentication for client requests. +Do not append an OpenClaw `#token=` URL fragment to the Hermes endpoint. + +## Manage the Sandbox + +Use the same lifecycle commands as a standard NemoClaw sandbox. +The `nemohermes` alias keeps help text and recovery messages aligned with Hermes, while targeting the same registered sandbox. +`nemoclaw list` shows the agent type for each sandbox so you can distinguish Hermes and OpenClaw entries. + +```console +$ nemohermes my-hermes status +$ nemohermes my-hermes logs --follow +$ nemohermes my-hermes snapshot create --name before-change +$ nemohermes my-hermes rebuild +``` + +To change the active model or provider without rebuilding the sandbox, use `nemohermes inference set`. +It updates the OpenShell inference route and patches `/sandbox/.hermes/config.yaml` without restarting Hermes. + +```console +$ nemohermes inference set --model --provider +``` + +To remove the sandbox when you are done, destroy it explicitly. + +```console +$ nemohermes my-hermes destroy +``` + +## Next Steps + +- Inference Options (use the `nemoclaw-user-configure-inference` skill) to choose a provider and model. +- Commands (use the `nemoclaw-user-reference` skill) to see the full `nemohermes` alias behavior. +- Backup and Restore (use the `nemoclaw-user-manage-sandboxes` skill) to preserve sandbox state before destructive operations. +- Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) to inspect OpenShell events and sandbox logs. diff --git a/skills/nemoclaw-user-get-started/references/windows-preparation.md b/skills/nemoclaw-user-get-started/references/windows-preparation.md new file mode 100644 index 00000000000..f3b87f30db6 --- /dev/null +++ b/skills/nemoclaw-user-get-started/references/windows-preparation.md @@ -0,0 +1,144 @@ +# Prepare Windows for NemoClaw + +You can run NemoClaw inside Windows Subsystem for Linux (WSL 2) on Windows. +Complete these steps before following the [Quickstart](../SKILL.md). +Linux and macOS users do not need this page and can go directly to the Quickstart. + +**Note:** + +This guide has been tested on x86-64. + +## Prerequisites + +Verify the following before you begin: + +- Windows 10 (build 19041 or later) or Windows 11. +- Hardware requirements are the same as the [Quickstart](../SKILL.md). + +## Option: Use the Bootstrap Script + +Open Windows PowerShell on the Windows host and run the bootstrap script: + +```powershell +Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/NVIDIA/NemoClaw/main/scripts/bootstrap-windows.ps1' -OutFile "$env:TEMP\bootstrap-windows.ps1"; powershell.exe -ExecutionPolicy Bypass -File "$env:TEMP\bootstrap-windows.ps1" +``` + +The command downloads the script to a temporary file before running it. +`-ExecutionPolicy Bypass` applies only to that PowerShell process and avoids local policy blocking the downloaded script. +Run it from Windows, not from inside WSL. +The script requests Administrator privileges when needed, enables the required WSL 2 Windows features, installs or opens Ubuntu 24.04, and installs and starts Docker Desktop. +If the target Ubuntu distro is already registered, the script confirms it uses WSL 2, converts it from WSL 1 when needed, and verifies Docker is reachable from WSL. +If Windows requires a reboot after enabling WSL features, the script prompts for the reboot and registers a one-time continuation for the next sign-in. +If Docker Desktop shows first-run prompts, complete them and return to the PowerShell window. + +For advanced options, download the script first and run `Get-Help "$env:TEMP\bootstrap-windows.ps1" -Detailed`. +Useful parameters include `-DistroName`, `-InstallerUrl`, `-InstallerArgs`, and `-InstallDockerDesktop`. +The default distro is `Ubuntu-24.04`. +To reuse an existing distro named `Ubuntu`, pass `-DistroName Ubuntu`. + +The bootstrap script does not install NemoClaw itself. +When Windows preparation is complete, it opens Ubuntu and prints the standard installer command to run inside Ubuntu: + +```bash +curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +If the bootstrap script reports that Docker is not reachable from Ubuntu, open Docker Desktop Settings and confirm that WSL integration is enabled for Ubuntu (Settings > Resources > WSL integration), then rerun the script. + +If the bootstrap script reports that `winget.exe` is not available (common on Windows Server or stripped Windows installs), install **App Installer** from the Microsoft Store (which provides `winget`), or download and install Docker Desktop manually from [docker.com](https://www.docker.com/products/docker-desktop/). +Rerun the bootstrap script after Docker Desktop is installed; the script skips the install step once it detects Docker Desktop is present. + +The manual steps below describe the same Windows preparation pieces and are useful when you need to verify or repair WSL, Ubuntu, or Docker Desktop by hand. + +## Enable WSL 2 + +Open an elevated PowerShell (Run as Administrator): + +```powershell +wsl --install --no-distribution +``` + +This enables both the Windows Subsystem for Linux and Virtual Machine Platform features. + +Reboot if prompted. + +## Install and Register Ubuntu + +After reboot, open an elevated PowerShell again: + +```powershell +wsl --install -d Ubuntu-24.04 +``` + +Let the distribution launch and complete first-run setup (pick a Unix username and password), then type `exit` to return to PowerShell. + +**Warning:** + +Do not use the `--no-launch` flag. +The `--no-launch` flag downloads the package but does not register the distribution with WSL. +Commands like `wsl -d Ubuntu-24.04` fail with "There is no distribution with the supplied name" until the distribution has been launched at least once. + +Verify the distribution is registered and running WSL 2: + +```powershell +wsl -l -v +``` + +Expected output: + +```text + NAME STATE VERSION +* Ubuntu-24.04 Running 2 +``` + +## Install Docker Desktop + +Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) with the WSL 2 backend (the default on Windows 11). + +After installation, open Docker Desktop Settings and confirm that WSL integration is enabled for your Ubuntu distribution (Settings > Resources > WSL integration). + +Open WSL from PowerShell: + +```powershell +wsl +``` + +Then verify Docker from inside WSL: + +```bash +docker info +``` + +`docker info` prints server information. +If you see "Cannot connect to the Docker daemon", confirm that Docker Desktop is running and that WSL integration is enabled. + +## Set Up Local Inference with Ollama (Optional) + +If you plan to select Ollama as your inference provider during onboarding, use one Ollama instance that WSL can reach. +You can install Ollama inside WSL yourself: + +```bash +curl -fsSL https://ollama.com/install.sh | sh +``` + +If Ollama is installed but not already running in WSL, the onboarding process starts it for you. +You can also start it yourself beforehand with `ollama serve`. + +You can also use Ollama for Windows. +During onboarding, NemoClaw can use an already-running Windows-host daemon, start or restart an installed daemon, or install Ollama on the Windows host. +If the installer offers express install on WSL, accepting it selects this Windows-host Ollama path automatically. +When Ollama runs on the Windows host, NemoClaw detects it from WSL through `host.docker.internal` and pulls missing models through the Ollama HTTP API. +Do not run both the Windows and WSL Ollama instances on port `11434` at the same time. +Use one instance, or move one of them to a different port before running `nemoclaw onboard`. + +## Next Step + +Your Windows environment is ready. +If you used the bootstrap script, follow the installer command it printed inside Ubuntu. +If you prepared Windows manually, open a WSL terminal (type `wsl` in PowerShell, or open Ubuntu from Windows Terminal) and continue with the [Quickstart](../SKILL.md) to install NemoClaw and launch your first sandbox. + +All NemoClaw commands run inside WSL, not in PowerShell. + +## Troubleshooting + +For Windows-specific troubleshooting, refer to the Windows Subsystem for Linux section (use the `nemoclaw-user-reference` skill) in the Troubleshooting guide. From 3f4ec9de1be3f24c08fd4de37adf465d7927b871 Mon Sep 17 00:00:00 2001 From: Julie Yaunches Date: Thu, 28 May 2026 12:10:04 -0400 Subject: [PATCH 4/8] test: drop nemoclaw-skills-guide from catalog export expected list The catalog export now omits nemoclaw-skills-guide; sync the catalog-skills-export.test.ts expected directory list to match. Signed-off-by: Julie Yaunches --- test/catalog-skills-export.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/test/catalog-skills-export.test.ts b/test/catalog-skills-export.test.ts index ac2bbaf67e7..39ea2b30f57 100644 --- a/test/catalog-skills-export.test.ts +++ b/test/catalog-skills-export.test.ts @@ -113,7 +113,6 @@ describe("catalog skills export", () => { fs.readFileSync(path.join(signedSkill, "skill-card.md"), "utf8"), ).toBe("# Signed card\n"); expect(listSkillDirs(tempSkills)).toEqual([ - "nemoclaw-skills-guide", "nemoclaw-user-agent-skills", "nemoclaw-user-configure-inference", "nemoclaw-user-configure-security", From 22f190b30dfc45c80bee925a9d8a7b1aeaded22a Mon Sep 17 00:00:00 2001 From: Miyoung Choi Date: Thu, 28 May 2026 10:27:02 -0700 Subject: [PATCH 5/8] chore: try eased eval --- skills/catalog-metadata.json | 6 +- .../evals/evals.json | 30 +---- .../evals/evals.json | 120 ++---------------- 3 files changed, 18 insertions(+), 138 deletions(-) diff --git a/skills/catalog-metadata.json b/skills/catalog-metadata.json index 194c40fe375..e3fdd6b58d3 100644 --- a/skills/catalog-metadata.json +++ b/skills/catalog-metadata.json @@ -1,5 +1,5 @@ { - "exportContentSha256": "8ae01b8a0a5d6b0db85c94517331524be577bc79dfd0a95674c78cc45bad97f6", + "exportContentSha256": "9b48c35ea9a9c79fd1c8bfc6503da54cd5aab5b14fefde400feed023cb6309b1", "generatedBy": "scripts/export-catalog-skills.py", "metadata": { "minNemoClawVersion": "0.1.0", @@ -19,6 +19,6 @@ "nemoclaw-user-reference" ], "source": ".agents/skills", - "sourceCommit": "ea100077c472455d119b9b9688b25c1271916054", - "sourceContentSha256": "7c608d871da3af3abd3a6853a25cd2339045de11163eae90d74e6bba17e4dacf" + "sourceCommit": "3f4ec9de1be3f24c08fd4de37adf465d7927b871", + "sourceContentSha256": "2b762b00d861677b434a673f72d013f1183d4a42adfd6a0563406f820e6383b3" } diff --git a/skills/nemoclaw-user-agent-skills/evals/evals.json b/skills/nemoclaw-user-agent-skills/evals/evals.json index 5cb9c25f141..6109419721d 100644 --- a/skills/nemoclaw-user-agent-skills/evals/evals.json +++ b/skills/nemoclaw-user-agent-skills/evals/evals.json @@ -3,42 +3,18 @@ "id": "docs-resources-agent-skills-001", "question": "I'm looking at NemoClaw agent skills. Help me find a skill that can guide installation, policy, inference, or operations so I can delegate the right workflow to my AI coding assistant.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant.", - "expected_behavior": [ - "The output directly addresses the user's situation: looking at NemoClaw agent skills.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user find a skill that can guide installation, policy, inference, or operations with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to delegate the right workflow to the AI coding assistant.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant." }, { "id": "docs-resources-agent-skills-002", "question": "I'm choosing among multiple NemoClaw skills. Help me understand what each skill is designed to do so I can avoid using a broad assistant when a targeted skill exists.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing among multiple NemoClaw skills.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user understand what each skill is designed to do with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid using a broad assistant when a targeted skill exists.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists." }, { "id": "docs-resources-agent-skills-003", "question": "I'm letting an agent follow NemoClaw-specific instructions. Help me see why the skill guidance is trustworthy and scoped so I can use agent assistance without losing operational control.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control.", - "expected_behavior": [ - "The output directly addresses the user's situation: letting an agent follow NemoClaw-specific instructions.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user see why the skill guidance is trustworthy and scoped with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to use agent assistance without losing operational control.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control." } ] diff --git a/skills/nemoclaw-user-get-started/evals/evals.json b/skills/nemoclaw-user-get-started/evals/evals.json index 08319bc6889..946c2dfea5b 100644 --- a/skills/nemoclaw-user-get-started/evals/evals.json +++ b/skills/nemoclaw-user-get-started/evals/evals.json @@ -3,168 +3,72 @@ "id": "docs-get-started-prerequisites-001", "question": "I'm checking prerequisites before installation. Help me verify my host has the required hardware, software, and platform support so I can avoid a failed first setup.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup.", - "expected_behavior": [ - "The output directly addresses the user's situation: checking prerequisites before installation.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user verify my host has the required hardware, software, and platform support with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid a failed first setup.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup." }, { "id": "docs-get-started-prerequisites-002", "question": "I'm using a machine with limited CPU, memory, disk, or Docker capacity. Help me understand the practical minimums and known bottlenecks so I can prepare the machine before onboarding starts.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts.", - "expected_behavior": [ - "The output directly addresses the user's situation: using a machine with limited CPU, memory, disk, or Docker capacity.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user understand the practical minimums and known bottlenecks with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prepare the machine before onboarding starts.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts." }, { "id": "docs-get-started-prerequisites-003", "question": "I'm choosing between local, Windows WSL, and remote GPU setup. Help me compare supported platform paths so I can start with the environment most likely to work.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing between local, Windows WSL, and remote GPU setup.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user compare supported platform paths with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start with the environment most likely to work.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work." }, { "id": "docs-get-started-windows-preparation-001", "question": "I'm preparing a Windows machine for NemoClaw. Help me enable WSL 2, Ubuntu, and Docker Desktop correctly so I can enter the standard quickstart from a working Linux environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: preparing a Windows machine for NemoClaw.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enter the standard quickstart from a working Linux environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment." }, { "id": "docs-get-started-windows-preparation-002", "question": "I'm unsure whether Windows-specific setup is complete. Help me check the WSL and Docker integration steps that commonly block installs so I can fix host issues before running the NemoClaw installer.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer.", - "expected_behavior": [ - "The output directly addresses the user's situation: unsure whether Windows-specific setup is complete.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user check the WSL and Docker integration steps that commonly block installs with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix host issues before running the NemoClaw installer.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer." }, { "id": "docs-get-started-windows-preparation-003", "question": "I'm ready to leave the Windows preparation guide. Help me confirm the Ubuntu shell can run the required commands so I can follow the quickstart without mixing Windows and Linux instructions.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions.", - "expected_behavior": [ - "The output directly addresses the user's situation: ready to leave the Windows preparation guide.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user confirm the Ubuntu shell can run the required commands with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to follow the quickstart without mixing Windows and Linux instructions.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions." }, { "id": "docs-get-started-quickstart-001", "question": "I'm running the OpenClaw quickstart. Help me install NemoClaw and create my first sandboxed agent so I can send a prompt to a working OpenClaw assistant.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant.", - "expected_behavior": [ - "The output directly addresses the user's situation: running the OpenClaw quickstart.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user install NemoClaw and create my first sandboxed agent with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to send a prompt to a working OpenClaw assistant.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant." }, { "id": "docs-get-started-quickstart-002", "question": "I'm encountering installer prompts or host preflight checks. Help me understand what the installer is asking for and why so I can continue setup without granting unnecessary access.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access.", - "expected_behavior": [ - "The output directly addresses the user's situation: encountering installer prompts or host preflight checks.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand what the installer is asking for and why with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue setup without granting unnecessary access.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access." }, { "id": "docs-get-started-quickstart-003", "question": "I'm finishing onboarding. Help me verify the sandbox, inference route, and OpenClaw agent are connected so I can know the setup succeeded end to end.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end.", - "expected_behavior": [ - "The output directly addresses the user's situation: finishing onboarding.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user verify the sandbox, inference route, and OpenClaw agent are connected with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to know the setup succeeded end to end.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end." }, { "id": "docs-get-started-quickstart-hermes-001", "question": "I'm choosing Hermes instead of OpenClaw. Help me launch a sandboxed Hermes API endpoint so I can serve the agent workflow my downstream clients expect.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing Hermes instead of OpenClaw.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user launch a sandboxed Hermes API endpoint with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to serve the agent workflow my downstream clients expect.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect." }, { "id": "docs-get-started-quickstart-hermes-002", "question": "I'm moving through onboarding for Hermes. Help me confirm NemoClaw selected Hermes-specific setup and configuration so I can avoid accidentally creating the default OpenClaw environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: moving through onboarding for Hermes.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user confirm NemoClaw selected Hermes-specific setup and configuration with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidentally creating the default OpenClaw environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment." }, { "id": "docs-get-started-quickstart-hermes-003", "question": "I'm checking the sandboxed Hermes endpoint. Help me run a small request that proves the endpoint is live so I can hand it to clients or tests with confidence.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence.", - "expected_behavior": [ - "The output directly addresses the user's situation: checking the sandboxed Hermes endpoint.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user run a small request that proves the endpoint is live with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to hand it to clients or tests with confidence.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence." } ] From 4c3d19a1859b67c4925b8509bc9022f6702eea17 Mon Sep 17 00:00:00 2001 From: Julie Yaunches Date: Thu, 28 May 2026 13:51:16 -0400 Subject: [PATCH 6/8] chore: regenerate catalog skills export --- skills/catalog-metadata.json | 6 +- .../evals/evals.json | 30 +- .../SKILL.md | 281 ++++ .../evals/evals.json | 212 +++ .../references/inference-options.md | 140 ++ .../references/set-up-sub-agent.md | 118 ++ .../references/switch-inference-providers.md | 205 +++ .../references/tool-calling-reliability.md | 162 ++ .../references/use-local-inference-details.md | 149 ++ .../nemoclaw-user-configure-security/SKILL.md | 12 + .../evals/evals.json | 128 ++ .../references/best-practices.md | 509 ++++++ .../references/credential-storage.md | 108 ++ .../references/openclaw-controls.md | 119 ++ skills/nemoclaw-user-deploy-remote/SKILL.md | 173 ++ .../evals/evals.json | 170 ++ .../references/brev-web-ui.md | 153 ++ .../references/install-openclaw-plugins.md | 91 ++ .../references/sandbox-hardening.md | 125 ++ .../evals/evals.json | 120 +- skills/nemoclaw-user-manage-policy/SKILL.md | 292 ++++ .../evals/evals.json | 128 ++ .../references/approve-network-requests.md | 62 + .../customize-network-policy-details.md | 11 + .../references/integration-policy-examples.md | 334 ++++ .../nemoclaw-user-manage-sandboxes/SKILL.md | 262 +++ .../evals/evals.json | 212 +++ .../references/backup-restore.md | 164 ++ .../references/lifecycle-details.md | 24 + .../references/messaging-channels.md | 279 ++++ .../references/runtime-controls.md | 39 + .../references/workspace-files.md | 103 ++ skills/nemoclaw-user-monitor-sandbox/SKILL.md | 89 ++ .../evals/evals.json | 44 + skills/nemoclaw-user-overview/SKILL.md | 13 + .../nemoclaw-user-overview/evals/evals.json | 212 +++ .../references/ecosystem.md | 92 ++ .../references/how-it-works.md | 102 ++ .../nemoclaw-highlevel-component-diagram.png | Bin 0 -> 880587 bytes .../references/overview.md | 61 + .../references/release-notes.md | 242 +++ skills/nemoclaw-user-reference/SKILL.md | 14 + .../nemoclaw-user-reference/evals/evals.json | 212 +++ .../references/architecture.md | 258 +++ .../references/cli-selection-guide.md | 203 +++ .../references/commands.md | 1379 ++++++++++++++++ .../references/network-policies.md | 123 ++ .../references/troubleshooting.md | 1419 +++++++++++++++++ 48 files changed, 9366 insertions(+), 18 deletions(-) create mode 100644 skills/nemoclaw-user-configure-inference/SKILL.md create mode 100644 skills/nemoclaw-user-configure-inference/evals/evals.json create mode 100644 skills/nemoclaw-user-configure-inference/references/inference-options.md create mode 100644 skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md create mode 100644 skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md create mode 100644 skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md create mode 100644 skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md create mode 100644 skills/nemoclaw-user-configure-security/SKILL.md create mode 100644 skills/nemoclaw-user-configure-security/evals/evals.json create mode 100644 skills/nemoclaw-user-configure-security/references/best-practices.md create mode 100644 skills/nemoclaw-user-configure-security/references/credential-storage.md create mode 100644 skills/nemoclaw-user-configure-security/references/openclaw-controls.md create mode 100644 skills/nemoclaw-user-deploy-remote/SKILL.md create mode 100644 skills/nemoclaw-user-deploy-remote/evals/evals.json create mode 100644 skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md create mode 100644 skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md create mode 100644 skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md create mode 100644 skills/nemoclaw-user-manage-policy/SKILL.md create mode 100644 skills/nemoclaw-user-manage-policy/evals/evals.json create mode 100644 skills/nemoclaw-user-manage-policy/references/approve-network-requests.md create mode 100644 skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md create mode 100644 skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/SKILL.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/evals/evals.json create mode 100644 skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md create mode 100644 skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md create mode 100644 skills/nemoclaw-user-monitor-sandbox/SKILL.md create mode 100644 skills/nemoclaw-user-monitor-sandbox/evals/evals.json create mode 100644 skills/nemoclaw-user-overview/SKILL.md create mode 100644 skills/nemoclaw-user-overview/evals/evals.json create mode 100644 skills/nemoclaw-user-overview/references/ecosystem.md create mode 100644 skills/nemoclaw-user-overview/references/how-it-works.md create mode 100644 skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png create mode 100644 skills/nemoclaw-user-overview/references/overview.md create mode 100644 skills/nemoclaw-user-overview/references/release-notes.md create mode 100644 skills/nemoclaw-user-reference/SKILL.md create mode 100644 skills/nemoclaw-user-reference/evals/evals.json create mode 100644 skills/nemoclaw-user-reference/references/architecture.md create mode 100644 skills/nemoclaw-user-reference/references/cli-selection-guide.md create mode 100644 skills/nemoclaw-user-reference/references/commands.md create mode 100644 skills/nemoclaw-user-reference/references/network-policies.md create mode 100644 skills/nemoclaw-user-reference/references/troubleshooting.md diff --git a/skills/catalog-metadata.json b/skills/catalog-metadata.json index e3fdd6b58d3..5ece7367655 100644 --- a/skills/catalog-metadata.json +++ b/skills/catalog-metadata.json @@ -1,5 +1,5 @@ { - "exportContentSha256": "9b48c35ea9a9c79fd1c8bfc6503da54cd5aab5b14fefde400feed023cb6309b1", + "exportContentSha256": "8ae01b8a0a5d6b0db85c94517331524be577bc79dfd0a95674c78cc45bad97f6", "generatedBy": "scripts/export-catalog-skills.py", "metadata": { "minNemoClawVersion": "0.1.0", @@ -19,6 +19,6 @@ "nemoclaw-user-reference" ], "source": ".agents/skills", - "sourceCommit": "3f4ec9de1be3f24c08fd4de37adf465d7927b871", - "sourceContentSha256": "2b762b00d861677b434a673f72d013f1183d4a42adfd6a0563406f820e6383b3" + "sourceCommit": "78394db5c5308f3741032ca53c8a0fb215376244", + "sourceContentSha256": "7c608d871da3af3abd3a6853a25cd2339045de11163eae90d74e6bba17e4dacf" } diff --git a/skills/nemoclaw-user-agent-skills/evals/evals.json b/skills/nemoclaw-user-agent-skills/evals/evals.json index 6109419721d..5cb9c25f141 100644 --- a/skills/nemoclaw-user-agent-skills/evals/evals.json +++ b/skills/nemoclaw-user-agent-skills/evals/evals.json @@ -3,18 +3,42 @@ "id": "docs-resources-agent-skills-001", "question": "I'm looking at NemoClaw agent skills. Help me find a skill that can guide installation, policy, inference, or operations so I can delegate the right workflow to my AI coding assistant.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant." + "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant.", + "expected_behavior": [ + "The output directly addresses the user's situation: looking at NemoClaw agent skills.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user find a skill that can guide installation, policy, inference, or operations with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to delegate the right workflow to the AI coding assistant.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] }, { "id": "docs-resources-agent-skills-002", "question": "I'm choosing among multiple NemoClaw skills. Help me understand what each skill is designed to do so I can avoid using a broad assistant when a targeted skill exists.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists." + "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing among multiple NemoClaw skills.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user understand what each skill is designed to do with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid using a broad assistant when a targeted skill exists.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] }, { "id": "docs-resources-agent-skills-003", "question": "I'm letting an agent follow NemoClaw-specific instructions. Help me see why the skill guidance is trustworthy and scoped so I can use agent assistance without losing operational control.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control." + "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control.", + "expected_behavior": [ + "The output directly addresses the user's situation: letting an agent follow NemoClaw-specific instructions.", + "The AI coding assistant loads the expected_skill and references/agent-skills.md", + "The output helps the user see why the skill guidance is trustworthy and scoped with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to use agent assistance without losing operational control.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." + ] } ] diff --git a/skills/nemoclaw-user-configure-inference/SKILL.md b/skills/nemoclaw-user-configure-inference/SKILL.md new file mode 100644 index 00000000000..8237a5860fd --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/SKILL.md @@ -0,0 +1,281 @@ +--- +name: "nemoclaw-user-configure-inference" +description: "Connects NemoClaw to a local inference server. Use when setting up Ollama, vLLM, TensorRT-LLM, NIM, or any OpenAI-compatible local model server with NemoClaw. Trigger keywords - nemoclaw local inference, ollama nemoclaw, vllm nemoclaw, local model server, openai compatible endpoint, switch nemoclaw inference model, change inference runtime, nemoclaw additional model, nemoclaw sub-agent model, openclaw sub-agent, agents.list, sessions_spawn, vlm-demo, nemoclaw tool calling, ollama tool calls, vllm tool-call-parser, raw json in tui, nemoclaw inference options, nemoclaw onboarding providers, nemoclaw inference routing." +license: "Apache-2.0" +--- +# Use a Local Inference Server + +## Gotchas + +- Ollama is convenient for local chat, but some model/template combinations can return tool calls as plain text under realistic agent load. + +## Prerequisites + +- NemoClaw installed. +- A local model server running, or a supported Ollama, vLLM, or NIM setup that the NemoClaw onboard wizard can use, start, or install. + +NemoClaw can route inference to a model server running on your machine instead of a cloud API. +This page covers Ollama, compatible-endpoint paths for other servers, and experimental managed options for vLLM and NVIDIA NIM. + +All approaches use the same `inference.local` routing model. +The agent inside the sandbox never connects to your model server directly. +OpenShell intercepts inference traffic and forwards it to the local endpoint you configure. + +## Ollama + +Ollama is the default local inference option. +The onboard wizard detects Ollama automatically when it is installed or running on the host. + +If Ollama is installed but not running, NemoClaw starts it for you. +On macOS and Linux, the wizard can also offer to install Ollama when it is not present. +When the host Ollama is below the minimum version NemoClaw expects for its starter models (currently `0.7.0`), the wizard surfaces an explicit **Upgrade Ollama** entry in the provider menu instead of silently reusing the older daemon, and the express setup path resolves to that entry. +The wizard inspects both the CLI binary (`ollama --version`) and the locally running daemon (`/api/version` on `:11434`) so the upgrade entry still appears when only one side is stale, for example a fresh user-local binary paired with the original system daemon. +The gate skips Windows-host Ollama reached from WSL via `host.docker.internal`; the separate **Use / Start / Install Ollama on Windows host** entries handle that case and run their own actions on the Windows side. +On macOS, the wizard runs the platform install or upgrade path with `brew upgrade ollama`. +On Linux, the wizard runs the official `https://ollama.com/install.sh` path. +Upgrades on Linux always take the sudo-driven system path because the sudo-free user-local fallback would leave the existing system daemon on `:11434` serving the stale binary. +If sudo is not available in a non-interactive run, NemoClaw refuses to silently downgrade the path and asks you to rerun interactively or upgrade Ollama manually. +After an upgrade finishes, NemoClaw re-probes the running daemon's `/api/version` and fails the run if the daemon still reports below the minimum. +Fresh installs skip this re-probe because the bundled installers ship a daemon at or above the minimum. +On WSL, the wizard can use, start, restart, or install Ollama on the Windows host through PowerShell interop. + +### Linux Install Modes + +On native Linux, the install path picks between a system install (under `/usr/local`, via the official `https://ollama.com/install.sh`) and a sudo-free user-local install (under `${HOME}/.local`). +NemoClaw selects the mode automatically: + +- Running as root or with passwordless sudo (`sudo -n true` returns 0) selects the system install. +- A non-interactive run (`NEMOCLAW_NON_INTERACTIVE=1` or no TTY on stdin) without passwordless sudo selects the user-local install. + This is the path that lets headless hosts complete onboarding without prompting for a sudo password. +- An interactive shell without passwordless sudo selects the system install and lets the official installer prompt for the password as usual. + +Override the detection with `NEMOCLAW_OLLAMA_INSTALL_MODE=system` or `NEMOCLAW_OLLAMA_INSTALL_MODE=user`. + +The user-local install replicates only the binary extraction step of the official installer. +It downloads the release tarball, extracts it to `${HOME}/.local`, and launches `${HOME}/.local/bin/ollama serve` once. +It does not configure a systemd service, does not create the `ollama` system user, and does not install CUDA drivers, so the daemon must be relaunched manually after a reboot. +NemoClaw also prints a one-line `PATH` hint if `${HOME}/.local/bin` is not already on your `PATH`; you can add `export PATH="${HOME}/.local/bin:$PATH"` to your shell profile to invoke `ollama` directly. + +Both modes rely on `zstd` for archive extraction. On Debian and Ubuntu, the system path uses `sudo apt-get` to install `zstd` automatically and explains the prompt before continuing. +The user-local path cannot bootstrap system packages without elevation, so if `zstd` is missing it prints per-distro install hints and exits — install `zstd` manually, then rerun onboarding. + +Run the onboard wizard. + +```console +$ nemoclaw onboard +``` + +Select **Local Ollama** from the provider list. +NemoClaw lists installed models or offers starter models if none are installed. +On hosts where the larger starter models fit the currently available GPU memory, the starter list includes `qwen3.6:35b` and selects it by default. +When another GPU workload is using most of the memory at onboard time, NemoClaw downgrades the menu to the largest model that still fits. +It pulls the selected model, loads it into memory, and validates it before continuing. +When Ollama reports a loaded-model context length, NemoClaw uses that value for the `contextWindow` baked into `openclaw.json` unless you set `NEMOCLAW_CONTEXT_WINDOW` yourself. +If the selected model declares that it does not support tool calling, onboarding stops with guidance to choose a model whose `ollama show ` capabilities include `tools`. +The validation also requires structured chat-completions tool calls. +If the model leaks tool-call JSON as plain message text, onboarding stops so you can choose a model that returns tool calls in the expected response field. +On WSL, if you choose the Windows-host Ollama path, NemoClaw uses `host.docker.internal:11434` and pulls missing models through the Ollama HTTP API instead of requiring the `ollama` CLI inside WSL. + +### WSL with Windows-Host Ollama + +When NemoClaw runs inside WSL, the provider menu can include Windows-host Ollama actions: + +- Use Ollama on Windows host when the Windows daemon is already reachable. +- Restart Ollama on Windows host when the daemon is installed but only bound to Windows loopback. +- Start Ollama on Windows host when Ollama is installed but not running. +- Install Ollama on Windows host when Windows does not have Ollama installed. + +The install and restart paths set `OLLAMA_HOST=0.0.0.0:11434` on the Windows side so Docker and WSL can reach the daemon through `host.docker.internal`. +After an install or restart action, NemoClaw relaunches Ollama from the detected Windows tray app or verified `ollama.exe` path and waits until `host.docker.internal:11434` responds. + +If the HTTP endpoint is not reachable yet, NemoClaw also checks for the Windows `ollama.exe` process through PowerShell interop so it can offer a start or restart action instead of hiding the Windows-host path. +If the daemon does not become reachable, onboarding prints PowerShell commands you can run to inspect the Windows-side process and port state. Use one Ollama instance on port `11434` at a time. +If both WSL and Windows-host Ollama are running, pick the intended menu entry during onboarding so NemoClaw validates and pulls models against the right daemon. + +**Warning:** + +Ollama is convenient for local chat, but some model/template combinations can +return tool calls as plain text under realistic agent load. If the TUI shows raw +JSON such as `{"name":"memory_search","arguments":{...}}` instead of running a +tool, switch to vLLM with `--enable-auto-tool-choice` and the correct +`--tool-call-parser`. See [Tool-Calling Reliability](references/tool-calling-reliability.md). + +### Authenticated Reverse Proxy + +On non-WSL hosts, NemoClaw keeps Ollama bound to `127.0.0.1:11434` and starts a token-gated reverse proxy on `0.0.0.0:11435`. +The native install/start paths also reset NemoClaw-managed systemd launches to the loopback binding. +Containers and other hosts on the local network reach Ollama only through the +proxy, which validates a Bearer token before forwarding requests. +On that native path, NemoClaw never exposes Ollama without authentication. + +WSL Ollama paths do not use this proxy. +Windows-host Ollama uses the Windows daemon through `host.docker.internal`. + +For non-WSL Ollama setups, the onboard wizard manages the proxy automatically: + +- Generates a random 24-byte token on first run and stores it in + `~/.nemoclaw/ollama-proxy-token` with `0600` permissions. +- Starts the proxy after Ollama and verifies it before continuing. +- Cleans up stale proxy processes from previous runs. +- Probes the sandbox Docker network path to the proxy before committing the inference route. +- Stops matching proxy processes during uninstall before deleting NemoClaw state. +- Reuses the persisted token after a host reboot so you do not need to re-run + onboard. + +On native Linux hosts, a firewall can allow the host proxy health check while still blocking sandbox containers on the OpenShell Docker bridge. +When the sandbox-side proxy probe fails with a TCP error, onboarding exits before it saves the inference route and prints a command like: + +```console +$ sudo ufw allow from to any port 11435 proto tcp +$ nemoclaw onboard +``` + +If the probe cannot run, for example because Docker Desktop or WSL uses a different host routing model, onboarding continues and relies on the regular proxy health check. + +The sandbox provider is configured to use proxy port `11435` with the generated +token as its `OPENAI_API_KEY` credential. +OpenShell's L7 proxy injects the token at egress, so the agent inside the +sandbox never sees the token directly. + +All proxy endpoints require the Bearer token, including `GET /api/tags`. +Internal health and reachability checks run via the proxy treat any HTTP +response (including `401`) as proof the proxy is alive — they only fail +when nothing answers at all. + +If Ollama is already running on a non-loopback address when you start onboard, +the wizard restarts it on `127.0.0.1:11434` so the proxy is the only network +path to the model server. + +### GPU Memory Cleanup + +When you switch away from Ollama, stop host services, or destroy an Ollama-backed sandbox, NemoClaw asks Ollama to unload currently loaded models from GPU memory. +The cleanup sends `keep_alive: 0` for each model reported by Ollama and runs on a best-effort basis, so shutdown continues if Ollama is already stopped. +This does not delete downloaded model files. + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup. + +## OpenAI-Compatible Server + +This option works with any server that implements `/v1/chat/completions`, including vLLM, TensorRT-LLM, llama.cpp, LocalAI, and others. +For compatible endpoints, NemoClaw uses `/v1/chat/completions` by default. +This avoids a class of failures where local backends accept `/v1/responses` requests but silently drop the system prompt and tool definitions. +To opt in to `/v1/responses`, set `NEMOCLAW_PREFERRED_API=openai-responses` before running onboard. + +Start your model server. +The examples below use vLLM, but any OpenAI-compatible server works. + +```console +$ vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000 +``` + +Run the onboard wizard. + +```console +$ nemoclaw onboard +``` + +When the wizard asks you to choose an inference provider, select **Other OpenAI-compatible endpoint**. +Enter the base URL of your local server, for example `http://localhost:8000/v1`. + +The wizard prompts for an API key. +If your server does not require authentication, enter any non-empty string (for example, `dummy`). + +NemoClaw validates the endpoint by sending a test inference request before continuing. +The wizard probes `/v1/chat/completions` by default for the compatible-endpoint provider. +If you set `NEMOCLAW_PREFERRED_API=openai-responses`, NemoClaw probes `/v1/responses` instead and only selects it when the response includes the streaming events OpenClaw requires. +If a reasoning model returns only reasoning content before producing a final answer, NemoClaw retries the smoke request with a larger response budget. +Route, configuration, and authentication failures still fail immediately. + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup, Selecting the API Path. + +## Anthropic-Compatible Server + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. + +## vLLM + +When vLLM is already running on `localhost:8000`, NemoClaw can detect it automatically and query the `/v1/models` endpoint to determine the loaded model. +On supported Linux hosts with NVIDIA GPUs, the onboard wizard can also install or start a managed vLLM container for you. + +For an already-running vLLM server, run `nemoclaw onboard` and select **Local vLLM [experimental]** from the provider list. + +```console +$ nemoclaw onboard +``` + +If vLLM is already running, NemoClaw detects the running model and validates the endpoint. +If vLLM is not running and your host matches a DGX Spark or DGX Station managed profile, NemoClaw shows the **Install vLLM** or **Start vLLM** entry by default. +Generic Linux NVIDIA GPU hosts still require `NEMOCLAW_EXPERIMENTAL=1` or `NEMOCLAW_PROVIDER=install-vllm` before the managed entry appears. +NemoClaw pulls the vLLM image, downloads model weights into `~/.cache/huggingface`, starts the `nemoclaw-vllm` container on `localhost:8000`, and prints progress markers while the model loads. +The first run can take 10 to 30 minutes. +Later runs reuse the cached image and model weights. + +Managed vLLM uses these profiles: + +| Host profile | Default model | +|---|---| +| DGX Spark | `Qwen/Qwen3.6-27B-FP8` | +| DGX Station | `Qwen/Qwen3.6-27B-FP8` | +| Linux with an NVIDIA GPU | `nvidia/NVIDIA-Nemotron-3-Nano-4B-FP8` | + +**Note:** + +NemoClaw forces the `chat/completions` API path for vLLM. +The vLLM `/v1/responses` endpoint does not run the `--tool-call-parser`, so tool calls arrive as raw text. + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup, Override the Managed-vLLM Model. + +## NVIDIA NIM (Experimental) + +NemoClaw can pull, start, and manage a NIM container on hosts with a NIM-capable NVIDIA GPU. + +Set the experimental flag and run onboard. + +```console +$ NEMOCLAW_EXPERIMENTAL=1 nemoclaw onboard +``` + +Select **Local NVIDIA NIM [experimental]** from the provider list. +NemoClaw filters available models by GPU VRAM, pulls the NIM container image, starts it, and waits for it to become healthy before continuing. +On hosts with mixed NVIDIA GPU models, the preflight summary shows each detected GPU model and the total VRAM so you can confirm which device class the model selection used. + +NIM container images are hosted on `nvcr.io` and require NGC registry authentication before `docker pull` succeeds. +If Docker is not already logged in to `nvcr.io`, onboard prompts for an [NGC API key](https://org.ngc.nvidia.com/setup/api-key) and runs `docker login nvcr.io` over `--password-stdin` so the key is never written to disk or shell history. +The prompt masks the key during input and retries once on a bad key before failing. +In non-interactive mode, onboard exits with login instructions if Docker is not already authenticated; run `docker login nvcr.io` yourself, then re-run `nemoclaw onboard --non-interactive`. +If `NGC_API_KEY` or `NVIDIA_API_KEY` is already exported, NemoClaw passes it into the managed NIM container through the process environment instead of command-line arguments. +If the NIM container exits before the health endpoint becomes ready, onboarding stops early and prints the last container log lines. + +**Note:** + +NIM uses vLLM internally. +The same `chat/completions` API path restriction applies. + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup. + +## Timeout Configuration + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. + +## Verify the Configuration + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. + +## Switch Models at Runtime + +Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. + +## References + +- **Load [references/switch-inference-providers.md](references/switch-inference-providers.md)** when switching inference providers, changing the model runtime, or reconfiguring inference routing. Changes the active inference model without restarting the sandbox. +- **Load [references/set-up-sub-agent.md](references/set-up-sub-agent.md)** when users ask how to add a second model, configure a sub-agent model, use Omni for vision tasks, configure agents.list, or use sessions_spawn in NemoClaw. Shows the NemoClaw-specific file paths and update flow for adding an auxiliary OpenClaw sub-agent model. +- **[references/tool-calling-reliability.md](references/tool-calling-reliability.md)** — Explains Ollama tool-call leak symptoms, when vLLM with a tool-call parser is recommended, and how to repoint NemoClaw to a parser-aware local endpoint. +- **Load [references/inference-options.md](references/inference-options.md)** when explaining which providers are available, what the onboard wizard presents, or how inference routing works. Lists all inference providers offered during NemoClaw onboarding. +- **Load [references/use-local-inference-details.md](references/use-local-inference-details.md)** when you need detailed steps for Non-Interactive Setup, Selecting the API Path, Anthropic-Compatible Server, and related details. + +## Related Skills + +- [Inference Options](references/inference-options.md) for the full list of providers available during onboarding. +- [Tool-Calling Reliability](references/tool-calling-reliability.md) for diagnosing raw JSON tool-call output with local models. +- [Switch Inference Models](references/switch-inference-providers.md) for runtime model switching. +- `nemoclaw-user-get-started` — Quickstart (use the `nemoclaw-user-get-started` skill) for first-time installation diff --git a/skills/nemoclaw-user-configure-inference/evals/evals.json b/skills/nemoclaw-user-configure-inference/evals/evals.json new file mode 100644 index 00000000000..f041d18a7bd --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/evals/evals.json @@ -0,0 +1,212 @@ +[ + { + "id": "docs-inference-inference-options-001", + "question": "I'm choosing an inference option during onboarding. Help me compare hosted providers, local servers, and compatible endpoints so I can select a model path that fits my privacy, cost, and reliability needs.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user compare hosted providers, local servers, and compatible endpoints and gives enough concrete guidance, decision criteria, verification steps, or risk framing to select a model path that fits my privacy, cost, and reliability needs.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing an inference option during onboarding.", + "The AI coding assistant loads the expected_skill and references/inference-options.md", + "The output helps the user compare hosted providers, local servers, and compatible endpoints with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to select a model path that fits my privacy, cost, and reliability needs.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." + ] + }, + { + "id": "docs-inference-inference-options-002", + "question": "I'm preparing provider credentials. Help me know which provider capabilities and secrets onboarding requires so I can complete setup without avoidable credential errors.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user know which provider capabilities and secrets onboarding requires and gives enough concrete guidance, decision criteria, verification steps, or risk framing to complete setup without avoidable credential errors.", + "expected_behavior": [ + "The output directly addresses the user's situation: preparing provider credentials.", + "The AI coding assistant loads the expected_skill and references/inference-options.md", + "The output helps the user know which provider capabilities and secrets onboarding requires with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to complete setup without avoidable credential errors.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." + ] + }, + { + "id": "docs-inference-inference-options-003", + "question": "I'm evaluating routed inference. Help me understand how the sandbox calls models through the gateway so I can trust that model credentials stay outside the sandbox.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand how the sandbox calls models through the gateway and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust that model credentials stay outside the sandbox.", + "expected_behavior": [ + "The output directly addresses the user's situation: evaluating routed inference.", + "The AI coding assistant loads the expected_skill and references/inference-options.md", + "The output helps the user understand how the sandbox calls models through the gateway with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust that model credentials stay outside the sandbox.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." + ] + }, + { + "id": "docs-inference-use-local-inference-001", + "question": "I'm connecting a local inference server. Help me route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint so I can meet privacy, latency, or cost goals.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to meet privacy, latency, or cost goals.", + "expected_behavior": [ + "The output directly addresses the user's situation: connecting a local inference server.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to meet privacy, latency, or cost goals.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-inference-use-local-inference-002", + "question": "I'm debugging local endpoint reachability. Help me separate NemoClaw routing issues from model-server issues so I can fix the right component first.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user separate NemoClaw routing issues from model-server issues and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix the right component first.", + "expected_behavior": [ + "The output directly addresses the user's situation: debugging local endpoint reachability.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user separate NemoClaw routing issues from model-server issues with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix the right component first.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-inference-use-local-inference-003", + "question": "I'm configuring traffic through `inference.local`. Help me understand the required host, port, and model settings so I can make sandboxed inference calls resolve to my local server.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand the required host, port, and model settings and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make sandboxed inference calls resolve to my local server.", + "expected_behavior": [ + "The output directly addresses the user's situation: configuring traffic through `inference.local`.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand the required host, port, and model settings with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make sandboxed inference calls resolve to my local server.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-inference-switch-inference-providers-001", + "question": "I'm switching inference models during a running session. Help me change model behavior without restarting the sandbox so I can adapt to task, cost, or reliability needs quickly.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user change model behavior without restarting the sandbox and gives enough concrete guidance, decision criteria, verification steps, or risk framing to adapt to task, cost, or reliability needs quickly.", + "expected_behavior": [ + "The output directly addresses the user's situation: switching inference models during a running session.", + "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", + "The output helps the user change model behavior without restarting the sandbox with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to adapt to task, cost, or reliability needs quickly.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." + ] + }, + { + "id": "docs-inference-switch-inference-providers-002", + "question": "I'm confirming a runtime model change. Help me verify the agent is using the new active model so I can avoid mistaking host configuration changes for live routing changes.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user verify the agent is using the new active model and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid mistaking host configuration changes for live routing changes.", + "expected_behavior": [ + "The output directly addresses the user's situation: confirming a runtime model change.", + "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", + "The output helps the user verify the agent is using the new active model with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid mistaking host configuration changes for live routing changes.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." + ] + }, + { + "id": "docs-inference-switch-inference-providers-003", + "question": "I'm trying a different model during active work. Help me know how to roll back to the previous model so I can experiment without disrupting the assistant workflow.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user know how to roll back to the previous model and gives enough concrete guidance, decision criteria, verification steps, or risk framing to experiment without disrupting the assistant workflow.", + "expected_behavior": [ + "The output directly addresses the user's situation: trying a different model during active work.", + "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", + "The output helps the user know how to roll back to the previous model with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to experiment without disrupting the assistant workflow.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." + ] + }, + { + "id": "docs-inference-set-up-sub-agent-001", + "question": "I'm configuring a task-specific sub-agent. Help me assign a specialized model to work the default agent should not handle so I can improve task fit without changing the whole assistant.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user assign a specialized model to work the default agent should not handle and gives enough concrete guidance, decision criteria, verification steps, or risk framing to improve task fit without changing the whole assistant.", + "expected_behavior": [ + "The output directly addresses the user's situation: configuring a task-specific sub-agent.", + "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", + "The output helps the user assign a specialized model to work the default agent should not handle with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to improve task fit without changing the whole assistant.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." + ] + }, + { + "id": "docs-inference-set-up-sub-agent-002", + "question": "I'm editing sub-agent model configuration. Help me understand where files, credentials, and workspace settings live so I can avoid leaking secrets or changing the wrong agent.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand where files, credentials, and workspace settings live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid leaking secrets or changing the wrong agent.", + "expected_behavior": [ + "The output directly addresses the user's situation: editing sub-agent model configuration.", + "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", + "The output helps the user understand where files, credentials, and workspace settings live with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid leaking secrets or changing the wrong agent.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." + ] + }, + { + "id": "docs-inference-set-up-sub-agent-003", + "question": "I'm testing a new sub-agent. Help me send a prompt that exercises the intended routing so I can prove it uses the expected provider and model.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user send a prompt that exercises the intended routing and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prove it uses the expected provider and model.", + "expected_behavior": [ + "The output directly addresses the user's situation: testing a new sub-agent.", + "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", + "The output helps the user send a prompt that exercises the intended routing with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prove it uses the expected provider and model.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." + ] + }, + { + "id": "docs-inference-tool-calling-reliability-001", + "question": "I'm seeing tool calls leak as plain text. Help me diagnose whether the model, server, or parser is incompatible so I can restore reliable tool execution.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user diagnose whether the model, server, or parser is incompatible and gives enough concrete guidance, decision criteria, verification steps, or risk framing to restore reliable tool execution.", + "expected_behavior": [ + "The output directly addresses the user's situation: seeing tool calls leak as plain text.", + "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", + "The output helps the user diagnose whether the model, server, or parser is incompatible with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to restore reliable tool execution.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." + ] + }, + { + "id": "docs-inference-tool-calling-reliability-002", + "question": "I'm comparing local inference runtimes. Help me understand whether Ollama, vLLM, or parser settings better support tool calls so I can choose a runtime that matches the agent's tool needs.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand whether Ollama, vLLM, or parser settings better support tool calls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose a runtime that matches the agent's tool needs.", + "expected_behavior": [ + "The output directly addresses the user's situation: comparing local inference runtimes.", + "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", + "The output helps the user understand whether Ollama, vLLM, or parser settings better support tool calls with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose a runtime that matches the agent's tool needs.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." + ] + }, + { + "id": "docs-inference-tool-calling-reliability-003", + "question": "I'm letting an always-on assistant use tools unattended. Help me define the reliability bar for local tool calling so I can avoid silent failures or unsafe plain-text tool outputs.", + "expected_skill": "nemoclaw-user-configure-inference", + "ground_truth": "A NemoClaw-specific answer that helps the user define the reliability bar for local tool calling and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid silent failures or unsafe plain-text tool outputs.", + "expected_behavior": [ + "The output directly addresses the user's situation: letting an always-on assistant use tools unattended.", + "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", + "The output helps the user define the reliability bar for local tool calling with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid silent failures or unsafe plain-text tool outputs.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." + ] + } +] diff --git a/skills/nemoclaw-user-configure-inference/references/inference-options.md b/skills/nemoclaw-user-configure-inference/references/inference-options.md new file mode 100644 index 00000000000..0a869a0982a --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/references/inference-options.md @@ -0,0 +1,140 @@ +# NemoClaw Inference Options + +NemoClaw supports multiple inference providers. +During onboarding, the `nemoclaw onboard` wizard presents a numbered list of providers to choose from. +Your selection determines where the agent's inference traffic is routed. + +## How Inference Routing Works + +The agent inside the sandbox talks to `inference.local`. +It never connects to a provider directly. +OpenShell intercepts inference traffic on the host and forwards it to the provider you selected. + +Provider credentials stay on the host. +The sandbox does not receive your API key. +Local Ollama and local vLLM do not require your host `OPENAI_API_KEY`. +NemoClaw uses provider-specific local tokens for those routes, and rebuilds of legacy local-inference sandboxes migrate away from stale OpenAI credential requirements. + +## Provider Status + +| Provider | Status | Endpoint type | Notes | +|----------|--------|---------------|-------| +| NVIDIA Endpoints | Tested | OpenAI-compatible | Hosted models on integrate.api.nvidia.com | +| OpenAI | Tested | Native OpenAI-compatible | Uses OpenAI model IDs | +| Other OpenAI-compatible endpoint | Tested | Custom OpenAI-compatible | For compatible proxies and gateways | +| Anthropic | Tested | Native Anthropic | Uses anthropic-messages | +| Other Anthropic-compatible endpoint | Tested | Custom Anthropic-compatible | For Claude proxies and compatible gateways | +| Google Gemini | Tested | OpenAI-compatible | Uses Google's OpenAI-compatible endpoint | +| Hermes Provider | Hermes only | OpenAI-compatible route | Available when onboarding Hermes Agent through `nemohermes` | +| Local Ollama | Caveated | Local Ollama API | Available when Ollama is installed or running on the host | +| Local NVIDIA NIM | Experimental | Local OpenAI-compatible | Requires `NEMOCLAW_EXPERIMENTAL=1` and a NIM-capable GPU | +| Local vLLM (already running) | Caveated | Local OpenAI-compatible | Appears in the onboarding menu when NemoClaw detects a server already on `localhost:8000`. No flag required. | +| Local vLLM (managed install/start) | Caveated | Local OpenAI-compatible | Appears by default on DGX Spark and DGX Station. Generic Linux NVIDIA GPU hosts require `NEMOCLAW_EXPERIMENTAL=1` or `NEMOCLAW_PROVIDER=install-vllm`. NemoClaw pulls/starts a vLLM container on a supported NVIDIA GPU host. | + +## Provider Options + +The onboard wizard presents the following provider options by default. +The first six are always available. +Ollama appears when it is installed or running on the host. +Local vLLM appears when NemoClaw detects a running vLLM server. +The managed install/start vLLM entry appears by default on DGX Spark and DGX Station, and appears on generic Linux NVIDIA GPU hosts after opt-in. + +| Option | Description | Curated models | +|--------|-------------|----------------| +| NVIDIA Endpoints | Routes to models hosted on [build.nvidia.com](https://build.nvidia.com). You can also enter any model ID from the catalog. Set `NVIDIA_API_KEY`. | Nemotron 3 Super 120B, GLM-5.1, MiniMax M2.7, GPT-OSS 120B, DeepSeek V4 Pro | +| OpenAI | Routes to the OpenAI API. Set `OPENAI_API_KEY`. | `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.4-pro-2026-03-05` | +| Other OpenAI-compatible endpoint | Routes to any server that implements `/v1/chat/completions`. NemoClaw uses `/v1/chat/completions` at runtime by default; set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` for proxies that implement it, such as some llama.cpp builds. The wizard prompts for a base URL and model name. Works with OpenRouter, LocalAI, llama.cpp, or any compatible proxy. When you enable Telegram messaging, onboarding also runs a bounded sandbox-side smoke check through `https://inference.local/v1/chat/completions`. Set `COMPATIBLE_API_KEY`. | You provide the model name. | +| Anthropic | Routes to the Anthropic Messages API. Set `ANTHROPIC_API_KEY`. | `claude-sonnet-4-6`, `claude-haiku-4-5`, `claude-opus-4-6` | +| Other Anthropic-compatible endpoint | Routes to any server that implements the Anthropic Messages API (`/v1/messages`). The wizard prompts for a base URL and model name. Set `COMPATIBLE_ANTHROPIC_API_KEY`. | You provide the model name. | +| Google Gemini | Routes to Google's OpenAI-compatible chat-completions endpoint. NemoClaw skips the Responses-API probe because Gemini does not support `/v1/responses`. Set `GEMINI_API_KEY`. | `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3-flash-preview`, `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite` | +| Hermes Provider | Routes Hermes Agent through the host OpenShell provider registered by NemoClaw when onboarding Hermes Agent. | Curated Hermes Provider models such as `moonshotai/kimi-k2.6`, `openai/gpt-5.4-mini`, and `z-ai/glm-5.1`. | +| Local Ollama | Routes to a local Ollama instance on `localhost:11434`. NemoClaw detects installed models, offers starter models if none are present, pulls and warms the selected model, and validates it. | Selected during onboarding. For more information, refer to [Use a Local Inference Server](../SKILL.md). | +| Model Router | Starts a host-side router on port `4000`, registers it as an OpenAI-compatible provider, and keeps the sandbox pointed at `inference.local`. Set `NEMOCLAW_PROVIDER=routed` for non-interactive setup. | The router pool defines the model names. | + +## Choosing the Right Option for Nemotron + +NVIDIA Nemotron models expose OpenAI-compatible APIs across every supported deployment surface, so two onboarding options can route to Nemotron. + +| Where Nemotron is hosted | Onboard wizard option | Why | +|---|---|---| +| `build.nvidia.com` (NVIDIA-hosted) | **Option 1: NVIDIA Endpoints** | NemoClaw sets the base URL to `https://integrate.api.nvidia.com/v1` for you and validates the model against the build catalog. | +| Self-hosted NIM container | **Option 3: Other OpenAI-compatible endpoint** | NIM exposes an OpenAI-compatible `/v1/chat/completions` route. Point the base URL at your NIM service and enter the Nemotron model ID. | +| Enterprise NVIDIA AI Enterprise gateway | **Option 3: Other OpenAI-compatible endpoint** | Enterprise gateways front Nemotron with the same OpenAI-compatible contract. Use the gateway's base URL and your enterprise token. | +| vLLM, SGLang, or TRT-LLM serving Nemotron weights | **Option 3: Other OpenAI-compatible endpoint** | Each runtime exposes Nemotron through `/v1/chat/completions`. Use the runtime's base URL and the model ID it reports. | +| Local NIM started by the wizard | **Local NVIDIA NIM** (experimental) | Requires `NEMOCLAW_EXPERIMENTAL=1` and a NIM-capable GPU. NemoClaw pulls and manages the container for you. | + +For Option 3, the API key environment variable is `COMPATIBLE_API_KEY`. Set it to whatever credential your endpoint expects, or any non-empty placeholder if your endpoint does not require auth. + +## Model Router + +The Model Router option uses the `routed` inference profile in `nemoclaw-blueprint/blueprint.yaml`. +When you select it, NemoClaw starts the router proxy on the host, waits for its health endpoint, registers the `nvidia-router` provider with OpenShell, and creates the sandbox with the same `inference.local` route the agent uses for other providers. +The sandbox does not call the router port directly. + +The router model pool lives in `nemoclaw-blueprint/router/pool-config.yaml`. +The default pool routes between NVIDIA-hosted Nemotron models and uses the `tolerance` value to choose the lowest-cost model whose predicted quality stays within the configured threshold. +To use the router in scripted setup, set: + +```console +$ NEMOCLAW_PROVIDER=routed NVIDIA_API_KEY= nemoclaw onboard --non-interactive +``` + +### Host Python requirement + +The Model Router runs in a host-side virtual environment that NemoClaw creates during onboarding. +NemoClaw probes `python3.13`, `python3.12`, `python3.11`, `python3.10`, and bare `python3`, and adopts the first interpreter that satisfies both of: + +- Version inside `[3.10, 3.14)`. +- `ensurepip`, `pyexpat`, `ssl`, and `venv` all import without error. + +If no candidate qualifies, onboarding aborts and prints the real failure for each candidate. +This surfaces issues like Homebrew `python@3.14` whose `pyexpat` extension fails to dlopen against the older system `libexpat` on macOS. + +To pin a specific interpreter, set `NEMOCLAW_MODEL_ROUTER_PYTHON` to its absolute path before running `nemoclaw onboard`: + +```console +$ NEMOCLAW_MODEL_ROUTER_PYTHON=/opt/homebrew/bin/python3.12 nemoclaw onboard +``` + +The pin is strict. +NemoClaw probes only that interpreter and aborts with the failure reason if it does not qualify, rather than silently falling back to a different python on `PATH`. +Relative command names such as `python3.12` are rejected; use `command -v python3.12` to find the absolute path. +If `python -m venv` itself fails for a probe-clean interpreter (for example, a corrupt ensurepip seed), NemoClaw retries with the next healthy candidate when no pin is set; with a pin set, the failure stops onboarding so you can fix or repoint the pinned python. + +## Caveated Local Options + +The following local inference options are caveated. +Local NIM and generic Linux managed vLLM install/start require `NEMOCLAW_EXPERIMENTAL=1`; DGX Spark and DGX Station managed vLLM entries appear by default. +An already-running vLLM server appears directly in the onboarding selection list. + +| Option | Condition | Notes | +|--------|-----------|-------| +| Local NVIDIA NIM | NIM-capable GPU detected | Pulls and manages a NIM container. | +| Local vLLM | vLLM running on `localhost:8000`, or a supported DGX Spark, DGX Station, or Linux NVIDIA GPU profile | Auto-detects the loaded model when vLLM is already running. Can install or start a managed vLLM container by default on DGX Spark/Station and after opt-in on generic Linux NVIDIA GPU hosts. | + +For setup instructions, refer to [Use a Local Inference Server](../SKILL.md). + +## Validation + +NemoClaw validates the selected provider and model before creating the sandbox. +If credential validation fails, the wizard asks whether to re-enter the API key, choose a different provider, retry, or exit. +Transient upstream validation failures are retried before the wizard reports a provider failure. +The `nvapi-` prefix check applies only to `NVIDIA_API_KEY`. +Other provider credentials, such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, and compatible endpoint keys, use provider-aware validation during retry. + +| Provider type | Validation method | +|---|---| +| OpenAI | Tries `/responses` first, then `/chat/completions`. | +| NVIDIA Endpoints | Validates via `/v1/chat/completions` only; the `/v1/responses` probe is skipped because NVIDIA Build does not expose `/v1/responses` (returns 404 for every model). | +| Google Gemini | Validates via Gemini's OpenAI-compatible chat-completions path only; the `/v1/responses` probe is skipped because Gemini does not support the Responses API. | +| Other OpenAI-compatible endpoint | Tries `/v1/responses` first with a tool-calling probe; falls back to `/v1/chat/completions`. Selected runtime API defaults to `/v1/chat/completions`; set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` at runtime when validation succeeds. | +| Anthropic-compatible | Tries `/v1/messages`. | +| NVIDIA Endpoints (manual model entry) | Validates the model name against the catalog API. | +| Compatible endpoints | Sends a real inference request because many proxies do not expose a `/models` endpoint. For OpenAI-compatible endpoints, the probe tries `/v1/responses` first then falls back to `/v1/chat/completions`; the selected runtime API defaults to `/v1/chat/completions`. Set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` at runtime when validation succeeds. | +| Local NVIDIA NIM | Validates via `/v1/chat/completions` only; the `/v1/responses` probe is skipped (same as NVIDIA Endpoints). | + +## Next Steps + +- [Use a Local Inference Server](../SKILL.md) for Ollama, vLLM, NIM, and compatible-endpoint setup details. +- [Tool-Calling Reliability](tool-calling-reliability.md) for deciding when Ollama is enough and when vLLM with a parser is safer. +- [Switch Inference Models](switch-inference-providers.md) for changing the model at runtime without re-onboarding. diff --git a/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md b/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md new file mode 100644 index 00000000000..df0672b30a5 --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md @@ -0,0 +1,118 @@ +# Set Up Task-Specific Sub-Agents + +OpenClaw documents the sub-agent behavior, `sessions_spawn` tool, `agents.list` configuration, tool policy, nesting, and auth model in [Sub-Agents](https://docs.openclaw.ai/tools/subagents). +Use that page as the source of truth for how OpenClaw sub-agents work. + +This NemoClaw page covers the sandbox-specific pieces: where the OpenClaw config lives, where to put per-agent credentials, which writable workspace path agents should use, and how the Omni VLM demo maps onto those paths. + +## NemoClaw Sandbox Paths + +NemoClaw runs OpenClaw inside an OpenShell sandbox. +When adapting an OpenClaw sub-agent setup, use these paths inside the sandbox: + +| Path | Purpose | +|---|---| +| `/sandbox/.openclaw/openclaw.json` | OpenClaw config, including `models.providers`, `agents.defaults`, and `agents.list`. | +| `/sandbox/.openclaw/.config-hash` | Hash for `openclaw.json`. Keep it in sync after manual config edits; it becomes a startup-enforced trust anchor only after the file is root-owned and read-only. | +| `/sandbox/.openclaw/agents//agent/auth-profiles.json` | Per-agent provider credentials. Use this when a sub-agent calls an auxiliary provider directly. | +| `/sandbox/.openclaw/workspace/` | Writable shared workspace path for files the primary agent passes to the sub-agent. | +| `/tmp/gateway.log` | OpenClaw gateway log. Use it to confirm config reloads and diagnose sub-agent failures. | + +For file-based tasks, instruct agents to use `/sandbox/.openclaw/workspace/`. +Avoid relying on legacy `.openclaw-data` paths or read-only OpenClaw paths in delegation instructions. + +## Omni Vision Sub-Agent Example + +The [`vlm-demo`](https://github.com/brevdev/nemoclaw-demos/tree/main/vlm-demo) applies the OpenClaw sub-agent pattern to a vision task. +It keeps the primary `main` agent on the normal NemoClaw inference route and adds a `vision-operator` sub-agent backed by an Omni vision model. + +| OpenClaw field | Omni example value | +|---|---| +| Primary agent | `main` | +| Primary model | `inference/nvidia/nemotron-3-super-120b-a12b` | +| Auxiliary provider | `nvidia-omni` | +| Sub-agent | `vision-operator` | +| Sub-agent model | `nvidia-omni/private/nvidia/nemotron-3-nano-omni-reasoning-30b-a3b` | +| Delegation tool | `sessions_spawn` | + +Omni is used as the specialist model for image tasks. +The primary orchestration model remains responsible for conversation, planning, and deciding when to delegate. + +## Update the Sandbox Config + +Fetch the current OpenClaw config from the sandbox, patch it with your auxiliary provider and `agents.list` changes, then upload it back. + +```console +$ export SANDBOX=my-assistant +$ export DOCKER_CTR=openshell-cluster-nemoclaw +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- cat /sandbox/.openclaw/openclaw.json > /tmp/openclaw.json +``` + +Create `/tmp/openclaw.updated.json` with the OpenClaw sub-agent config. +For the Omni example, the demo provides `vlm-demo/vlm-subagent/openclaw-patch.py`. + +Upload the patched config and refresh the hash. +In the default mutable state, this keeps the local hash consistent but does not make it tamper-proof; lock the config root-owned and read-only afterward if the sandbox should enforce config integrity at startup. + +```console +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 644 /sandbox/.openclaw/openclaw.json +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 644 /sandbox/.openclaw/.config-hash +$ cat /tmp/openclaw.updated.json | docker exec -i "$DOCKER_CTR" kubectl exec -i -n openshell "$SANDBOX" -c agent -- sh -c 'cat > /sandbox/.openclaw/openclaw.json' +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- /bin/bash -c "cd /sandbox/.openclaw && sha256sum openclaw.json > .config-hash" +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 444 /sandbox/.openclaw/openclaw.json +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 444 /sandbox/.openclaw/.config-hash +``` + +Check `/tmp/gateway.log` after upload and confirm the gateway hot-reloaded the provider or `agents.list` change. + +## Add Sub-Agent Credentials + +If the auxiliary model uses a provider key outside the normal NemoClaw inference route, put that key in the sub-agent auth profile. +For the Omni example: + +```text +/sandbox/.openclaw/agents/vision-operator/agent/auth-profiles.json +``` + +Use the same provider ID that appears in `models.providers`, such as `nvidia-omni`. +After uploading the auth profile, make sure the sub-agent directory is owned by the sandbox user: + +```console +$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chown -R sandbox:sandbox /sandbox/.openclaw/agents/vision-operator +``` + +## Allow Auxiliary Provider Egress + +If the sub-agent calls a provider directly, update the OpenShell network policy for the binary that makes the request. +In the Omni demo, the OpenClaw gateway runs as `/usr/local/bin/node`, so the NVIDIA endpoint policy must allow that binary. + +Refer to Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for policy update workflows. + +## Add Delegation Instructions + +OpenClaw handles `sessions_spawn`, but the primary agent still needs task instructions. +Place those instructions in the writable workspace, for example: + +```text +/sandbox/.openclaw/workspace/TOOLS.md +``` + +The Omni demo includes `vlm-demo/vlm-subagent/TOOLS.md`, which tells `main` to delegate image tasks to `vision-operator` and tells the sub-agent to read the image path it receives. +Adapt that file for other task-specific models. + +## Demo Assets + +Use the [`vlm-demo`](https://github.com/brevdev/nemoclaw-demos/tree/main/vlm-demo) repository for runnable Omni example assets: + +- `vlm-subagent-guide.md` for a command-by-command walkthrough. +- `vlm-subagent/openclaw-patch.py` for patching `openclaw.json`. +- `vlm-subagent/auth-profiles.template.json` for the sub-agent auth profile. +- `vlm-subagent/TOOLS.md` for delegation instructions. + +## Next Steps + +Use the following resources for more information: + +- Refer to [OpenClaw Sub-Agents](https://docs.openclaw.ai/tools/subagents) for `sessions_spawn`, `agents.list`, nesting, tool policy, and auth behavior. +- Refer to [Switch Inference Providers](switch-inference-providers.md) to change the primary orchestration model instead of adding a sub-agent model. +- Refer to Workspace Files (use the `nemoclaw-user-manage-sandboxes` skill) to understand per-agent workspace directories. diff --git a/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md b/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md new file mode 100644 index 00000000000..59c7db1abbb --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md @@ -0,0 +1,205 @@ +# Switch Inference Models at Runtime + +Change the active inference model while the sandbox is running. +No restart is required. + +## Prerequisites + +- A running NemoClaw sandbox. +- The OpenShell CLI on your `PATH`, which NemoClaw uses under the hood. + +## Switch to a Different Model + +Use `nemoclaw inference set` with the provider and model that match the upstream you want to use. +The command updates the OpenShell inference route and synchronizes the running agent config. +For OpenClaw, it updates `agents.defaults.model.primary` and the matching provider namespace. +For Hermes, it updates `/sandbox/.hermes/config.yaml` (`model.default`, `model.base_url`, and `model.provider: custom`) without rebuilding or restarting Hermes. + +Pass `--sandbox ` when you do not want to use the default registered sandbox. +Under `nemohermes`, pass `--sandbox ` when more than one Hermes sandbox is registered. + +### NVIDIA Endpoints + +```console +$ nemoclaw inference set --provider nvidia-prod --model nvidia/nemotron-3-super-120b-a12b +``` + +### OpenAI + +```console +$ nemoclaw inference set --provider openai-api --model gpt-5.4 +``` + +### Anthropic + +```console +$ nemoclaw inference set --provider anthropic-prod --model claude-sonnet-4-6 +``` + +### Google Gemini + +```console +$ nemoclaw inference set --provider gemini-api --model gemini-2.5-flash +``` + +### Compatible Endpoints + +If you onboarded a custom compatible endpoint, switch models with the provider created for that endpoint: + +```console +$ nemoclaw inference set --provider compatible-endpoint --model +``` + +```console +$ nemoclaw inference set --provider compatible-anthropic-endpoint --model +``` + +### Hermes Provider + +For a NemoClaw-managed Hermes sandbox, use the Hermes alias with the registered Hermes Provider route: + +```console +$ nemohermes inference set --provider hermes-provider --model openai/gpt-5.4-mini +``` + +#### Switching from Responses API to Chat Completions + +If onboarding selected `/v1/responses` but the agent fails at runtime (for +example, because the backend does not emit the streaming events OpenClaw +requires), re-run onboarding so the wizard re-probes the endpoint and bakes +the correct API path into the image: + +```console +$ nemoclaw onboard +``` + +Select the same provider and endpoint again. +The updated streaming probe will detect incomplete `/v1/responses` support +and select `/v1/chat/completions` automatically. + +For the compatible-endpoint provider, NemoClaw uses `/v1/chat/completions` by +default, so no env var is required to keep the safe path. +To opt in to `/v1/responses` for a backend you have verified end to end, set +`NEMOCLAW_PREFERRED_API` before onboarding: + +```console +$ NEMOCLAW_PREFERRED_API=openai-responses nemoclaw onboard +``` + +**Note:** + +`NEMOCLAW_INFERENCE_API_OVERRIDE` patches the config at container startup but +does not update the Dockerfile ARG baked into the image. +If you recreate the sandbox without the override env var, the image reverts to +the original API path. +A fresh `nemoclaw onboard` is the reliable fix because it updates both the +session and the baked image. + +## Cross-Provider Switching + +Switching to a different provider family (for example, from NVIDIA Endpoints to Anthropic) also uses `nemoclaw inference set`. +The command updates both the gateway route and the OpenClaw provider namespace in the running sandbox config. + +```console +$ nemoclaw inference set --provider anthropic-prod --model claude-sonnet-4-6 --no-verify +``` + +Use `--no-verify` only when OpenShell cannot verify the provider at switch time but you have already confirmed the provider and credential. + +## Tune Model Metadata + +The sandbox image bakes model metadata (context window, max output tokens, reasoning mode, and accepted input modalities) into `openclaw.json` at build time. +To change these values, set the corresponding environment variables before running `nemoclaw onboard` so they patch into the Dockerfile before the image builds. + +| Variable | Values | Default | +|---|---|---| +| `NEMOCLAW_CONTEXT_WINDOW` | Positive integer (tokens) | `131072` | +| `NEMOCLAW_MAX_TOKENS` | Positive integer (tokens) | `4096` | +| `NEMOCLAW_REASONING` | `true` or `false` | `false` | +| `NEMOCLAW_INFERENCE_INPUTS` | `text` or `text,image` | `text` | +| `NEMOCLAW_AGENT_TIMEOUT` | Positive integer (seconds) | `600` | +| `NEMOCLAW_AGENT_HEARTBEAT_EVERY` | Go-style duration (`30m`, `1h`, `0m` to disable) | `unset` (OpenClaw default) | + +Invalid values are ignored, and the default bakes into the image. +For Local Ollama, onboarding loads the selected model first and uses Ollama's reported runtime context length when `NEMOCLAW_CONTEXT_WINDOW` is unset. +Use `NEMOCLAW_INFERENCE_INPUTS=text,image` only for a model that accepts image input through the selected provider. + +```console +$ export NEMOCLAW_CONTEXT_WINDOW=65536 +$ export NEMOCLAW_MAX_TOKENS=8192 +$ export NEMOCLAW_REASONING=true +$ export NEMOCLAW_INFERENCE_INPUTS=text,image +$ export NEMOCLAW_AGENT_TIMEOUT=1800 +$ export NEMOCLAW_AGENT_HEARTBEAT_EVERY=0m +$ nemoclaw onboard +``` + +`NEMOCLAW_AGENT_TIMEOUT` controls the per-request inference timeout baked into +`agents.defaults.timeoutSeconds`. Increase it for slow local inference (for +example, CPU-only Ollama or vLLM on modest hardware). NemoClaw writes this +value into `openclaw.json` during onboarding. The default sandbox may keep that +file writable for agent state, but direct in-sandbox edits are not the supported +or durable way to change NemoClaw-managed defaults. Rebuild the sandbox via +`nemoclaw onboard` to apply a new value. + +`NEMOCLAW_AGENT_HEARTBEAT_EVERY` sets `agents.defaults.heartbeat.every`. +This controls OpenClaw's periodic main-session agent turn. +Each interval, the agent wakes up to review follow-ups and read `HEARTBEAT.md` if present in the workspace. +The OpenClaw default is 30 minutes (1 hour for Anthropic OAuth / Claude CLI reuse). +Tune the cadence with a duration string like `5m` or `2h`, or set `0m` to disable the periodic turns entirely. +Disabling also drops `HEARTBEAT.md` from normal-run bootstrap context per upstream behavior, so the model no longer sees heartbeat-only instructions. +NemoClaw writes this value into `openclaw.json` during onboarding. +The in-sandbox `openclaw config set` command is not the supported path for +NemoClaw-managed build-time defaults, and direct file edits are overwritten by a +rebuild. Rebuild the sandbox via `nemoclaw onboard --resume` to apply a new value. + +These variables are build-time settings. +If you change them on an existing sandbox, recreate the sandbox so the new values bake into the image: + +```console +$ nemoclaw onboard --resume --recreate-sandbox +``` + +## Verify the Active Model + +Use `nemoclaw inference get` to print the provider and model the gateway is currently routing to. +Run it before `nemoclaw inference set` to confirm the starting state, or after a switch to verify the new route. + +```console +$ nemoclaw inference get +Provider: nvidia-prod +Model: nvidia/nemotron-3-super-120b-a12b +``` + +Pass `--json` for machine-readable output. + +```console +$ nemoclaw inference get --json +{ + "provider": "nvidia-prod", + "model": "nvidia/nemotron-3-super-120b-a12b" +} +``` + +The command exits non-zero with `OpenShell inference route is not configured.` when the gateway has no registered inference route. +Run `nemoclaw onboard` to configure one. + +Run the status command when you also need sandbox, service, and messaging health: + +```console +$ nemoclaw status +``` + +The status output includes the active provider, model, and endpoint with the rest of the sandbox state. + +## Notes + +- The host keeps provider credentials. +- The sandbox continues to use `inference.local`. +- `nemoclaw inference set` patches the selected running OpenClaw or Hermes sandbox config and recomputes its config hash. +- Use `nemoclaw onboard --resume --recreate-sandbox` for build-time settings such as context window, max tokens, reasoning mode, heartbeat cadence, or image contents. +- Local Ollama and local vLLM routes use local provider tokens rather than `OPENAI_API_KEY`. Rebuilds of older local-inference sandboxes clear the stale OpenAI credential requirement automatically. + +## Related Topics + +- [Inference Options](inference-options.md) for the full list of providers available during onboarding. diff --git a/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md b/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md new file mode 100644 index 00000000000..1ec05ccf4b2 --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md @@ -0,0 +1,162 @@ +# Tool-Calling Reliability for Local Inference + +Local inference is useful for privacy, cost control, and offline development, but +tool-calling agents place stricter demands on the model server than simple chat. +The model server must return structured `tool_calls`, not a JSON-looking string +inside normal assistant text. + +Use this page when the TUI shows raw JSON such as: + +```json +{"arguments":{"query":"robotics"},"name":"memory_search"} +``` + +If that appears as text in the assistant reply, OpenClaw cannot dispatch the +tool because the inference response did not include a structured tool call. + +## Quick Choice Guide + +| Workload | Ollama is usually sufficient | Prefer vLLM with a parser | +|---|---|---| +| Plain chat | Yes | Optional | +| Embeddings-only or retrieval setup | Yes | Optional | +| One simple tool with short prompts | Often | Optional | +| Agent loops with several tools | Risky | Yes | +| Long system prompts or sender metadata | Risky | Yes | +| Multi-turn tool dispatch | Risky | Yes | + +Ollama can work well for lightweight local chat and some simple tool surfaces. +For OpenClaw-style agent loops with multiple tools, long instructions, or +multi-turn dispatch, use a server that exposes OpenAI-compatible +`/v1/chat/completions` with a tool-call parser. vLLM is the common local choice. + +## Symptom + +The common failure mode is: + +- The model emits text that looks like a tool call. +- The response does not include a structured `tool_calls` field. +- The gateway treats the response as normal text. +- No tool runs, and the user sees raw JSON in the TUI. + +This is different from a network or policy block. `nemoclaw status`, +`nemoclaw logs`, and `nemoclaw debug --quick` can all look healthy while +tool dispatch still fails inside the conversation. + +## Recommended Fix + +For persistent NemoClaw use, start vLLM with auto tool choice and the parser that +matches your model family, then rerun onboarding and select **Local vLLM +[experimental]** or **Other OpenAI-compatible endpoint**. + +For Hermes 3 style models, a known-good vLLM command shape is: + +```console +$ vllm serve /models/Hermes-3-Llama-3.1-8B \ + --served-model-name hermes-3-llama-3.1-8b \ + --enable-auto-tool-choice \ + --tool-call-parser hermes \ + --port 8000 +``` + +For a Docker Compose setup: + +```yaml +services: + vllm-nemoclaw: + image: vllm/vllm-openai:latest + container_name: vllm-nemoclaw + restart: unless-stopped + ports: + - "8002:8000" + volumes: + - /path/to/models:/models:ro + - /path/to/hf-cache:/root/.cache/huggingface + ipc: host + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + count: all + command: > + --model /models/Hermes-3-Llama-3.1-8B + --served-model-name hermes-3-llama-3.1-8b + --enable-auto-tool-choice + --tool-call-parser hermes + --gpu-memory-utilization 0.20 + --max-model-len 32768 + --api-key ${VLLM_API_KEY} +``` + +Then onboard against that endpoint: + +```console +$ NEMOCLAW_PROVIDER=custom \ + NEMOCLAW_ENDPOINT_URL=http://localhost:8002/v1 \ + NEMOCLAW_MODEL=hermes-3-llama-3.1-8b \ + COMPATIBLE_API_KEY=$VLLM_API_KEY \ + nemoclaw onboard --non-interactive +``` + +If the endpoint does not require authentication, set `COMPATIBLE_API_KEY` to any +non-empty placeholder, such as `dummy`. + +## Advanced Temporary Repointing + +NemoClaw-managed sandboxes normally block direct `openclaw config set` writes +inside the sandbox because those edits do not survive rebuilds. Prefer rerunning +`nemoclaw onboard` for a persistent provider change. + +If you are intentionally testing a mutable OpenClaw config, prepare a batch file +like this: + +```json +{ + "models": { + "providers": { + "vllm-local": { + "baseUrl": "http://host.openshell.internal:8002/v1", + "api": "openai", + "apiKey": "${VLLM_API_KEY}" + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "vllm-local/hermes-3-llama-3.1-8b" + } + } + } +} +``` + +Apply it only in environments where OpenClaw config writes are allowed: + +```console +$ openclaw config set --batch-file /sandbox/.openclaw/vllm-tool-calls.json +``` + +After testing, persist the working provider through `nemoclaw onboard` so the +sandbox image, OpenShell inference route, and host-managed credentials stay in +sync. + +## Verify the Fix + +After switching to vLLM, ask for an action that should use a tool. Good signs: + +- The TUI does not show JSON blobs as assistant text. +- The gateway log shows tool dispatch and a follow-up answer. +- `nemoclaw status` reports the local vLLM or compatible endpoint as the + active provider. + +If JSON still appears as text, confirm that vLLM was started with both +`--enable-auto-tool-choice` and the correct `--tool-call-parser` value for your +model. + +## Next Steps + +- [Use a Local Inference Server](../SKILL.md) +- [Inference Options](inference-options.md) +- [Switch Inference Models](switch-inference-providers.md) diff --git a/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md b/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md new file mode 100644 index 00000000000..3a7ea4ae339 --- /dev/null +++ b/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md @@ -0,0 +1,149 @@ +# Use a Local Inference Server: Details + +## Non-Interactive Setup + +```console +$ NEMOCLAW_PROVIDER=ollama \ + NEMOCLAW_MODEL=qwen2.5:14b \ + nemoclaw onboard --non-interactive --yes +``` + +If `NEMOCLAW_MODEL` is not set, NemoClaw selects a default model based on available memory. +If `NEMOCLAW_MODEL` names a known bootstrap model (for example `qwen3.6:35b`) that does not fit the host's currently available GPU memory, NemoClaw warns and falls back to the largest known model that does fit. +Unknown or custom tags (any value the bootstrap registry has not seen) are still passed through; the Ollama runner validates the choice itself. + +`--yes` (or `NEMOCLAW_YES=1`) authorises the Ollama model download without an interactive confirmation prompt. +Under `--non-interactive`, `--yes` (or `NEMOCLAW_YES=1`) is required to authorise the download — onboard exits otherwise, since it cannot prompt. +Run onboard without `--non-interactive` to get the interactive `[y/N]` prompt that shows the model size before downloading. + +| Variable | Purpose | +|---|---| +| `NEMOCLAW_PROVIDER` | Set to `ollama`. | +| `NEMOCLAW_MODEL` | Ollama model tag to use. Optional. | +| `NEMOCLAW_YES` | Set to `1` to auto-accept the model-download confirmation prompt. Optional. | + +### Selecting the API Path + +For the compatible-endpoint provider, `/v1/chat/completions` is the default. +NemoClaw tests streaming events during onboarding and uses chat completions +without probing the Responses API. + +To opt in to `/v1/responses`, set `NEMOCLAW_PREFERRED_API` before running onboard: + +```console +$ NEMOCLAW_PREFERRED_API=openai-responses nemoclaw onboard +``` + +The wizard then probes `/v1/responses` and only selects it when streaming +support is complete. +If the probe fails, the wizard falls back to `/v1/chat/completions` +automatically. +You can use this variable in both interactive and non-interactive mode. + +| Variable | Values | Default | +|---|---|---| +| `NEMOCLAW_PREFERRED_API` | `openai-completions`, `openai-responses` | `openai-completions` for compatible endpoints | + +If you already onboarded and the sandbox is failing at runtime, re-run +`nemoclaw onboard` to re-probe the endpoint and bake the correct API path +into the image. +Refer to [Switch Inference Models](switch-inference-providers.md) for details. + +## Anthropic-Compatible Server + +If your local server implements the Anthropic Messages API (`/v1/messages`), choose **Other Anthropic-compatible endpoint** during onboarding instead. + +```console +$ nemoclaw onboard +``` + +For non-interactive setup, use `NEMOCLAW_PROVIDER=anthropicCompatible` and set `COMPATIBLE_ANTHROPIC_API_KEY`. + +```console +$ NEMOCLAW_PROVIDER=anthropicCompatible \ + NEMOCLAW_ENDPOINT_URL=http://localhost:8080 \ + NEMOCLAW_MODEL=my-model \ + COMPATIBLE_ANTHROPIC_API_KEY=dummy \ + nemoclaw onboard --non-interactive +``` + +### Override the Managed-vLLM Model + +Managed vLLM serves the profile default unless you select a different registry entry. +Export `NEMOCLAW_VLLM_MODEL=` before invoking the installer to choose a different model from the registry. +NemoClaw uses the matching `vllm serve` flags, including the reasoning parser, tool-call parser, and `--max-model-len`. +Recognised slugs: + +| Slug | Hugging Face model | Notes | +|---|---|---| +| `qwen3.6-27b` | `Qwen/Qwen3.6-27B-FP8` | Default on DGX Spark and DGX Station profiles | +| `nemotron-3-nano-4b` | `nvidia/NVIDIA-Nemotron-3-Nano-4B-FP8` | Default on the generic Linux + NVIDIA GPU profile | +| `deepseek-r1-distill-70b` | `deepseek-ai/DeepSeek-R1-Distill-Llama-70B` | Gated. Requires Hugging Face license acceptance | + +The slug is case-insensitive; the full Hugging Face id is also accepted. +An unrecognised value fails fast with a list of valid slugs. + +Gated models require a Hugging Face token; export it before onboarding so NemoClaw can forward it into the managed vLLM container: + +```console +$ export HF_TOKEN= +$ NEMOCLAW_PROVIDER=install-vllm \ + NEMOCLAW_VLLM_MODEL=deepseek-r1-distill-70b \ + nemoclaw onboard --non-interactive +``` + +`HUGGING_FACE_HUB_TOKEN` is accepted as an alternative. +The token check runs on the host before any docker pull, so a missing or empty token aborts onboarding before bandwidth is spent on a 401. + +## Timeout Configuration + +Local inference requests use a default timeout of 180 seconds. +Large prompts on hardware such as DGX Spark can exceed shorter timeouts, so NemoClaw sets a higher default for Ollama, vLLM, NIM, and compatible-endpoint setup. + +To override the timeout, set the `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` environment variable before onboarding: + +```console +$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 +$ nemoclaw onboard +``` + +The value is in seconds. +This setting is baked into the sandbox at build time. +Changing it after onboarding requires re-running `nemoclaw onboard`. + +`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` only governs the inference-server validation probe. +The post-create readiness wait (image build, gateway upload, in-sandbox boot) has its own budget, `NEMOCLAW_SANDBOX_READY_TIMEOUT`, also defaulting to 180 seconds. +On hosts where the sandbox image takes minutes to build or upload — large quantised models, DGX Station first runs, or remote VMs over a slow link — raise both together: + +```console +$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 +$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 +$ nemoclaw onboard +``` + +If onboard ends with `Sandbox '' was created but did not become ready within 180s`, refer to Troubleshooting (use the `nemoclaw-user-reference` skill). + +## Verify the Configuration + +After onboarding completes, confirm the active provider and model. + +```console +$ nemoclaw status +``` + +The output shows the provider label (for example, "Local vLLM" or "Other OpenAI-compatible endpoint") and the active model. +For Local Ollama, status also checks the authenticated proxy when a proxy token is available. +If `Inference` is healthy but `Inference (auth proxy)` is not, rerun onboarding to repair the proxy path that sandbox requests use. + +## Switch Models at Runtime + +You can change the model without re-running onboard. +Refer to [Switch Inference Models](switch-inference-providers.md) for the full procedure. + +For compatible endpoints, the command is: + +```console +$ nemoclaw inference set --provider compatible-endpoint --model +``` + +If the provider itself needs to change (for example, switching from vLLM to a cloud API), pass the new provider to `nemoclaw inference set`. diff --git a/skills/nemoclaw-user-configure-security/SKILL.md b/skills/nemoclaw-user-configure-security/SKILL.md new file mode 100644 index 00000000000..5513d995232 --- /dev/null +++ b/skills/nemoclaw-user-configure-security/SKILL.md @@ -0,0 +1,12 @@ +--- +name: "nemoclaw-user-configure-security" +description: "Presents a risk framework for every configurable security control in NemoClaw. Use when evaluating security posture, reviewing sandbox security defaults, or assessing control trade-offs. Trigger keywords - nemoclaw security best practices, sandbox security controls risk framework, nemoclaw credential storage, openshell provider, api key security, openclaw security controls, nemoclaw security boundary, prompt injection, tool access control." +license: "Apache-2.0" +--- +# NemoClaw Security Best Practices: Controls, Risks, and Posture Profiles + +## References + +- **Load [references/best-practices.md](references/best-practices.md)** when evaluating security posture, reviewing sandbox security defaults, or assessing control trade-offs. Presents a risk framework for every configurable security control in NemoClaw. +- **Load [references/openclaw-controls.md](references/openclaw-controls.md)** when reviewing the security boundary between NemoClaw and OpenClaw or assessing what NemoClaw does not cover. Lists OpenClaw security controls that operate independently of NemoClaw, including prompt injection detection, tool access control, rate limiting, environment variable policy, audit framework, supply chain scanning, messaging access policy, context visibility, and safe regex. +- **Load [references/credential-storage.md](references/credential-storage.md)** when reviewing how credentials are handled, locating a stored credential, or assessing the storage threat model. Covers where NemoClaw stores provider credentials, why nothing is persisted to host disk, and how the OpenShell gateway acts as the single system of record. diff --git a/skills/nemoclaw-user-configure-security/evals/evals.json b/skills/nemoclaw-user-configure-security/evals/evals.json new file mode 100644 index 00000000000..06855e83a26 --- /dev/null +++ b/skills/nemoclaw-user-configure-security/evals/evals.json @@ -0,0 +1,128 @@ +[ + { + "id": "docs-security-best-practices-001", + "question": "I'm evaluating NemoClaw security best practices. Help me understand the risk posture of each configurable control so I can justify the setup to my team or security reviewers.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user understand the risk posture of each configurable control and gives enough concrete guidance, decision criteria, verification steps, or risk framing to justify the setup to my team or security reviewers.", + "expected_behavior": [ + "The output directly addresses the user's situation: evaluating NemoClaw security best practices.", + "The AI coding assistant loads the expected_skill and references/best-practices.md", + "The output helps the user understand the risk posture of each configurable control with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to justify the setup to my team or security reviewers.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." + ] + }, + { + "id": "docs-security-best-practices-002", + "question": "I'm balancing developer convenience with lockdown. Help me compare the trade-offs of changing security controls so I can choose a posture that fits the environment.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user compare the trade-offs of changing security controls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose a posture that fits the environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: balancing developer convenience with lockdown.", + "The AI coding assistant loads the expected_skill and references/best-practices.md", + "The output helps the user compare the trade-offs of changing security controls with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose a posture that fits the environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." + ] + }, + { + "id": "docs-security-best-practices-003", + "question": "I'm preparing for production-like use. Help me see which defaults are acceptable and which require changes so I can avoid shipping with accidental weak spots.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user see which defaults are acceptable and which require changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid shipping with accidental weak spots.", + "expected_behavior": [ + "The output directly addresses the user's situation: preparing for production-like use.", + "The AI coding assistant loads the expected_skill and references/best-practices.md", + "The output helps the user see which defaults are acceptable and which require changes with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid shipping with accidental weak spots.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." + ] + }, + { + "id": "docs-security-credential-storage-001", + "question": "I'm inspecting NemoClaw credential storage. Help me verify how secrets are stored and protected so I can decide whether the setup meets my secret-handling expectations.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user verify how secrets are stored and protected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether the setup meets my secret-handling expectations.", + "expected_behavior": [ + "The output directly addresses the user's situation: inspecting NemoClaw credential storage.", + "The AI coding assistant loads the expected_skill and references/credential-storage.md", + "The output helps the user verify how secrets are stored and protected with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether the setup meets my secret-handling expectations.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." + ] + }, + { + "id": "docs-security-credential-storage-002", + "question": "I'm tracing where credentials live. Help me distinguish host, gateway, and sandbox storage boundaries so I can avoid assuming secrets are available in the wrong place.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user distinguish host, gateway, and sandbox storage boundaries and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid assuming secrets are available in the wrong place.", + "expected_behavior": [ + "The output directly addresses the user's situation: tracing where credentials live.", + "The AI coding assistant loads the expected_skill and references/credential-storage.md", + "The output helps the user distinguish host, gateway, and sandbox storage boundaries with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid assuming secrets are available in the wrong place.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." + ] + }, + { + "id": "docs-security-credential-storage-003", + "question": "I'm rotating or inspecting credentials. Help me follow a workflow that does not print secrets in logs or docs so I can recover or update access safely.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user follow a workflow that does not print secrets in logs or docs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to recover or update access safely.", + "expected_behavior": [ + "The output directly addresses the user's situation: rotating or inspecting credentials.", + "The AI coding assistant loads the expected_skill and references/credential-storage.md", + "The output helps the user follow a workflow that does not print secrets in logs or docs with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to recover or update access safely.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." + ] + }, + { + "id": "docs-security-openclaw-controls-001", + "question": "I'm reading about controls outside NemoClaw's scope. Help me understand which security responsibilities remain with OpenClaw so I can avoid treating sandbox isolation as a complete application security model.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user understand which security responsibilities remain with OpenClaw and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid treating sandbox isolation as a complete application security model.", + "expected_behavior": [ + "The output directly addresses the user's situation: reading about controls outside NemoClaw's scope.", + "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", + "The output helps the user understand which security responsibilities remain with OpenClaw with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid treating sandbox isolation as a complete application security model.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." + ] + }, + { + "id": "docs-security-openclaw-controls-002", + "question": "I'm assessing application-layer agent risk. Help me identify the controls NemoClaw does not add so I can plan separate mitigations for authentication, prompt handling, and agent behavior.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user identify the controls NemoClaw does not add and gives enough concrete guidance, decision criteria, verification steps, or risk framing to plan separate mitigations for authentication, prompt handling, and agent behavior.", + "expected_behavior": [ + "The output directly addresses the user's situation: assessing application-layer agent risk.", + "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", + "The output helps the user identify the controls NemoClaw does not add with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to plan separate mitigations for authentication, prompt handling, and agent behavior.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." + ] + }, + { + "id": "docs-security-openclaw-controls-003", + "question": "I'm documenting the security boundary. Help me explain where NemoClaw protection ends so I can set accurate expectations for reviewers and operators.", + "expected_skill": "nemoclaw-user-configure-security", + "ground_truth": "A NemoClaw-specific answer that helps the user explain where NemoClaw protection ends and gives enough concrete guidance, decision criteria, verification steps, or risk framing to set accurate expectations for reviewers and operators.", + "expected_behavior": [ + "The output directly addresses the user's situation: documenting the security boundary.", + "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", + "The output helps the user explain where NemoClaw protection ends with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to set accurate expectations for reviewers and operators.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." + ] + } +] diff --git a/skills/nemoclaw-user-configure-security/references/best-practices.md b/skills/nemoclaw-user-configure-security/references/best-practices.md new file mode 100644 index 00000000000..44cb862b1e0 --- /dev/null +++ b/skills/nemoclaw-user-configure-security/references/best-practices.md @@ -0,0 +1,509 @@ +# NemoClaw Security Best Practices: Controls, Risks, and Posture Profiles + +NemoClaw ships with deny-by-default security controls across four layers: network, filesystem, process, and inference. +You can tune every control, but each change shifts the risk profile. +This page documents every configurable knob, its default, what it protects, the concrete risk of relaxing it, and a recommendation for common use cases. + +For background on how the layers fit together, refer to How It Works (use the `nemoclaw-user-overview` skill). + +## Protection Layers at a Glance + +NemoClaw enforces security at four layers. +NemoClaw locks some when it creates the sandbox and requires a restart to change them. +You can hot-reload others while the sandbox runs. + +The following diagram shows the default posture immediately after `nemoclaw onboard`, before you approve any endpoints or apply any presets. + +```mermaid +flowchart TB + subgraph HOST["Your Machine: default posture after nemoclaw onboard"] + direction TB + + YOU["👤 Operator"] + + subgraph NC["NemoClaw + OpenShell"] + direction TB + + subgraph SB["Sandbox: the agent's isolated world"] + direction LR + PROC["⚙️ Process Layer
Controls what the agent can execute"] + FS["📁 Filesystem Layer
Controls what the agent can read and write"] + AGENT["🤖 Agent"] + end + + subgraph GW["Gateway: the gatekeeper"] + direction LR + NET["🌐 Network Layer
Controls where the agent can connect"] + INF["🧠 Inference Layer
Controls which AI models the agent can use"] + end + end + end + + OUTSIDE["🌍 Outside World
Internet · AI Providers · APIs"] + + AGENT -- "all requests" --> GW + GW -- "approved only" --> OUTSIDE + YOU -. "approve / deny" .-> GW + + classDef agent fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold + classDef locked fill:#1a1a1a,stroke:#76b900,color:#fff,stroke-width:2px + classDef hot fill:#333,stroke:#76b900,color:#e6f2cc,stroke-width:2px + classDef external fill:#f5f5f5,stroke:#ccc,color:#1a1a1a,stroke-width:1px + classDef operator fill:#fff,stroke:#76b900,color:#1a1a1a,stroke-width:2px,font-weight:bold + + class AGENT agent + class PROC,FS locked + class NET,INF hot + class OUTSIDE external + class YOU operator + + style HOST fill:none,stroke:#76b900,stroke-width:2px,color:#1a1a1a + style NC fill:none,stroke:#76b900,stroke-width:1px,stroke-dasharray:5 5,color:#1a1a1a + style SB fill:#f5faed,stroke:#76b900,stroke-width:2px,color:#1a1a1a + style GW fill:#2a2a2a,stroke:#76b900,stroke-width:2px,color:#fff +``` + +| Layer | What it protects | Enforcement point | Changeable at runtime | +| --- | --- | --- | --- | +| Network | Unauthorized outbound connections and data exfiltration. | OpenShell gateway | Yes. Use `openshell policy set` or operator approval. | +| Filesystem | System binary tampering, credential theft, config manipulation. | Landlock LSM + container mounts | Landlock layout: no. Requires sandbox re-creation. Use host-side NemoClaw commands for durable config changes. | +| Process | Privilege escalation, fork bombs, syscall abuse. | Container runtime (Docker/K8s `securityContext`) | No. Requires sandbox re-creation. | +| Inference | Credential exposure, unauthorized model access, cost overruns. | OpenShell gateway | Yes. Use `nemoclaw inference set`. | + +## Network Controls + +NemoClaw controls which hosts, ports, and HTTP methods the sandbox can reach, and lets operators approve or deny requests in real time. + +### Deny-by-Default Egress + +The sandbox blocks all outbound connections unless you explicitly list the endpoint in the policy file `nemoclaw-blueprint/policies/openclaw-sandbox.yaml`. + +| Aspect | Detail | +|---|---| +| Default | All egress denied. Only endpoints in the baseline policy can receive traffic. | +| What you can change | Add endpoints to the policy file (static) or with `openshell policy set` (dynamic). | +| Risk if relaxed | Each allowed endpoint is a potential data exfiltration path. The agent can send workspace content, credentials, or conversation history to any reachable host. | +| Recommendation | Add only endpoints the agent needs for its task. Prefer operator approval for one-off requests over permanently widening the baseline. | + +### Binary-Scoped Endpoint Rules + +Each network policy entry restricts which executables can reach the endpoint using the `binaries` field. + +OpenShell identifies the calling binary by reading `/proc//exe` (the kernel-trusted executable path, not `argv[0]`), walking the process tree for ancestor binaries, and computing a SHA256 hash of each binary on first use. +If someone replaces a binary while the sandbox runs, the hash mismatch triggers an immediate deny. + +| Aspect | Detail | +|---|---| +| Default | Each endpoint restricts access to specific binaries. For example, the `github` preset restricts access so only `/usr/bin/git` can reach `github.com`. Binary paths support glob patterns (`*` matches one path component, `**` matches recursively). | +| What you can change | Add binaries to an endpoint entry, or omit the `binaries` field to allow any executable. | +| Risk if relaxed | Removing binary restrictions lets any process in the sandbox reach the endpoint. An agent could use `curl`, `wget`, or a Python script to exfiltrate data to an allowed host, bypassing the intended usage pattern. | +| Recommendation | Always scope endpoints to the binaries that need them. If the agent needs a host from a new binary, add that binary explicitly rather than removing the restriction. | + +### Path-Scoped HTTP Rules + +Endpoint rules restrict allowed HTTP methods and URL paths. + +| Aspect | Detail | +|---|---| +| Default | Some endpoints allow GET and POST on `/**` (for example, `clawhub.ai`). Others restrict methods and paths to specific API routes (for example, `integrate.api.nvidia.com` allows POST only to inference and embedding paths and GET to model listings). Read-only endpoints such as `docs.openclaw.ai`, the `npm_registry` baseline entry, and the `pypi` preset allow GET only (PyPI also allows HEAD). The `npm` preset is an intentional exception: npm/Yarn registry traffic uses L4 pass-through for Node 22 undici CONNECT compatibility. | +| What you can change | Add methods (PUT, DELETE, PATCH) or restrict paths to specific prefixes. | +| Risk if relaxed | Allowing all methods on an API endpoint gives the agent write and delete access. For example, allowing DELETE on `api.github.com` lets the agent delete repositories. | +| Recommendation | Use GET-only rules for endpoints that the agent only reads. Add write methods only for endpoints where the agent must create or modify resources. Restrict paths to specific API routes when possible. | + +### L4-Only vs L7 Inspection (`protocol` Field) + +All sandbox egress goes through OpenShell's CONNECT proxy. +The `protocol` field on an endpoint controls whether the proxy also inspects individual HTTP requests inside the tunnel. + +| Aspect | Detail | +|---|---| +| Default | Endpoints without a `protocol` field use L4-only enforcement: the proxy checks host, port, and binary identity, then relays the TCP stream without inspecting payloads. Setting `protocol: rest` enables L7 inspection: the proxy auto-detects and terminates TLS, then evaluates each HTTP request's method and path against the endpoint's `rules` or `access` preset. | +| What you can change | Add `protocol: rest` to an endpoint to enable per-request HTTP inspection. Use the `access` preset (`full`, `read-only`, `read-write`) or explicit `rules` to control allowed methods and paths. | +| Risk if relaxed | L4-only endpoints (no `protocol` field) allow the agent to send any data through the tunnel after the initial connection is permitted. The proxy cannot see or filter the HTTP method, path, or body. The `access: full` preset with `protocol: rest` enables inspection but allows all methods and paths, so it does not restrict what the agent can do at the HTTP level. | +| Recommendation | Use `protocol: rest` with specific `rules` for REST APIs where you want method and path control. Use `protocol: rest` with `access: read-only` for read-only endpoints. Omit `protocol` only for non-HTTP protocols (WebSocket, gRPC streaming), endpoints that do not need HTTP inspection, or documented compatibility exceptions that require a client-managed CONNECT tunnel. | + +### Operator Approval Flow + +When the agent reaches an unlisted endpoint, OpenShell blocks the request and prompts the operator in the TUI. + +| Aspect | Detail | +|---|---| +| Default | Enabled. The gateway blocks all unlisted endpoints and requires approval. | +| What you can change | The system merges approved endpoints into the sandbox's policy as a new durable revision. They persist across sandbox restarts within the same sandbox instance. However, when you destroy and recreate the sandbox (for example, by running `nemoclaw onboard`), the policy resets to the baseline defined in the blueprint. | +| Risk if relaxed | Approving an endpoint permanently widens the running sandbox's policy. If you approve a broad domain (such as a CDN that hosts arbitrary content), the agent can fetch anything from that domain until you destroy and recreate the sandbox. | +| Recommendation | Review each blocked request before approving. If you find yourself approving the same endpoint repeatedly, add it to the baseline policy with appropriate binary and path restrictions. To reset approved endpoints, destroy and recreate the sandbox. | + +### Policy Presets + +NemoClaw ships preset policy files in `nemoclaw-blueprint/policies/presets/` for common integrations. + +| Preset | What it enables | Key risk | +|---|---|---| +| `brave` | Brave Search API. | Agent can issue search queries. | +| `brew` | Homebrew (Linuxbrew) package manager. The sandbox base image includes the `brew` binary; this preset opens network egress to GitHub and the Homebrew formulae index so `brew install` can fetch bottles. | Allows installing arbitrary Homebrew packages, which may contain malicious code. | +| `discord` | Discord REST API, WebSocket gateway, CDN. | CDN endpoint (`cdn.discordapp.com`) allows GET to any path. WebSocket uses `access: full` (no inspection). | +| `github` | GitHub and GitHub REST API. | Gives agent read/write access to repositories and issues via `git`. | +| `huggingface` | Hugging Face Hub (download-only) and inference router. | Allows downloading arbitrary models and datasets. POST is restricted to the inference router only. | +| `jira` | Atlassian Jira API. | Gives agent read/write access to project issues and comments. | +| `local-inference` | Local Ollama and vLLM through the host gateway. | Allows sandbox access to host-side local inference ports covered by the preset. | +| `npm` | npm and Yarn registries via L4 pass-through. | Allows installing arbitrary npm packages, which may contain malicious code. OpenShell still gates by host, port, and binary, but does not inspect HTTP method, path, or body for this preset. | +| `outlook` | Microsoft 365, Outlook. | Gives agent access to email. | +| `pypi` | Python Package Index (GET and HEAD only). | Allows installing arbitrary Python packages, which may contain malicious code. Publishing is blocked. | +| `slack` | Slack API, Socket Mode, webhooks. | WebSocket uses `access: full`. Agent can post to any channel the bot token has access to. | +| `telegram` | Telegram Bot API. | Agent can send messages to any chat the bot token has access to. | + +**Recommendation:** Apply presets only when the agent's task requires the integration. Review the preset's YAML file before applying to understand the endpoints, methods, and binary restrictions it adds. + +## Filesystem Controls + +NemoClaw restricts which paths the agent can read and write, protecting system binaries, configuration files, and gateway credentials. + +### Read-Only System Paths + +The container mounts system directories read-only to prevent the agent from modifying binaries, libraries, or configuration files. + +| Aspect | Detail | +|---|---| +| Default | `/usr`, `/lib`, `/proc`, `/dev/urandom`, `/app`, `/etc`, `/var/log` are read-only. | +| What you can change | Add or remove paths in the `filesystem_policy.read_only` section of the policy file. | +| Risk if relaxed | Making `/usr` or `/lib` writable lets the agent replace system binaries (such as `curl` or `node`) with trojanized versions. Making `/etc` writable lets the agent modify DNS resolution, TLS trust stores, or user accounts. | +| Recommendation | Never make system paths writable. If the agent needs a writable location for generated files, use a subdirectory of `/sandbox`. | + +### Agent Config Directory + +The `/sandbox/.openclaw` directory contains the OpenClaw gateway configuration (model routing, CORS settings, channel config). +The current entrypoint reads the gateway auth token from OpenClaw config when present, exports it as `OPENCLAW_GATEWAY_TOKEN`, and writes it to `/tmp/nemoclaw-proxy-env.sh` so interactive sandbox sessions can reach the gateway through system-wide shell hooks. +In root mode, the gateway process still runs as the separate `gateway` user, but the token is intentionally available to sandbox shells for local gateway access. + +Writable agent state such as plugins, skills, hooks, and workspace metadata lives directly under `/sandbox/.openclaw`. + +By default, this directory starts writable so the agent can manage its own config, install skills, and write to standard home-directory paths natively. +For sensitive workloads, use a reviewed host-side immutability workflow after initial setup so config and writable state entry points cannot be changed by the sandbox user. + +- **DAC permissions (default).** The sandbox user owns `/sandbox/.openclaw` with mode `2770` (setgid `sandbox:sandbox`) and `openclaw.json` with mode `660`, so the agent and its group can read and write config directly. A reviewed host-side immutability workflow should compare the intended ownership and mode with the live sandbox filesystem before treating the config tree as locked. +- **Config integrity hash.** The image includes a SHA256 hash of `openclaw.json`. In the default mutable state, `.config-hash` is sandbox-owned and is not a tamper-proof trust anchor, so startup does not fail closed on that hash. When the hash is root-owned and read-only, startup enforces it and refuses to start if the hash does not match. +- **Gateway token environment.** The gateway exports `OPENCLAW_GATEWAY_TOKEN` and writes it to `/tmp/nemoclaw-proxy-env.sh` for interactive sandbox sessions. Keep this in mind when deciding whether a workload should run with mutable config or an immutable config posture. + +| Aspect | Detail | +|---|---| +| Default | The sandbox keeps `/sandbox/.openclaw` writable (`2770 sandbox:sandbox`), sets `openclaw.json` to `660 sandbox:sandbox`, lets the agent manage state directly, and has the gateway place `OPENCLAW_GATEWAY_TOKEN` in `/tmp/nemoclaw-proxy-env.sh` for interactive shells. | +| What you can change | Apply a reviewed host-side immutability workflow to lock config and state directories with DAC permissions and the immutable flag where available. | +| Risk of default | A writable `.openclaw` directory lets the agent modify its own gateway config: disabling CORS or redirecting inference to an attacker-controlled endpoint. | +| Recommendation | For always-on assistants handling sensitive workloads, lock config after initial setup. For development workflows, the writable default is appropriate. | + +### Writable Paths + +The agent has read-write access to `/sandbox`, `/tmp`, and `/dev/null`. + +| Aspect | Detail | +|---|---| +| Default | `/sandbox` (agent workspace), `/tmp` (temporary files), `/dev/null`. | +| What you can change | Add additional writable paths in `filesystem_policy.read_write`. | +| Risk if relaxed | Each additional writable path expands the agent's ability to persist data and potentially modify system behavior. Adding `/var` lets the agent write to log directories. Adding `/home` gives access to other user directories. | +| Recommendation | Keep writable paths to `/sandbox` and `/tmp`. If the agent needs a persistent working directory, create a subdirectory under `/sandbox`. | + +### Landlock LSM Enforcement + +Landlock is a Linux Security Module that enforces filesystem access rules at the kernel level. + +| Aspect | Detail | +|---|---| +| Default | `compatibility: best_effort`. The entrypoint applies Landlock rules when the kernel supports them and silently skips them on older kernels. | +| What you can change | This is a NemoClaw default, not a user-facing knob. | +| Risk if relaxed | On kernels without Landlock support (pre-5.13), filesystem restrictions rely solely on container mount configuration, which is less granular. | +| Recommendation | Run on a kernel that supports Landlock (5.13+). Ubuntu 22.04 LTS and later include Landlock support. | + +## Process Controls + +NemoClaw limits the capabilities, user privileges, and resource quotas available to processes inside the sandbox. + +### Capability Drops + +The entrypoint drops dangerous Linux capabilities from the bounding set at startup using `capsh`. +This limits what capabilities any child process (gateway, sandbox, agent) can ever acquire. +When the entrypoint switches from root to the `sandbox` and `gateway` users, it uses `setpriv` when available to remove the remaining privilege-separation capabilities from the child process at the same time as the user change. + +The initial entrypoint drop removes `cap_sys_admin`, `cap_sys_ptrace`, `cap_net_raw`, `cap_dac_override`, `cap_sys_chroot`, `cap_fsetid`, `cap_setfcap`, `cap_mknod`, `cap_audit_write`, and `cap_net_bind_service`. +During `setpriv` step-down, the child process also loses `cap_setuid`, `cap_setgid`, `cap_fowner`, `cap_chown`, and `cap_kill`. + +This is best-effort: if `capsh` is not available or `CAP_SETPCAP` is not in the bounding set, the entrypoint logs a warning and continues with the default capability set. +If `setpriv` is unavailable, the entrypoint falls back to `gosu` and logs a warning that the remaining bounding-set capabilities were retained for the child process. +For additional protection, pass `--cap-drop=ALL` with `docker run` or Compose (see Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill)). + +| Aspect | Detail | +|---|---| +| Default | The entrypoint drops dangerous capabilities at startup using `capsh`, then uses `setpriv` during user step-down when possible. Best-effort. | +| What you can change | When launching with `docker run` directly, pass `--cap-drop=ALL --cap-add=NET_BIND_SERVICE` for stricter enforcement. In the standard NemoClaw flow (with `nemoclaw onboard`), the entrypoint handles capability dropping automatically. | +| Risk if relaxed | `CAP_SYS_ADMIN` and `CAP_SYS_PTRACE` expand kernel and process attack surface. `CAP_NET_RAW` allows raw socket access for network sniffing. `CAP_DAC_OVERRIDE` bypasses filesystem permission checks. If `capsh` or `setpriv` cannot run, the container retains more of the runtime-provided capability set. | +| Recommendation | Run on an image that includes `capsh` and `setpriv` (the NemoClaw image includes them). For defense-in-depth, also pass `--cap-drop=ALL` at the container runtime level. | + +### Gateway Process Isolation + +The OpenClaw gateway runs as a separate `gateway` user, not as the `sandbox` user that runs the agent. + +| Aspect | Detail | +|---|---| +| Default | The entrypoint starts the gateway process using `gosu gateway`, isolating it from the agent's `sandbox` user. | +| What you can change | This is not a user-facing knob. The entrypoint enforces it when running as root. In non-root mode (when OpenShell sets `no-new-privileges`), gateway process isolation does not work because `gosu` cannot change users. | +| Risk if relaxed | If the gateway and agent run as the same user, the agent can kill the gateway process and restart it with a tampered configuration (the "fake-HOME" attack). | +| Recommendation | No action needed. The entrypoint handles this automatically. Be aware that non-root mode disables this isolation. | + +### No New Privileges + +The `no-new-privileges` flag prevents processes from gaining additional privileges through setuid binaries or capability inheritance. + +| Aspect | Detail | +|---|---| +| Default | OpenShell sets `PR_SET_NO_NEW_PRIVS` using `prctl()` inside the sandbox process as part of the seccomp filter setup. The NemoClaw Compose example also shows the equivalent `security_opt: no-new-privileges:true` setting. | +| What you can change | OpenShell's seccomp path enforces this inside the sandbox. It is not a user-facing knob. | +| Risk if relaxed | Without this flag, a compromised process could execute a setuid binary to escalate to root inside the container, then attempt container escape techniques. | +| Recommendation | No action needed. OpenShell enforces this automatically when the sandbox network policy is active. This flag prevents `gosu` from switching users, so non-root mode disables gateway process isolation in the NemoClaw entrypoint. | + +### Process Limit + +A process limit caps the number of processes the sandbox user can spawn. +The entrypoint sets both soft and hard limits using `ulimit -u 512`. +This is best-effort: if the container runtime restricts `ulimit` modification, the entrypoint logs a security warning and continues without the limit. + +| Aspect | Detail | +|---|---| +| Default | 512 processes (`ulimit -u 512`), best-effort. | +| What you can change | Increase or decrease the limit with `--ulimit nproc=N:N` in `docker run` or the `ulimits` section in Compose. The runtime-level ulimit takes precedence over the entrypoint's setting. | +| Risk if relaxed | Removing or raising the limit makes the sandbox vulnerable to fork-bomb attacks, where a runaway process spawns children until the host runs out of resources. If the entrypoint cannot set the limit (logs `[SECURITY] Could not set soft/hard nproc limit`), the container runs without process limits. | +| Recommendation | Keep the default at 512. If the agent runs workloads that spawn many child processes (such as parallel test runners), increase to 1024 and monitor host resource usage. If the entrypoint logs a warning about ulimit restrictions, set the limit through the container runtime instead. | + +### Non-Root User + +The sandbox runs agent processes as a dedicated `sandbox` user and group. +The entrypoint starts as root for privilege separation, then drops to the `sandbox` user for all agent commands. + +| Aspect | Detail | +|---|---| +| Default | `run_as_user: sandbox`, `run_as_group: sandbox`. A separate `gateway` user runs the gateway process. | +| What you can change | Change the `process` section in the policy file to run as a different user. | +| Risk if relaxed | Running as `root` inside the container gives the agent access to modify any file in the container filesystem and increases the impact of container escape vulnerabilities. | +| Recommendation | Never run as root. Keep the `sandbox` user. | + +### PATH Hardening + +The entrypoint locks the `PATH` environment variable to system directories, preventing the agent from injecting malicious binaries into command resolution. + +| Aspect | Detail | +|---|---| +| Default | The entrypoint sets `PATH` to `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` at startup. | +| What you can change | This is not a user-facing knob. The entrypoint enforces it. | +| Risk if relaxed | Without PATH hardening, the agent could create an executable named `curl` or `git` in a writable directory earlier in the PATH, intercepting commands run by the entrypoint or other processes. | +| Recommendation | No action needed. The entrypoint handles this automatically. | + +### Build Toolchain Removal + +The Dockerfile removes compilers and network probes from the runtime image. + +| Aspect | Detail | +|---|---| +| Default | The Dockerfile purges `gcc`, `gcc-12`, `g++`, `g++-12`, `cpp`, `cpp-12`, `make`, `netcat-openbsd`, `netcat-traditional`, and `ncat` from the sandbox image. | +| What you can change | Modify the Dockerfile to keep these tools, or install them at runtime if package manager access is allowed. | +| Risk if relaxed | A compiler lets the agent build arbitrary native code, including kernel exploits or custom network tools. `netcat` enables arbitrary TCP connections that bypass HTTP-level policy enforcement. | +| Recommendation | Keep build tools removed. If the agent needs to compile code, run the build in a separate, purpose-built container and copy artifacts into the sandbox. | + +### Image Digest Pinning + +The blueprint references the sandbox image by an immutable `@sha256:` digest instead of a mutable tag such as `:latest`. +A registry compromise or accidental force-push cannot silently swap the sandbox image. + +| Aspect | Detail | +|---|---| +| Default | `nemoclaw-blueprint/blueprint.yaml` pins the sandbox image by digest. A CI regression test blocks any mutable-tag reference from merging. | +| What you can change | Contributors bumping the sandbox image must update the digest in `blueprint.yaml`. Release tooling should rewrite the digest automatically. | +| Risk if relaxed | Reverting to a mutable tag (`:latest`) allows a registry-side change to replace the sandbox image without any blueprint update, which is a supply-chain risk. | +| Recommendation | Always reference the sandbox image by digest. If you build a custom image with `nemoclaw onboard --from`, the digest constraint does not apply to your local build. | + +### Auth Profile Permissions + +The entrypoint and migration flows enforce `chmod 600` on all `auth-profiles.json` files under `~/.openclaw`. +This prevents other users on the host from reading stored credentials. + +| Aspect | Detail | +|---|---| +| Default | `600` permissions applied recursively at startup and after migration restores. | +| What you can change | This is not a user-facing knob. The entrypoint enforces it. | +| Risk if relaxed | Looser permissions let other users or processes on the host read provider API keys and tokens stored in auth profiles. | +| Recommendation | No action needed. If you see a `permission denied` error when reading auth profiles, verify that you are running as the same user who created them. | + +## Gateway Authentication Controls + +The OpenClaw gateway authenticates devices that connect to the Control UI dashboard. +NemoClaw hardens these defaults at image build time. + +### Device Authentication + +Device authentication requires each connecting device to go through a pairing flow before it can interact with the gateway. + +| Aspect | Detail | +|---|---| +| Default | Enabled. The gateway requires device pairing for all connections. | +| What you can change | Set `NEMOCLAW_DISABLE_DEVICE_AUTH=1` as a Docker build argument to disable device authentication. This is a build-time setting baked into `openclaw.json` and verified by hash at startup. | +| Risk if relaxed | Disabling device auth allows any device on the network to connect to the gateway without proving identity. This is dangerous when combined with LAN-bind changes or cloudflared tunnels in remote deployments, resulting in an unauthenticated, publicly reachable dashboard. | +| Recommendation | Keep device auth enabled (the default). Only disable it for headless or development environments where no untrusted devices can reach the gateway. | + +### Gateway Bind Address + +NemoClaw binds the OpenShell gateway to loopback by default. + +| Aspect | Detail | +|---|---| +| Default | `NEMOCLAW_GATEWAY_BIND_ADDRESS=127.0.0.1`. | +| What you can change | Set `NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0` before onboarding to listen on all IPv4 interfaces. | +| Risk if relaxed | Other hosts on the network may be able to reach the OpenShell gateway. | +| Recommendation | Keep the loopback default unless the gateway must be reachable from another host. | + +### Insecure Auth Derivation + +The `allowInsecureAuth` setting controls whether the gateway permits non-HTTPS authentication. + +| Aspect | Detail | +|---|---| +| Default | Derived from the `CHAT_UI_URL` scheme at build time. When the URL uses `http://` (local development), insecure auth is allowed. When it uses `https://` (remote or production), insecure auth is blocked. | +| What you can change | This is derived automatically from `CHAT_UI_URL`. Set `CHAT_UI_URL` to an `https://` URL to enforce secure auth. | +| Risk if relaxed | Allowing insecure auth over HTTPS defeats the purpose of TLS, because authentication tokens transit in cleartext. | +| Recommendation | Use `https://` for any deployment accessible beyond `localhost`. The default local URL (`http://127.0.0.1:18789`) correctly allows insecure auth for local development. | + +### Auto-Pair Client Allowlist + +The auto-pair watcher automatically approves device pairing requests from recognized clients, so you do not need to manually approve the Control UI. + +| Aspect | Detail | +|---|---| +| Default | The watcher approves devices with `clientId` set to `openclaw-control-ui` or `clientMode` set to `webchat`. All other clients are rejected and logged. | +| What you can change | This is not a user-facing knob. The allowlist is defined in the entrypoint script. | +| Risk if relaxed | Approving all device types without validation lets rogue or unexpected clients pair with the gateway unchallenged. | +| Recommendation | No action needed. The entrypoint handles this automatically. If you see `[auto-pair] rejected unknown client=...` in the logs, investigate the source of the unexpected connection. | + +### CLI Secret Redaction + +The CLI automatically redacts secret patterns (API keys, bearer tokens, provider credentials) from command output and error messages before logging them. + +| Aspect | Detail | +|---|---| +| Default | Enabled. The runner redacts secrets from stdout, stderr, and thrown error messages. | +| What you can change | This is not a user-facing knob. The CLI enforces it on all command output paths. | +| Risk if relaxed | Without redaction, secrets could appear in terminal scrollback, log files, or debug output shared in bug reports. | +| Recommendation | No action needed. If you share `nemoclaw debug` output, verify that no secrets appear in the collected diagnostics. | + +### Memory Secret Scanner + +The NemoClaw plugin blocks the agent from writing likely secrets (API keys, tokens, private keys) into persistent memory files. +The scanner intercepts Write, Edit, and similar tool calls targeting memory and workspace paths before they reach disk. + +| Aspect | Detail | +|---|---| +| Default | Enabled. The plugin registers a `before_tool_call` hook that scans for 14 high-confidence secret patterns. | +| What it covers | Examples include `.openclaw/memory/`, `.openclaw/workspace/`, `.openclaw/agents/`, `.openclaw/skills/`, `.openclaw/hooks/`, `.openclaw/credentials/`, `.openclaw/openclaw.json`, `.nemoclaw/`, and `MEMORY.md`; the exact coverage is defined by `MEMORY_PATH_SEGMENTS` and enforced through `isMemoryPath()`. | +| What you can change | This is not a user-facing knob. The plugin enforces it automatically. | +| Risk if relaxed | Without scanning, the agent could persist API keys or tokens in memory files that survive across sessions and backups. | +| Recommendation | No action needed. If a write is blocked, the agent receives an actionable error listing the detected patterns. | + +## Inference Controls + +OpenShell routes all inference traffic through the gateway to isolate provider credentials from the sandbox. + +### Routed Inference through `inference.local` + +The OpenShell gateway intercepts all inference requests from the agent and routes them to the configured provider. +The agent never receives the provider API key. + +| Aspect | Detail | +|---|---| +| Default | The agent talks to `inference.local`. The host owns the credential and upstream endpoint. | +| What you can change | You cannot configure this architecture. The system always enforces it. | +| Risk if bypassed | If the agent could reach an inference endpoint directly (by adding it to the network policy), it would need an API key. Since the sandbox does not contain credentials, this acts as defense-in-depth. However, adding an inference provider's host to the network policy without going through OpenShell routing could let the agent use a stolen or hardcoded key. | +| Recommendation | Do not add inference provider hosts (such as `api.openai.com` or `api.anthropic.com`) to the network policy. Use OpenShell inference routing instead. | + +### Provider Trust Tiers + +Different inference providers have different trust and cost profiles. + +| Provider | Trust level | Cost risk | Data handling | +|---|---|---|---| +| NVIDIA Endpoints | High. Hosted on `build.nvidia.com`. | Pay-per-token with an API key. Unattended agents can accumulate cost. | NVIDIA infrastructure processes requests. | +| OpenAI | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to OpenAI data policies. | +| Anthropic | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to Anthropic data policies. | +| Google Gemini | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to Google data policies. | +| Local Ollama | Self-hosted. No data leaves the machine. | No per-token cost. GPU/CPU resource cost. | Data stays local. | +| Custom compatible endpoint | Varies. Depends on the proxy or gateway. | Varies. | Depends on the endpoint operator. | + +**Recommendation:** For sensitive workloads, use local Ollama to keep data on-premise. For general use, NVIDIA Endpoints provide a good balance of capability and trust. Review the data policies of any cloud provider you use. + +### Experimental Providers + +The `NEMOCLAW_EXPERIMENTAL=1` environment variable gates local NVIDIA NIM and generic Linux managed vLLM install/start. DGX Spark and DGX Station managed vLLM entries are offered by default, and an already-running vLLM server on `localhost:8000` is offered in the menu without a flag, because selecting either is an explicit user action. + +| Aspect | Detail | +|---|---| +| Default | Local NVIDIA NIM and generic Linux managed vLLM install/start are hidden. DGX Spark and DGX Station managed vLLM entries, plus already-running vLLM on `localhost:8000`, are offered when detected. | +| What you can change | Set `NEMOCLAW_EXPERIMENTAL=1` before running `nemoclaw onboard` to surface Local NIM and generic Linux managed vLLM. To request only the managed vLLM path non-interactively, set `NEMOCLAW_PROVIDER=install-vllm`. | +| Risk if selected | NemoClaw has not fully validated these providers. NIM requires a NIM-capable GPU. The managed vLLM path pulls a container image and starts it on a supported NVIDIA GPU host. Misconfiguration can cause failed inference or unexpected behavior. | +| Recommendation | Use experimental providers only for evaluation. Do not rely on them for always-on assistants. | + +## Posture Profiles + +The following profiles describe how to configure NemoClaw for different use cases. +These are not separate policy files. +They provide guidance on which controls to keep tight or relax. + +### Locked-Down (Default) + +Use for always-on assistants with minimal external access. + +- Keep all defaults. Do not add presets. +- Use operator approval for any endpoint the agent requests. +- Use NVIDIA Endpoints or local Ollama for inference. +- Monitor the TUI for unexpected network requests. + +### Development + +Use when the agent needs package registries, Docker Hub, or broader GitHub access during development tasks. + +- Apply the `pypi` and `npm` presets for package installation. +- Keep binary restrictions on all presets. +- Review the agent's network activity periodically with `openshell term`. +- Use operator approval for any endpoint not covered by a preset. + +### Integration Testing + +Use when the agent talks to internal APIs or third-party services during testing. + +- Add custom endpoint entries with tight path and method restrictions. +- Use `protocol: rest` for all HTTP APIs to maintain inspection. +- Use operator approval for unknown endpoints during test runs. +- Review and clean up the baseline policy after testing. Remove endpoints that are no longer needed. + +## Common Mistakes + +The following patterns weaken security without providing meaningful benefit. + +| Mistake | Why it matters | What to do instead | +|---------|---------------|-------------------| +| Omitting `protocol: rest` on REST API endpoints without a compatibility reason | Endpoints without a `protocol` field use L4-only enforcement. The proxy allows the TCP stream through after checking host, port, and binary, but cannot see or filter individual HTTP requests. | Add `protocol: rest` with explicit `rules` to enable per-request method and path control on REST APIs. Use L4 pass-through only for documented cases such as npm/Yarn on Node 22, where the client requires a CONNECT tunnel that L7 inspection would break. | +| Adding endpoints to the baseline policy for one-off requests | Adding an endpoint to the baseline policy makes it permanently reachable across all sandbox instances. | Use operator approval. Approved endpoints persist within the sandbox instance but reset when you destroy and recreate the sandbox. | +| Relying solely on the entrypoint for capability drops | The entrypoint drops dangerous capabilities using `capsh`, but this is best-effort. If `capsh` is unavailable or `CAP_SETPCAP` is not in the bounding set, the container runs with the default capability set. | Pass `--cap-drop=ALL` at the container runtime level as defense-in-depth. | +| Leaving `/sandbox/.openclaw` writable on sensitive workloads | This directory contains the OpenClaw gateway configuration. A writable `.openclaw` lets the agent disable CORS, redirect inference routing, or weaken gateway protections. | Lock config for always-on assistants handling sensitive data. | +| Adding inference provider hosts to the network policy | Direct network access to an inference host bypasses credential isolation and usage tracking. | Use OpenShell inference routing instead of adding hosts like `api.openai.com` or `api.anthropic.com` to the network policy. | +| Disabling device auth for remote deployments | Without device auth, any device on the network can connect to the gateway without pairing. Combined with a cloudflared tunnel, this makes the dashboard publicly accessible and unauthenticated. | Keep `NEMOCLAW_DISABLE_DEVICE_AUTH` at its default (`0`). Only set it to `1` for local headless or development environments. | + +## Known Limitations + +| Limitation | Impact | Mitigation | +|-----------|--------|------------| +| `openclaw agent --local` bypasses gateway | Secret scanning, network policy, and inference auth are not enforced when the agent runs in local mode. | A runtime warning is emitted when `--local` is detected. Avoid `--local` for production workflows. A future OpenClaw-level hook will close this gap. | +| Direct filesystem writes bypass secret scanner | The scanner intercepts OpenClaw tool calls, not raw filesystem writes (e.g., `echo secret > file`). | Landlock restricts writable paths. The scanner is application-layer defense-in-depth, not a filesystem-level control. | +| Base64/hex-encoded secrets are not detected | Content-based regex scanning cannot detect encoded or obfuscated secrets. | Use environment variables or credential stores instead of writing secrets to files. | + +## Related Topics + +- Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference. +- Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for static and dynamic policy changes. +- Approve or Deny Network Requests (use the `nemoclaw-user-manage-policy` skill) for the operator approval flow. +- Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill) for container-level security measures. +- Inference Options (use the `nemoclaw-user-configure-inference` skill) for provider configuration details. +- How It Works (use the `nemoclaw-user-overview` skill) for the protection layer architecture. diff --git a/skills/nemoclaw-user-configure-security/references/credential-storage.md b/skills/nemoclaw-user-configure-security/references/credential-storage.md new file mode 100644 index 00000000000..10476831fa0 --- /dev/null +++ b/skills/nemoclaw-user-configure-security/references/credential-storage.md @@ -0,0 +1,108 @@ +# Credential Storage + +NemoClaw does not persist provider credentials to host disk. +The OpenShell gateway is the only system of record for stored credentials. + +When you provide a provider credential — interactively during `nemoclaw onboard` or via an environment variable — NemoClaw holds the value in memory only long enough to register it with the OpenShell gateway through `openshell provider create` or `openshell provider update`. +The gateway stores the credential and the OpenShell L7 proxy substitutes it into outbound requests at egress, so sandboxed agents see placeholders instead of the raw secret. + +The sandbox-side OpenClaw gateway token is generated at container startup and is not rotated through provider credential commands. + +## Where Credentials Live + +Provider credentials live in the OpenShell gateway store. +List what is registered with: + +```console +$ openshell provider list +``` + +Or, equivalently, through NemoClaw: + +```console +$ nemoclaw credentials list +``` + +Both surface the provider names that the gateway holds credentials for. The values themselves cannot be read back from the CLI; this is a deliberate property of OpenShell. + +NemoClaw still keeps non-secret operational state under `~/.nemoclaw/` (such as the sandbox registry). +That directory is created with mode `0700` and contains no credential material. + +## Environment Variables Take Precedence + +When a NemoClaw command needs a credential value during a single run (for example to forward it to an `openshell provider` registration), it reads from `process.env` first. +This means you can: + +- Prefix any command with the credential to override the gateway-stored value: `NVIDIA_API_KEY=nvapi-... nemoclaw onboard` +- Use short-lived or rotated credentials in CI by exporting them once per pipeline run +- Avoid registering credentials in the gateway entirely if your environment supplies them + +## Deploy Reads from Environment Only + +`nemoclaw deploy` (which provisions a remote Brev box) cannot read secrets back from the gateway, so it requires every credential to be present in the host environment at invocation time. +A typical deploy invocation looks like: + +```console +$ NVIDIA_API_KEY=nvapi-... \ + HF_TOKEN=hf_... \ + TELEGRAM_BOT_TOKEN=... \ + nemoclaw deploy my-instance +``` + +For remote vLLM or Hugging Face workflows that need gated model access, `nemoclaw deploy` also forwards `HF_TOKEN` and `HUGGING_FACE_HUB_TOKEN` to the VM when either variable is present. +If a required credential is missing the deploy aborts before any remote work begins. + +## GitHub Tokens + +NemoClaw never persists `GITHUB_TOKEN` itself. +When a private repo requires authentication NemoClaw runs `gh auth token`, which returns whatever the GitHub CLI has stored — without caring about the storage backend. + +The GitHub CLI prefers an OS keychain when one is reachable: macOS Keychain on macOS, Windows Credential Manager on Windows, and Linux Secret Service (libsecret + a running D-Bus session) on Linux. +On hosts where no keychain is reachable (CI runners, headless launches, WSL without a session bus, macOS contexts where Keychain access is blocked, etc.) `gh auth login` falls back to a `gh`-managed file under `~/.config/gh/` with mode `0600`. +NemoClaw treats both backends identically: `gh auth token` returns the value, and NemoClaw stages it in `process.env` for the current run only. + +If `gh` is not installed or not logged in, NemoClaw prompts for a personal access token for that single run; the prompted value is held in process memory and is not written to host disk. +Run `gh auth login` if you want a persistent backing store (whichever one applies on your host) so future runs do not prompt. + +## Migration From Earlier Releases + +Earlier NemoClaw releases stored credentials as plaintext JSON in `~/.nemoclaw/credentials.json` with mode `0600`. +On first `nemoclaw onboard` after upgrading, NemoClaw automatically: + +1. Reads the legacy file. +2. Stages allowlisted credential values into `process.env` for the rest of the run. +3. Re-registers each value with the OpenShell gateway through the normal onboarding path. +4. Securely overwrites and deletes `~/.nemoclaw/credentials.json` only after every staged value has been verified as migrated to the gateway. + +You will see a one-line stderr notice the first time this happens. +Credential lookup paths such as rebuild also stage allowlisted legacy values so interrupted upgrades can keep working, but those staging-only paths do not delete the plaintext file because they cannot prove every legacy value was registered with the gateway. +If `~/.nemoclaw/credentials.json` remains after a rebuild or other credential lookup, run `nemoclaw onboard` to complete the verified gateway migration and cleanup. + +## Rotate or Remove a Stored Credential + +The simplest way to replace a stored value is to rerun onboarding with the new value in your environment: + +```console +$ NVIDIA_API_KEY=nvapi-new-value nemoclaw onboard +``` + +To remove a credential from the gateway entirely: + +```console +$ nemoclaw credentials reset +``` + +`` is the OpenShell provider name (run `nemoclaw credentials list` first if you are not sure). +On the next run NemoClaw prompts again unless the credential is supplied through the environment. + +## Security Recommendations + +1. Prefer short-lived or low-scope provider credentials where the upstream service supports them. +2. Rotate keys after suspected exposure, machine transfer, or account changes. +3. Prefer environment variables for ephemeral automation rather than registering long-lived secrets in the gateway. +4. Do not copy any host-side NemoClaw state into container images, Git repositories, bug reports, or support bundles. Even though credentials no longer live on disk, the surrounding configuration may reveal which providers you have registered. +5. Keep your home directory private and owned by your user account. + +## Related Files + +For the broader sandbox security model and operational trade-offs, see [Security Best Practices](best-practices.md) and Architecture (use the `nemoclaw-user-reference` skill). diff --git a/skills/nemoclaw-user-configure-security/references/openclaw-controls.md b/skills/nemoclaw-user-configure-security/references/openclaw-controls.md new file mode 100644 index 00000000000..de140242d85 --- /dev/null +++ b/skills/nemoclaw-user-configure-security/references/openclaw-controls.md @@ -0,0 +1,119 @@ +# OpenClaw Security Controls Beyond NemoClaw's Scope + +NemoClaw provides infrastructure-layer security through sandbox isolation, network policy, filesystem restrictions, SSRF validation, and credential handling. +It delegates all application-layer security to OpenClaw. +This page documents areas where NemoClaw adds no independent protection beyond what OpenClaw already provides. + +The details below reflect the OpenClaw documentation at the time of writing. +Consult the [OpenClaw Security docs](https://docs.openclaw.ai/gateway/security/index) for the current state. + +## Prompt Injection Detection and Prevention + +OpenClaw detects and neutralizes prompt injection attempts before they reach the agent. + +| Control | Detail | +|---|---| +| Regex detection | Pattern matching detects common injection vectors such as "ignore all previous instructions" and `` tag spoofing | +| Boundary wrapping | Untrusted input is wrapped in randomized XML boundary markers | +| Unicode folding | Homoglyph folding normalizes bracket variants to prevent visual spoofing | +| Invisible character stripping | Zero-width invisible characters are removed from input | +| Boundary sanitization | Fake boundary markers are sanitized to prevent marker injection | +| Auto-wrapping | Web fetch and search results are automatically wrapped as untrusted external content | + +## Tool Access Control and Policy Pipeline + +OpenClaw enforces a multi-layer tool policy pipeline that gates every tool call. + +| Control | Detail | +|---|---| +| Deny list | High-risk tools (`exec`, `spawn`, `shell`, `fs_write`, `fs_delete`, and others) are blocked from Gateway HTTP by default | +| Policy pipeline | Multi-layer pipeline evaluates tool calls through profile, provider, agent, sandbox, and per-provider policies | +| Fail-closed semantics | Tool call hooks block execution on any error | +| Loop detection | Optional guard detects and blocks repeated identical tool call patterns (disabled by default, opt-in via `tools.loopDetection.enabled`) | +| Plugin approval | Approval workflow defaults to deny on timeout | + +## Authentication Rate Limiting and Flood Protection + +OpenClaw rate-limits authentication attempts and guards against connection floods. + +| Control | Detail | +|---|---| +| Auth rate limiter | Sliding-window rate limiter tracks failed authentication attempts per IP and per scope | +| Control plane limiter | Per-device write rate limiting for control plane operations | +| WebSocket flood guard | Closes connections after repeated unauthorized attempts | +| Pre-auth budget | Limits connections before authentication completes | + +## Environment Variable Security Policy + +OpenClaw blocks environment variables that could enable code injection, privilege escalation, or credential theft. + +| Category | Detail | +|---|---| +| Always-blocked keys | Keys such as `NODE_OPTIONS`, `LD_PRELOAD`, shell injection vectors, crypto mining variables, and `GIT_*` hijacking paths | +| Override-blocked keys | Additional keys blocked unless explicitly overridden | +| Blocked prefixes | Prefixes such as `GIT_CONFIG_`, `NPM_CONFIG_`, `CARGO_REGISTRIES_`, `TF_VAR_` | +| Universal blocked prefixes | `DYLD_`, `LD_`, `BASH_FUNC_` | + +## Security Audit Framework + +OpenClaw runs automated security checks (50+ distinct check types) that cover configuration, credential handling, and sandbox posture. +Run `openclaw security audit` to see all findings for your deployment. + +These checks include: + +- Synced-folder leak detection. +- Plaintext secrets in configuration files. +- Hooks hardening verification. +- Gateway no-auth detection. +- Sandbox misconfiguration scanning. +- Weak-model susceptibility assessment. +- Multi-user exposure matrix. +- Node command policy validation. +- Dangerous config flag scanning (`allowInsecureAuth`, `dangerouslyDisableDeviceAuth`, and similar flags). + +## Skill and Extension Supply Chain Scanning + +OpenClaw scans skills and extensions with a built-in static analysis scanner before installation. +Critical findings block installation by default. + +The scanner checks for patterns including: + +- Direct process execution calls. +- Dynamic code execution (`eval`, `new Function`, and similar constructs). +- Cryptocurrency mining patterns. +- Unexpected network activity. +- Potential data exfiltration (file read combined with network calls). +- Obfuscated code. +- Environment variable harvesting combined with network calls. + +## DM and Group Messaging Access Policy + +OpenClaw controls who can interact with the agent through direct messages and group channels. + +| Control | Detail | +|---|---| +| DM policy modes | 4 modes: open, disabled, pairing, allowlist | +| Group policies | Per-group access rules | +| Per-sender authorization | Individual sender gating | +| Command authorization | Command-level access control | +| Multi-user detection | Heuristic that detects multi-user scenarios | + +## Context Visibility and Output Controls + +OpenClaw restricts what supplemental context the agent can see and how it can modify outputs. + +| Control | Detail | +|---|---| +| Mode-based restrictions | Limits visibility of history, threads, quotes, and forwarded messages based on the active mode | +| Sender-based restrictions | Limits visibility based on who sent the message | +| Plugin output hooks | Plugin hooks intercept and modify tool results before they reach the user | + +## Safe Regex (ReDoS Prevention) + +OpenClaw includes safe regex compilation to prevent Regular Expression Denial of Service (ReDoS) attacks. +The implementation detects unsafe nested quantifiers, bounds input length, and caches results. + +## Next Steps + +- [Security Best Practices](best-practices.md) for NemoClaw's own security controls and risk framework. +- [Credential Storage](credential-storage.md) for how NemoClaw stores and protects provider credentials. diff --git a/skills/nemoclaw-user-deploy-remote/SKILL.md b/skills/nemoclaw-user-deploy-remote/SKILL.md new file mode 100644 index 00000000000..ead2d776c17 --- /dev/null +++ b/skills/nemoclaw-user-deploy-remote/SKILL.md @@ -0,0 +1,173 @@ +--- +name: "nemoclaw-user-deploy-remote" +description: "Explains how to run NemoClaw on a remote GPU instance, including the deprecated Brev compatibility path and the preferred installer plus onboard flow. Use when deploying NemoClaw to a remote VM, onboarding a Brev instance, or migrating away from the legacy `nemoclaw deploy` wrapper. Trigger keywords - deploy nemoclaw remote gpu, nemoclaw brev cloud deployment, nemoclaw plugins, openclaw plugins, install openclaw plugin, nemoclaw onboard from dockerfile, nemoclaw brev web ui, nemoclaw getting started, brev quickstart, nvidia nemotron agent, nemoclaw sandbox hardening, container security, docker capabilities, process limits." +license: "Apache-2.0" +--- +# Deploy NemoClaw to a Remote GPU Instance + +## Gotchas + +- The `nemoclaw deploy` command is deprecated. +- On Brev, set `CHAT_UI_URL` in the launchable environment configuration so it is available when the installer builds the sandbox image. + +## Prerequisites + +- The [Brev CLI](https://brev.nvidia.com) installed and authenticated. +- A provider credential for the inference backend you want to use during onboarding. +- `HF_TOKEN` or `HUGGING_FACE_HUB_TOKEN` exported when your remote vLLM or Hugging Face workflow needs access to gated models. +- NemoClaw installed locally if you plan to use the deprecated `nemoclaw deploy` wrapper. Otherwise, install NemoClaw directly on the remote host after provisioning it. + +Run NemoClaw on a remote GPU instance through [Brev](https://brev.nvidia.com). +The preferred path is to provision the VM, run the standard NemoClaw installer on that host, and then run `nemoclaw onboard`. + +## Quick Start + +If your Brev instance is already up and has already been onboarded with a sandbox, start with the standard sandbox chat flow: + +```console +$ nemoclaw my-assistant connect +$ openclaw tui +``` + +This gets you into the sandbox shell first and opens the OpenClaw chat UI right away. +If the VM is fresh, run the standard installer on that host and then run `nemoclaw onboard` before trying `nemoclaw my-assistant connect`. + +If you are connecting from your local machine and still need to provision the remote VM, you can still use `nemoclaw deploy ` as the legacy compatibility path described below. + +## Deploy the Instance + +**Warning:** + +The `nemoclaw deploy` command is deprecated. +Prefer provisioning the remote host separately, then running the standard NemoClaw installer and `nemoclaw onboard` on that host. + +Create a Brev instance and run the legacy compatibility flow: + +```console +$ nemoclaw deploy +``` + +Replace `` with a name for your remote instance, for example `my-gpu-box`. +The sandbox created on the remote VM uses `NEMOCLAW_SANDBOX_NAME`, or `my-assistant` when the variable is unset. +Sandbox names must be lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. +The deploy wrapper validates the sandbox name before it provisions the Brev instance, opens SSH, or starts the remote installer. + +The legacy compatibility flow performs the following steps on the VM: + +1. Installs Docker and the NVIDIA Container Toolkit if a GPU is present. +2. Installs the OpenShell CLI. +3. Runs `nemoclaw onboard` (the setup wizard) to create the gateway, register providers, and launch the sandbox. +4. Starts optional host auxiliary services (for example the cloudflared tunnel) when `cloudflared` is available. Channel messaging is configured during onboarding and runs through OpenShell-managed processes, not through `nemoclaw tunnel start`. + +By default, the compatibility wrapper asks Brev to provision on `gcp`. Override this with `NEMOCLAW_BREV_PROVIDER` if you need a different Brev cloud provider. +If you export `HF_TOKEN` or `HUGGING_FACE_HUB_TOKEN`, the wrapper forwards those values to the VM so remote setup can pull gated Hugging Face model repositories. + +## Connect to the Remote Sandbox + +After deployment finishes, the deploy command opens an interactive shell inside the remote sandbox. +To reconnect after closing the session, run the command again: + +```console +$ nemoclaw deploy +``` + +## Monitor the Remote Sandbox + +SSH to the instance and run the OpenShell TUI to monitor activity and approve network requests: + +```console +$ ssh 'cd ~/nemoclaw && set -a && . .env && set +a && openshell term' +``` + +## Verify Inference + +Run a test agent prompt inside the remote sandbox: + +```console +$ openclaw agent --agent main -m "Hello from the remote sandbox" --session-id test +``` + +## Remote Dashboard Access + +The NemoClaw dashboard validates the browser origin against an allowlist baked +into the sandbox image at build time. By default the allowlist only contains +`http://127.0.0.1:18789`. When accessing the dashboard from a remote browser +(for example through a Brev public URL or an SSH port-forward), set +`CHAT_UI_URL` to the origin the browser will use **before** running setup: + +```console +$ export CHAT_UI_URL="https://openclaw0-.brevlab.com" +$ nemoclaw deploy +``` + +For SSH port-forwarding, the origin is typically `http://127.0.0.1:18789` (the +default), so no extra configuration is needed. + +**Warning:** + +On Brev, set `CHAT_UI_URL` in the launchable environment configuration so it is +available when the installer builds the sandbox image. If `CHAT_UI_URL` is not +set on a headless host, the compatibility wrapper prints a warning. + +`NEMOCLAW_DISABLE_DEVICE_AUTH` is also evaluated at image build time. +When `CHAT_UI_URL` points at a non-loopback origin, NemoClaw disables OpenClaw device pairing in the generated sandbox configuration because browser-only remote users cannot complete terminal-based pairing. +Any device that can reach the configured dashboard origin can connect without pairing, so avoid exposing that origin on internet-reachable or shared-network deployments. + +## First-Run Readiness Budget + +On a remote GPU host, the first `nemoclaw onboard` typically does the slowest work of the lifecycle: the sandbox image is built locally and uploaded into the OpenShell gateway, which can stream hundreds of MiB over the VM's link before the readiness wait even starts. +The post-create readiness wait defaults to 180 seconds (`NEMOCLAW_SANDBOX_READY_TIMEOUT`), which is sized for warm-cache, workstation-class onboarding and can be exceeded on: + +- DGX Station first runs with large quantised models (70B+ parameter footprints, NVFP4 weights). +- Cloud VMs where the local image-build cache is cold and the upload runs over the public network. +- Hosts onboarding the Brave Web Search preset on the first run (the egress policy stack adds boot work). + +Raise the budget before re-running onboard: + +```console +$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 +$ nemoclaw onboard +``` + +If onboard ends with `Sandbox '' was created but did not become ready within 180s`, onboard deletes the partially-created sandbox first, so the next attempt with the raised budget starts from a clean state. +For the inference-probe budget that runs earlier in onboarding, see `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` (use the `nemoclaw-user-configure-inference` skill). + +## Proxy Configuration + +NemoClaw routes sandbox traffic through a gateway proxy that defaults to `10.200.0.1:3128`. +If your network requires a different proxy, set `NEMOCLAW_PROXY_HOST` and `NEMOCLAW_PROXY_PORT` before onboarding: + +```console +$ export NEMOCLAW_PROXY_HOST=proxy.example.com +$ export NEMOCLAW_PROXY_PORT=8080 +$ nemoclaw onboard +``` + +These values are baked into the sandbox image at build time. +They are also forwarded into the runtime container during sandbox creation, so `/tmp/nemoclaw-proxy-env.sh` uses the same host and port that the image build used. +Only alphanumeric characters, dots, hyphens, and colons are accepted for the host. +The port must be numeric (0-65535). +Changing the proxy after onboarding requires re-running `nemoclaw onboard`. + +## GPU Configuration + +The deploy script uses the `NEMOCLAW_GPU` environment variable to select the GPU type. +The default value is `a2-highgpu-1g:nvidia-tesla-a100:1`. +Set this variable before running `nemoclaw deploy` to use a different GPU configuration: + +```console +$ export NEMOCLAW_GPU="a2-highgpu-1g:nvidia-tesla-a100:2" +$ nemoclaw deploy +``` + +## References + +- **Load [references/install-openclaw-plugins.md](references/install-openclaw-plugins.md)** when users ask how to install, build, or configure OpenClaw plugins under NemoClaw. Explains the difference between OpenClaw plugins and agent skills, and shows the current Dockerfile-based workflow for baking a plugin into a NemoClaw sandbox. +- **Load [references/brev-web-ui.md](references/brev-web-ui.md)** when a user wants to try NemoClaw without installing the CLI, or asks how to get started on Brev. Guides users through deploying NemoClaw with the Brev web UI. +- **Load [references/sandbox-hardening.md](references/sandbox-hardening.md)** when reviewing sandbox image security controls, auditing capability drops, or looking up the runtime resource limits. Includes the sandbox container image hardening reference, covering Docker capabilities and process limits. + +## Related Skills + +- `nemoclaw-user-manage-sandboxes` — Set Up Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) to connect Telegram, Discord, or Slack through OpenShell-managed channel messaging +- `nemoclaw-user-monitor-sandbox` — Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for sandbox monitoring tools +- `nemoclaw-user-reference` — Commands (use the `nemoclaw-user-reference` skill) for the full `deploy` command reference diff --git a/skills/nemoclaw-user-deploy-remote/evals/evals.json b/skills/nemoclaw-user-deploy-remote/evals/evals.json new file mode 100644 index 00000000000..3d76a9ca827 --- /dev/null +++ b/skills/nemoclaw-user-deploy-remote/evals/evals.json @@ -0,0 +1,170 @@ +[ + { + "id": "docs-deployment-deploy-to-remote-gpu-001", + "question": "I'm deploying NemoClaw to a remote GPU instance. Help me move the sandboxed assistant off my local machine so I can support persistent or GPU-backed operation.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user move the sandboxed assistant off my local machine and gives enough concrete guidance, decision criteria, verification steps, or risk framing to support persistent or GPU-backed operation.", + "expected_behavior": [ + "The output directly addresses the user's situation: deploying NemoClaw to a remote GPU instance.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user move the sandboxed assistant off my local machine with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to support persistent or GPU-backed operation.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-deployment-deploy-to-remote-gpu-002", + "question": "I'm using the legacy Brev compatibility flow. Help me understand what the flow still does and where it is deprecated so I can avoid depending on an outdated path blindly.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the flow still does and where it is deprecated and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid depending on an outdated path blindly.", + "expected_behavior": [ + "The output directly addresses the user's situation: using the legacy Brev compatibility flow.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand what the flow still does and where it is deprecated with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid depending on an outdated path blindly.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-deployment-deploy-to-remote-gpu-003", + "question": "I'm after remote deployment succeeds. Help me find the connection, operation, and recovery details so I can operate the sandbox after initial setup.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user find the connection, operation, and recovery details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to operate the sandbox after initial setup.", + "expected_behavior": [ + "The output directly addresses the user's situation: after remote deployment succeeds.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user find the connection, operation, and recovery details with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to operate the sandbox after initial setup.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-deployment-brev-web-ui-001", + "question": "I'm launching NemoClaw from the Brev web UI. Help me avoid local CLI setup and local GPU requirements so I can start a hosted sandbox quickly.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user avoid local CLI setup and local GPU requirements and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start a hosted sandbox quickly.", + "expected_behavior": [ + "The output directly addresses the user's situation: launching NemoClaw from the Brev web UI.", + "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", + "The output helps the user avoid local CLI setup and local GPU requirements with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start a hosted sandbox quickly.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." + ] + }, + { + "id": "docs-deployment-brev-web-ui-002", + "question": "I'm reviewing hosted launch choices. Help me understand each web UI option before creating the instance so I can choose settings that match my expected sandbox workflow.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user understand each web UI option before creating the instance and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose settings that match my expected sandbox workflow.", + "expected_behavior": [ + "The output directly addresses the user's situation: reviewing hosted launch choices.", + "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", + "The output helps the user understand each web UI option before creating the instance with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose settings that match my expected sandbox workflow.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." + ] + }, + { + "id": "docs-deployment-brev-web-ui-003", + "question": "I'm the hosted sandbox is created. Help me confirm where to connect and how to start using it so I can move from provisioning to actual agent work.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user confirm where to connect and how to start using it and gives enough concrete guidance, decision criteria, verification steps, or risk framing to move from provisioning to actual agent work.", + "expected_behavior": [ + "The output directly addresses the user's situation: the hosted sandbox is created.", + "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", + "The output helps the user confirm where to connect and how to start using it with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to move from provisioning to actual agent work.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." + ] + }, + { + "id": "docs-deployment-install-openclaw-plugins-001", + "question": "I'm installing an OpenClaw plugin in a NemoClaw-managed sandbox. Help me add a new agent capability inside the sandbox so I can extend the assistant without weakening the host boundary.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user add a new agent capability inside the sandbox and gives enough concrete guidance, decision criteria, verification steps, or risk framing to extend the assistant without weakening the host boundary.", + "expected_behavior": [ + "The output directly addresses the user's situation: installing an OpenClaw plugin in a NemoClaw-managed sandbox.", + "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", + "The output helps the user add a new agent capability inside the sandbox with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to extend the assistant without weakening the host boundary.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." + ] + }, + { + "id": "docs-deployment-install-openclaw-plugins-002", + "question": "I'm deciding where to install a plugin. Help me distinguish host environment changes from sandbox environment changes so I can modify the right filesystem and runtime.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user distinguish host environment changes from sandbox environment changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to modify the right filesystem and runtime.", + "expected_behavior": [ + "The output directly addresses the user's situation: deciding where to install a plugin.", + "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", + "The output helps the user distinguish host environment changes from sandbox environment changes with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to modify the right filesystem and runtime.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." + ] + }, + { + "id": "docs-deployment-install-openclaw-plugins-003", + "question": "I'm verifying a plugin installation. Help me confirm the agent can discover and use the plugin so I can trust that the capability works inside NemoClaw's security model.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user confirm the agent can discover and use the plugin and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust that the capability works inside NemoClaw's security model.", + "expected_behavior": [ + "The output directly addresses the user's situation: verifying a plugin installation.", + "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", + "The output helps the user confirm the agent can discover and use the plugin with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust that the capability works inside NemoClaw's security model.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." + ] + }, + { + "id": "docs-deployment-sandbox-hardening-001", + "question": "I'm reviewing sandbox image hardening. Help me understand which container risks NemoClaw reduces so I can decide whether unattended agents are acceptable in my environment.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user understand which container risks NemoClaw reduces and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether unattended agents are acceptable in my environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: reviewing sandbox image hardening.", + "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", + "The output helps the user understand which container risks NemoClaw reduces with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether unattended agents are acceptable in my environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." + ] + }, + { + "id": "docs-deployment-sandbox-hardening-002", + "question": "I'm mapping NemoClaw to an organizational security baseline. Help me identify capability drops, least privilege, and runtime protections so I can document how the sandbox meets or misses required controls.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user identify capability drops, least privilege, and runtime protections and gives enough concrete guidance, decision criteria, verification steps, or risk framing to document how the sandbox meets or misses required controls.", + "expected_behavior": [ + "The output directly addresses the user's situation: mapping NemoClaw to an organizational security baseline.", + "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", + "The output helps the user identify capability drops, least privilege, and runtime protections with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to document how the sandbox meets or misses required controls.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." + ] + }, + { + "id": "docs-deployment-sandbox-hardening-003", + "question": "I'm considering production use. Help me see the limitations and residual risks of the hardened image so I can avoid overstating what container hardening guarantees.", + "expected_skill": "nemoclaw-user-deploy-remote", + "ground_truth": "A NemoClaw-specific answer that helps the user see the limitations and residual risks of the hardened image and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid overstating what container hardening guarantees.", + "expected_behavior": [ + "The output directly addresses the user's situation: considering production use.", + "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", + "The output helps the user see the limitations and residual risks of the hardened image with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid overstating what container hardening guarantees.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." + ] + } +] diff --git a/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md b/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md new file mode 100644 index 00000000000..c66758a07a5 --- /dev/null +++ b/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md @@ -0,0 +1,153 @@ +# Launch NemoClaw with the Brev Web UI + +Use the Brev web UI to launch a hosted NemoClaw sandbox from your browser. +This flow provisions a remote VM, configures inference, starts OpenClaw inside an OpenShell sandbox, and opens the OpenClaw dashboard. + +**Note:** + +Use this guide when you want to try NemoClaw without installing the CLI or using a local GPU. +If you want to manage the remote host from a terminal, see [Deploy to a Remote GPU Instance](../SKILL.md). + +## What This Flow Creates + +The Brev web flow creates the following resources: + +- A Brev-managed Linux VM. +- Docker and the OpenShell runtime on that VM. +- A NemoClaw sandbox running OpenClaw. +- Inference routing for the provider you select during setup. +- A browser-accessible OpenClaw dashboard. + +## Prerequisites + +- An NVIDIA Brev account at [brev.nvidia.com](https://brev.nvidia.com). +- An NVIDIA API key from [build.nvidia.com](https://build.nvidia.com/settings/api-keys) if you use the default NVIDIA Cloud provider. + +You do not need to install local software for this flow. + +## Get Your NVIDIA API Key + +If you already have an NVIDIA API key skip this section. Otherwise, follow these steps to generate a new key: + +1. Go to [build.nvidia.com](https://build.nvidia.com). +2. Sign in or create an account. +3. Click your profile icon in the top right. +4. Select **API Keys**. +5. Click **Generate API Key**. +6. Copy the key. It starts with `nvapi-`. + +Keep this key ready for the next step. + +## Launch NemoClaw from Brev + +Use the [NemoClaw Brev launchable](https://brev.nvidia.com/launchable/deploy/now?launchableID=env-3Azt0aYgVNFEuz7opyx3gscmowS) to launch a NemoClaw sandbox from your browser. + +1. Open the [NemoClaw Brev launchable](https://brev.nvidia.com/launchable/deploy/now?launchableID=env-3Azt0aYgVNFEuz7opyx3gscmowS) and sign in if prompted. +2. Review the instance type, cloud provider, and estimated hourly cost on the NemoClaw setup page. +3. Click **Deploy NemoClaw**. + +The right-side deployment panel shows progress while Brev deploys the CPU instance and prepares VM mode. +Keep this page open until the deployment completes. +When the panel shows the **NemoClaw** button, click it to open the agent setup page. + +## Configure Your Agent + +The setup page walks you through three stages: **Configure**, **Setup**, and **Launch**. + +### Configure + +The Configure stage opens the **Connect to AI** screen. +Use the NVIDIA Cloud provider shown on this screen. + +1. Leave **NVIDIA Cloud** selected. +2. Paste your `nvapi-` API key. +3. Click **Create Agent**. + +**Note:** + +The **Show Other Providers** dropdown appears below the **NVIDIA Cloud** card and can be easy to miss. +Click it to expand the provider list. +The expanded list includes **OpenAI**, **Anthropic**, and **Google Gemini**. +For these providers, get the API key from the provider's own console before you create the agent. + +### Setup + +NemoClaw configures the remote host and sandbox automatically. +This stage usually takes about 5 minutes. + +During setup, NemoClaw installs the runtime, prepares the sandboxed agent environment, and configures inference routing for the provider you selected. + +### Launch + +When setup finishes, Brev shows the following confirmation: + +```text +AGENT CREATED SUCCESSFULLY +Your agent is running in a secure sandbox and ready to use. + +Agent: agent +Model: nemotron-3-super-120b +Provider: NVIDIA Cloud +``` + +Click **Chat With Agent** to open the OpenClaw dashboard. + +**Note:** + +The dashboard might initially show a **Pairing required** warning. +This means the gateway is still completing pairing in the background. +Wait for about a few minutes for pairing to finish automatically. Refresh the dashboard to see if the warning is resolved and the connection is established. +If pairing does not finish, go to the **Overview** page in the OpenClaw UI, find the **Gateway Access** panel, and click **Connect**. + +## Start a Chat + +Use the dashboard chat box to send your first message: + +```text +Hello! What can you do for me? What skills do you have available? +``` + +The agent reads its workspace files and introduces itself. +The starter workspace includes example skills such as: + +- **Weather** gets current weather and forecasts. +- **Healthcheck** runs security audit and hardening checks. +- **Skill-Creator** creates new custom skills. + +## Personalize Agent Memory + +The agent starts with an empty `USER.md` file. +Ask the agent to add details that help it personalize future responses. + +In the chat, type the following: + +```text +Please update my USER.md file with the following: +Name: [your name] +Timezone: [your timezone, such as "America/New_York"] +Notes: [what you are working on] +``` + +The agent writes this information to its workspace so it can use it across sessions on the same sandbox. + +## Stop Your Instance When Done + +Brev continues billing while the instance runs. +Stop the instance when you finish experimenting. + +1. Go back to [brev.nvidia.com](https://brev.nvidia.com). +2. Click **GPUs** in the nav bar. +3. Find your NemoClaw instance. +4. Click **Stop**. + +Check the Brev UI for the current hourly price before leaving the instance running. + +## Next Steps + +After your agent is running, explore these related tasks: + +- Set Up Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) to learn how to connect Telegram, Slack, or Discord. +- Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) to learn how to change the model provider after setup. +- Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) to learn how to inspect sandbox health and logs. +- [Deploy to a Remote GPU Instance](../SKILL.md) to learn how to deploy NemoClaw to a remote GPU instance using the CLI. +- Troubleshooting (use the `nemoclaw-user-reference` skill) to learn how to fix common setup and runtime issues. diff --git a/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md b/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md new file mode 100644 index 00000000000..c9e53cec300 --- /dev/null +++ b/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md @@ -0,0 +1,91 @@ +# Install OpenClaw Plugins + +OpenClaw plugins extend the OpenClaw runtime with hooks, services, tools, or +provider integrations. They are different from NemoClaw-managed agent skills: + +- **Plugins** are code packages loaded by OpenClaw. +- **Skills** are `SKILL.md` directories that teach an agent how to perform a task. +- **Policy presets** are network-egress rules that control what sandboxed code can reach. + +Today, the supported NemoClaw path for OpenClaw plugins is to bake the plugin +into a custom sandbox image and onboard from that Dockerfile. + +## Prepare a Build Directory + +Put the Dockerfile and everything it needs to `COPY` in one directory. +`nemoclaw onboard --from ` uses the Dockerfile's parent directory as +the Docker build context. + +```text +my-plugin-sandbox/ +├── Dockerfile +└── my-plugin/ + ├── package.json + └── src/ +``` + +## Example Dockerfile + +Use the custom image to copy the plugin into the OpenClaw extensions directory +and let OpenClaw refresh its config before NemoClaw starts the sandbox. + +```dockerfile +ARG SANDBOX_BASE=ghcr.io/nvidia/nemoclaw/sandbox-base:latest +FROM ${SANDBOX_BASE} + +COPY my-plugin/ /opt/my-plugin/ +WORKDIR /opt/my-plugin +RUN npm ci --no-audit --no-fund && npm run build + +RUN mkdir -p /sandbox/.openclaw/extensions \ + && cp -a /opt/my-plugin /sandbox/.openclaw/extensions/my-plugin \ + && openclaw doctor --fix + +WORKDIR /opt/nemoclaw +``` + +If the plugin needs configuration in `openclaw.json`, apply it after +`openclaw doctor --fix` so the base config exists first. + +## Create the Sandbox + +Point `nemoclaw onboard --from` at the Dockerfile in the build directory. + +```console +$ nemoclaw onboard --from ./my-plugin-sandbox/Dockerfile +``` + +If you need a second sandbox alongside an existing one, use a dedicated build +directory and rerun onboarding with the sandbox name and ports you intend to +use. + +## Network Access + +Plugins still run inside the sandbox policy boundary. If a plugin needs network +egress, add or update a policy preset for the required hostnames and binaries +before rebuilding the sandbox. + +For example, see Network Policies (use the `nemoclaw-user-reference` skill) for +policy concepts and Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) +for custom preset workflows. + +## Common Mistakes + +These are the most common places where plugin installation gets mixed up with +other NemoClaw extension paths. + +- Do not use `nemoclaw skill install` for OpenClaw plugins. That + command only installs `SKILL.md` agent skills. +- Do not put a Dockerfile in a broad directory such as `/tmp` unless you intend + to send that whole directory as the Docker build context. +- Keep plugin dependencies in the build stage or plugin directory; avoid copying + unrelated host files into the sandbox image. + +## Next Steps + +- Review [Sandbox Hardening](sandbox-hardening.md) before adding plugin code to a + shared or long-lived sandbox. +- Review Network Policies (use the `nemoclaw-user-reference` skill) to plan plugin + egress rules. +- Follow Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) + if the plugin needs a custom preset. diff --git a/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md b/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md new file mode 100644 index 00000000000..80a0607d67c --- /dev/null +++ b/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md @@ -0,0 +1,125 @@ +# Sandbox Image Hardening + +The NemoClaw sandbox image applies several security measures to reduce attack +surface and limit the blast radius of untrusted workloads. + +## Removed Unnecessary Tools + +Build toolchains (`gcc`, `g++`, `make`) and network probes (`netcat`) are +explicitly purged from the runtime image. These tools are not needed at runtime +and would unnecessarily widen the attack surface. + +The runtime image keeps a small set of operational utilities for normal sandbox +workflows, including `vi`, `jq`, and `dos2unix`. Use these for lightweight +inspection and file cleanup inside the sandbox, but make durable image or policy +changes in the NemoClaw source tree and rebuild the sandbox. + +If you need a compiler during build, use the existing multi-stage build +(the `builder` stage has full Node.js tooling) and copy only artifacts into the +runtime stage. + +## Process Limits + +The container ENTRYPOINT sets `ulimit -u 512` to cap the number of processes +a sandbox user can spawn. This mitigates fork-bomb attacks. The startup script +(`nemoclaw-start.sh`) applies the same limit. + +Adjust the value via the `--ulimit nproc=512:512` flag if launching with +`docker run` directly. + +## Dropping Linux Capabilities + +The NemoClaw entrypoint drops dangerous capabilities from the process bounding +set before it starts agent services. +It removes `CAP_SYS_ADMIN`, `CAP_SYS_PTRACE`, `CAP_NET_RAW`, +`CAP_DAC_OVERRIDE`, `CAP_SYS_CHROOT`, `CAP_FSETID`, `CAP_SETFCAP`, +`CAP_MKNOD`, `CAP_AUDIT_WRITE`, and `CAP_NET_BIND_SERVICE`. +When `setpriv` is available, the entrypoint also removes the remaining +privilege-separation capabilities during the switch from root to the +`sandbox` and `gateway` users. + +For defense-in-depth, also drop all Linux capabilities at the container runtime +when you launch the image directly: + +```console +$ docker run --rm \ + --cap-drop=ALL \ + --ulimit nproc=512:512 \ + nemoclaw-sandbox +``` + +### Docker Compose Example + +```yaml +services: + nemoclaw-sandbox: + image: nemoclaw-sandbox:latest + cap_drop: + - ALL + cap_add: + - NET_BIND_SERVICE + ulimits: + nproc: + soft: 512 + hard: 512 + security_opt: + - no-new-privileges:true + read_only: true + tmpfs: + - /tmp:size=64m +``` + +> **Note:** The `Dockerfile` itself cannot enforce `--cap-drop`. That is a +> runtime concern controlled by the container orchestrator. Always configure +> capability dropping in your `docker run` flags, Compose file, or Kubernetes +> `securityContext`. + +## Filesystem Layout + +The sandbox Landlock policy declares which paths are writable. +The agent's home directory (`/sandbox`) is writable by default: + +| Path | Access | Purpose | +|------|--------|---------| +| `/sandbox` | read-write | Home directory — agents can create files and use standard home paths | +| `/sandbox/.openclaw` | read-write | Agent config, state, workspace, plugins | +| `/sandbox/.nemoclaw` | read-write | Plugin state and config; blueprints within are DAC-protected (root-owned) | +| `/tmp` | read-write | Temporary files and logs | + +This writable default is intentional. +Seeing the sandbox user create files under `/sandbox` or `/sandbox/.openclaw` in a fresh sandbox does not mean Landlock failed. +Landlock still enforces the fixed read-only system paths below. + +System paths remain read-only to prevent agents from: + +- Replacing system binaries with trojanized versions +- Modifying DNS resolution or TLS trust stores +- Tampering with libraries or shell configuration outside `/sandbox` + +The image build pre-creates locked shell init files `.bashrc` and `.profile` without proxy entries. +Runtime proxy configuration is sourced from system-wide shell hooks that read `/tmp/nemoclaw-proxy-env.sh`. + +### Landlock Kernel Requirements + +Landlock LSM requires Linux kernel 5.13 or later with `CONFIG_SECURITY_LANDLOCK=y`. +The NemoClaw sandbox policy uses `compatibility: best_effort`, which means Landlock enforcement is silently skipped on kernels that do not support it. + +On such kernels, protection falls back to DAC (file ownership and permissions) only. +Files outside the writable paths would be inaccessible to the agent regardless of DAC permissions. + +Operators should verify Landlock availability: + +```console +$ ls /sys/kernel/security/landlock +``` + +For production deployments, kernel 5.13+ with Landlock enabled is strongly recommended. +The `test/e2e/e2e-cloud-experimental/checks/04-landlock-readonly.sh` script validates enforcement at runtime. + +## References + +- [#804](https://github.com/NVIDIA/NemoClaw/issues/804): Filesystem layout and Landlock policy +- [#807](https://github.com/NVIDIA/NemoClaw/issues/807): gcc in sandbox image +- [#808](https://github.com/NVIDIA/NemoClaw/issues/808): netcat in sandbox image +- [#809](https://github.com/NVIDIA/NemoClaw/issues/809): No process limit +- [#797](https://github.com/NVIDIA/NemoClaw/issues/797): Drop Linux capabilities diff --git a/skills/nemoclaw-user-get-started/evals/evals.json b/skills/nemoclaw-user-get-started/evals/evals.json index 946c2dfea5b..08319bc6889 100644 --- a/skills/nemoclaw-user-get-started/evals/evals.json +++ b/skills/nemoclaw-user-get-started/evals/evals.json @@ -3,72 +3,168 @@ "id": "docs-get-started-prerequisites-001", "question": "I'm checking prerequisites before installation. Help me verify my host has the required hardware, software, and platform support so I can avoid a failed first setup.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup." + "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup.", + "expected_behavior": [ + "The output directly addresses the user's situation: checking prerequisites before installation.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user verify my host has the required hardware, software, and platform support with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid a failed first setup.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] }, { "id": "docs-get-started-prerequisites-002", "question": "I'm using a machine with limited CPU, memory, disk, or Docker capacity. Help me understand the practical minimums and known bottlenecks so I can prepare the machine before onboarding starts.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts." + "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts.", + "expected_behavior": [ + "The output directly addresses the user's situation: using a machine with limited CPU, memory, disk, or Docker capacity.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user understand the practical minimums and known bottlenecks with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prepare the machine before onboarding starts.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] }, { "id": "docs-get-started-prerequisites-003", "question": "I'm choosing between local, Windows WSL, and remote GPU setup. Help me compare supported platform paths so I can start with the environment most likely to work.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work." + "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing between local, Windows WSL, and remote GPU setup.", + "The AI coding assistant loads the expected_skill and references/prerequisites.md", + "The output helps the user compare supported platform paths with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start with the environment most likely to work.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." + ] }, { "id": "docs-get-started-windows-preparation-001", "question": "I'm preparing a Windows machine for NemoClaw. Help me enable WSL 2, Ubuntu, and Docker Desktop correctly so I can enter the standard quickstart from a working Linux environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment." + "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: preparing a Windows machine for NemoClaw.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enter the standard quickstart from a working Linux environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] }, { "id": "docs-get-started-windows-preparation-002", "question": "I'm unsure whether Windows-specific setup is complete. Help me check the WSL and Docker integration steps that commonly block installs so I can fix host issues before running the NemoClaw installer.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer." + "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer.", + "expected_behavior": [ + "The output directly addresses the user's situation: unsure whether Windows-specific setup is complete.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user check the WSL and Docker integration steps that commonly block installs with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix host issues before running the NemoClaw installer.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] }, { "id": "docs-get-started-windows-preparation-003", "question": "I'm ready to leave the Windows preparation guide. Help me confirm the Ubuntu shell can run the required commands so I can follow the quickstart without mixing Windows and Linux instructions.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions." + "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions.", + "expected_behavior": [ + "The output directly addresses the user's situation: ready to leave the Windows preparation guide.", + "The AI coding assistant loads the expected_skill and references/windows-preparation.md", + "The output helps the user confirm the Ubuntu shell can run the required commands with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to follow the quickstart without mixing Windows and Linux instructions.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." + ] }, { "id": "docs-get-started-quickstart-001", "question": "I'm running the OpenClaw quickstart. Help me install NemoClaw and create my first sandboxed agent so I can send a prompt to a working OpenClaw assistant.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant." + "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant.", + "expected_behavior": [ + "The output directly addresses the user's situation: running the OpenClaw quickstart.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user install NemoClaw and create my first sandboxed agent with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to send a prompt to a working OpenClaw assistant.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] }, { "id": "docs-get-started-quickstart-002", "question": "I'm encountering installer prompts or host preflight checks. Help me understand what the installer is asking for and why so I can continue setup without granting unnecessary access.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access." + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access.", + "expected_behavior": [ + "The output directly addresses the user's situation: encountering installer prompts or host preflight checks.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand what the installer is asking for and why with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue setup without granting unnecessary access.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] }, { "id": "docs-get-started-quickstart-003", "question": "I'm finishing onboarding. Help me verify the sandbox, inference route, and OpenClaw agent are connected so I can know the setup succeeded end to end.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end." + "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end.", + "expected_behavior": [ + "The output directly addresses the user's situation: finishing onboarding.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user verify the sandbox, inference route, and OpenClaw agent are connected with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to know the setup succeeded end to end.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] }, { "id": "docs-get-started-quickstart-hermes-001", "question": "I'm choosing Hermes instead of OpenClaw. Help me launch a sandboxed Hermes API endpoint so I can serve the agent workflow my downstream clients expect.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect." + "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing Hermes instead of OpenClaw.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user launch a sandboxed Hermes API endpoint with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to serve the agent workflow my downstream clients expect.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] }, { "id": "docs-get-started-quickstart-hermes-002", "question": "I'm moving through onboarding for Hermes. Help me confirm NemoClaw selected Hermes-specific setup and configuration so I can avoid accidentally creating the default OpenClaw environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment." + "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: moving through onboarding for Hermes.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user confirm NemoClaw selected Hermes-specific setup and configuration with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidentally creating the default OpenClaw environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] }, { "id": "docs-get-started-quickstart-hermes-003", "question": "I'm checking the sandboxed Hermes endpoint. Help me run a small request that proves the endpoint is live so I can hand it to clients or tests with confidence.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence." + "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence.", + "expected_behavior": [ + "The output directly addresses the user's situation: checking the sandboxed Hermes endpoint.", + "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", + "The output helps the user run a small request that proves the endpoint is live with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to hand it to clients or tests with confidence.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." + ] } ] diff --git a/skills/nemoclaw-user-manage-policy/SKILL.md b/skills/nemoclaw-user-manage-policy/SKILL.md new file mode 100644 index 00000000000..e79c1c70c8b --- /dev/null +++ b/skills/nemoclaw-user-manage-policy/SKILL.md @@ -0,0 +1,292 @@ +--- +name: "nemoclaw-user-manage-policy" +description: "Adds, removes, or modifies allowed endpoints in the sandbox policy. Use when customizing network policy, changing egress rules, or configuring sandbox endpoint access. Trigger keywords - customize nemoclaw network policy, sandbox egress policy configuration, nemoclaw integration policy examples, post-install policy setup, openshell approval workflow, policy preset, nemoclaw approve network requests, sandbox egress approval tui." +license: "Apache-2.0" +--- +# Customize the Sandbox Network Policy + +## Gotchas + +- Custom preset hosts bypass NemoClaw's review process and can widen sandbox egress to arbitrary destinations. + +## Prerequisites + +- A running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository for static changes. +- The OpenShell CLI on your `PATH`. + +Add, remove, or modify the endpoints that the sandbox is allowed to reach. + +The sandbox policy is defined in a declarative YAML file in the NemoClaw repository and enforced at runtime by [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell). +NemoClaw supports both static policy changes that persist across restarts and dynamic updates applied to a running sandbox through the OpenShell CLI. + +**Note:** + +If the sandbox needs to reach an HTTP service running on the host, expose the service on a host IP that the OpenShell gateway can reach. +Apply a custom NemoClaw preset with `nemoclaw policy-add --from-file`. +Do not rely on `host.docker.internal` as a general host-service path because it bypasses the OpenShell policy path and may not be reachable in every sandbox runtime. +See Agent cannot reach a host-side HTTP service (use the `nemoclaw-user-reference` skill). + +## Static Changes + +Static changes modify the baseline policy file and take effect after the next sandbox creation. + +### Edit the Policy File + +Open `nemoclaw-blueprint/policies/openclaw-sandbox.yaml` and add or modify endpoint entries. + +If you want a built-in preset to be part of the baseline policy, merge its `network_policies` entries into this file and re-run `nemoclaw onboard`. + +If you only need to apply a preset to a running sandbox, use `nemoclaw policy-add` under [Dynamic Changes](#dynamic-changes). +That updates the live policy and does not edit `openclaw-sandbox.yaml`. + +Use a manual YAML edit when you need to allow custom hosts that are not covered by a preset, such as an internal API or a weather service. + +Each entry in the `network` section defines an endpoint group with the following fields: + +`endpoints` +: Host and port pairs that the sandbox can reach. + +`binaries` +: Executables allowed to use this endpoint. + +`rules` +: HTTP methods and paths that are permitted. + +### Re-Run Onboard + +Apply the updated policy by re-running the onboard wizard: + +```console +$ nemoclaw onboard +``` + +The wizard picks up the modified policy file and applies it to the sandbox. + +### Verify the Policy + +Check that the sandbox is running with the updated policy: + +```console +$ nemoclaw status +``` + +### Add Blueprint Policy Additions + +If you maintain a custom blueprint, you can add extra policy entries under `components.policy.additions` in `nemoclaw-blueprint/blueprint.yaml`. +NemoClaw validates those entries with the same policy schema used by preset files, fetches the live policy during sandbox creation, merges the additions into `network_policies`, and applies the merged policy through OpenShell. +The applied additions are recorded in the run metadata so you can audit which blueprint-level policy entries were active for that sandbox run. + +## Dynamic Changes + +Dynamic changes apply a policy update to a running sandbox without restarting it. + +> [!WARNING] +> `openshell policy set` **replaces** the sandbox's live policy with the contents of the file you provide; it does not merge. +> A running sandbox's live policy is the baseline from `openclaw-sandbox.yaml` plus every preset that was layered on during onboarding. +> Applying a file that contains only the baseline (or only a single preset) silently drops every other preset that was in effect. + +### Option 1: Drop a Preset File and Use `policy-add` (Recommended) + +This is the non-destructive path and the only flow NemoClaw supports out of the box for merging new entries into a running policy. + +1. Create a preset-format YAML file under `nemoclaw-blueprint/policies/presets/`, for example `nemoclaw-blueprint/policies/presets/influxdb.yaml`: + + ```yaml + preset: + name: influxdb + description: "InfluxDB time-series database" + network_policies: + influxdb: + name: influxdb + endpoints: + - host: influxdb.internal.example.com + port: 8086 + protocol: rest + enforcement: enforce + rules: + - allow: { method: GET, path: "/**" } + - allow: { method: POST, path: "/api/v2/write" } + binaries: + - { path: /usr/bin/curl } + ``` + +2. Apply it to the running sandbox: + + ```console + $ nemoclaw my-assistant policy-add + ``` + + NemoClaw reads the live policy via `openshell policy get --full`, structurally merges your preset's `network_policies` into it, and writes the merged result back. + Existing presets and the baseline remain in place. + The preset file under `presets/` also persists across sandbox recreations. + +### Option 2: Snapshot, Edit, and Set via OpenShell + +Use this path only when you cannot add a file under the NemoClaw source tree. +You must start from the **live** policy, not from `openclaw-sandbox.yaml`, so the presets layered on at onboarding are preserved in the file you apply. + +```console +$ openshell policy get --full my-assistant > live-policy.yaml +``` + +Edit `live-policy.yaml` to add your entries under `network_policies:`, keeping the existing `version` field intact, then apply: + +```console +$ openshell policy set --policy live-policy.yaml my-assistant +``` + +### Scope of Dynamic Changes + +Dynamic changes apply only to the current session. +When the sandbox stops, the running policy resets to the baseline composed from `openclaw-sandbox.yaml` plus the presets recorded for the sandbox. +To make a custom policy survive a sandbox recreation, ship the preset file in the repository (Option 1 above — the file under `presets/` persists) or edit `openclaw-sandbox.yaml` and re-run `nemoclaw onboard`. + +### Approve Requests Interactively + +For one-off access, you can approve blocked requests in the OpenShell TUI instead of editing the baseline policy: + +```console +$ openshell term +``` + +This is useful when you want to test a destination before deciding whether it belongs in a permanent preset or custom policy file. + +## Policy Presets + +NemoClaw ships preset policy files for common integrations in `nemoclaw-blueprint/policies/presets/`. +Apply a preset as-is or use it as a starting template for a custom policy. +For guided post-install examples, see [Common Integration Policy Examples](references/integration-policy-examples.md). + +During onboarding, the policy tier (use the `nemoclaw-user-reference` skill) you select determines which presets are enabled by default. +You can add or remove individual presets in the interactive preset screen that follows tier selection. + +Available presets: + +| Preset | Endpoints | +|--------|-----------| +| `brave` | Brave Search API | +| `brew` | Homebrew (Linuxbrew) package manager | +| `discord` | Discord API, gateway, and CDN access | +| `github` | GitHub and GitHub REST API | +| `huggingface` | Hugging Face Hub (download-only) and inference router | +| `jira` | Atlassian Jira API | +| `local-inference` | Local Ollama and vLLM through the host gateway | +| `npm` | npm and Yarn registries | +| `openclaw-pricing` | OpenClaw model-pricing reference fetch (LiteLLM and OpenRouter) | +| `outlook` | Microsoft 365 and Outlook | +| `pypi` | Python Package Index | +| `slack` | Slack API and webhooks | +| `telegram` | Telegram Bot API | +| `wechat` | WeChat (personal) iLink Bot API (experimental) | +| `whatsapp` | WhatsApp Web messaging (experimental) | + +To apply a preset to a running sandbox: + +```console +$ nemoclaw policy-add +``` + +**Note:** + +Preset selection is interactive when you omit a preset name. +Pass a preset name with `--yes` for scripted workflows. + +For example, to interactively add PyPI access to a running sandbox: + +```console +$ nemoclaw my-assistant policy-add +``` + +To list which presets are applied to a sandbox: + +```console +$ nemoclaw policy-list +``` + +To include a preset in the baseline, merge its entries into `openclaw-sandbox.yaml` and re-run `nemoclaw onboard`. + +**Note:** + +The `openshell policy set --policy ` command operates on raw policy files and does not +accept the `preset:` metadata block used in preset YAML files. Use `nemoclaw policy-add` for +presets. + +For scripted workflows, `policy-add` and `policy-remove` accept the preset name as a positional argument: + +```console +$ nemoclaw my-assistant policy-add pypi --yes +$ nemoclaw my-assistant policy-remove pypi --yes +``` + +Set `NEMOCLAW_NON_INTERACTIVE=1` instead of `--yes` to drive the same flow from an environment variable. +See Commands (use the `nemoclaw-user-reference` skill) for the full flag reference. + +`nemoclaw rebuild` reapplies every policy preset to the recreated sandbox, so presets survive an agent-version upgrade without manual reapplication. + +## Custom Preset Files + +Apply a user-authored preset YAML to a running sandbox without editing the baseline or dropping to `openshell policy set`. + +### Authoring + +A custom preset follows the same shape as the built-in ones under `nemoclaw-blueprint/policies/presets/`: + +```yaml +preset: + name: my-internal-api + description: "Internal service" +network_policies: + my-internal-api: + name: my-internal-api + endpoints: + - host: api.example.internal + port: 443 + protocol: rest + enforcement: enforce + rules: + - allow: { method: GET, path: "/**" } + binaries: + - { path: /usr/local/bin/node } +``` + +The top-level `preset.name` must be a lowercase RFC 1123 label (letters, digits, hyphens) and must not collide with a built-in preset name such as `slack` or `pypi`. +Rename `preset.name` if NemoClaw refuses to apply the file because of a collision. + +### Apply a Single File + +```console +$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml +``` + +Preview the endpoints without applying with `--dry-run`, and skip the confirmation prompt with `--yes` or by exporting `NEMOCLAW_NON_INTERACTIVE=1`. + +### Apply Every File in a Directory + +```console +$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes +``` + +Files are processed in lexicographic order. +Processing stops at the first failure; presets already applied are not rolled back. +Fix the failing file and re-run the command to continue. + +**Warning:** + +Custom preset hosts bypass NemoClaw's review process and can widen sandbox egress to arbitrary destinations. +Review every host in a custom preset before applying it, especially when the file originates outside your team. + +Load [references/customize-network-policy-details.md](references/customize-network-policy-details.md) for detailed steps on Remove a Custom Preset. + +## References + +- **[references/integration-policy-examples.md](references/integration-policy-examples.md)** — Guides users through common post-install integration policy setup for maintained NemoClaw policy presets, including Outlook, messaging channels, GitHub, Jira, Brave Search, package managers, Hugging Face, local inference, and OpenShell approval workflows. +- **Load [references/approve-network-requests.md](references/approve-network-requests.md)** when approving or denying sandbox egress requests, managing blocked network calls, or using the approval TUI. Reviews and approves blocked agent network requests in the TUI. +- **Load [references/customize-network-policy-details.md](references/customize-network-policy-details.md)** when you need detailed steps for Remove a Custom Preset. + +## Related Skills + +- [Approve or Deny Agent Network Requests](references/approve-network-requests.md) for real-time operator approval. +- [Common Integration Policy Examples](references/integration-policy-examples.md) for maintained preset examples such as Outlook, messaging, GitHub, Jira, Brave Search, package managers, Hugging Face, and local inference. +- `nemoclaw-user-reference` — Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference +- OpenShell [Policy Schema](https://docs.nvidia.com/openshell/latest/reference/policy-schema.html) for the full YAML policy schema reference. +- OpenShell [Sandbox Policies](https://docs.nvidia.com/openshell/latest/sandboxes/policies.html) for applying, iterating, and debugging policies at the OpenShell layer. diff --git a/skills/nemoclaw-user-manage-policy/evals/evals.json b/skills/nemoclaw-user-manage-policy/evals/evals.json new file mode 100644 index 00000000000..5df648b7484 --- /dev/null +++ b/skills/nemoclaw-user-manage-policy/evals/evals.json @@ -0,0 +1,128 @@ +[ + { + "id": "docs-network-policy-customize-network-policy-001", + "question": "I'm customizing sandbox network policy. Help me allow the agent to reach a required external service so I can enable the integration while preserving least privilege.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user allow the agent to reach a required external service and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enable the integration while preserving least privilege.", + "expected_behavior": [ + "The output directly addresses the user's situation: customizing sandbox network policy.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user allow the agent to reach a required external service with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enable the integration while preserving least privilege.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-network-policy-customize-network-policy-002", + "question": "I'm writing an egress rule. Help me specify the minimum necessary host, port, and protocol so I can avoid opening broader access than the agent needs.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user specify the minimum necessary host, port, and protocol and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid opening broader access than the agent needs.", + "expected_behavior": [ + "The output directly addresses the user's situation: writing an egress rule.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user specify the minimum necessary host, port, and protocol with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid opening broader access than the agent needs.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-network-policy-customize-network-policy-003", + "question": "I'm validating a policy change. Help me test that the intended integration works and unrelated egress remains blocked so I can ship a safer policy update.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user test that the intended integration works and unrelated egress remains blocked and gives enough concrete guidance, decision criteria, verification steps, or risk framing to ship a safer policy update.", + "expected_behavior": [ + "The output directly addresses the user's situation: validating a policy change.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user test that the intended integration works and unrelated egress remains blocked with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to ship a safer policy update.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-network-policy-approve-network-requests-001", + "question": "I'm reviewing a blocked network request. Help me understand why the agent wants to reach that endpoint so I can approve only requests that support the current job.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user understand why the agent wants to reach that endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to approve only requests that support the current job.", + "expected_behavior": [ + "The output directly addresses the user's situation: reviewing a blocked network request.", + "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", + "The output helps the user understand why the agent wants to reach that endpoint with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to approve only requests that support the current job.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." + ] + }, + { + "id": "docs-network-policy-approve-network-requests-002", + "question": "I'm using the approval UI. Help me spot unexpected or prompt-injection-driven egress so I can deny suspicious access before it becomes policy.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user spot unexpected or prompt-injection-driven egress and gives enough concrete guidance, decision criteria, verification steps, or risk framing to deny suspicious access before it becomes policy.", + "expected_behavior": [ + "The output directly addresses the user's situation: using the approval UI.", + "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", + "The output helps the user spot unexpected or prompt-injection-driven egress with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to deny suspicious access before it becomes policy.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." + ] + }, + { + "id": "docs-network-policy-approve-network-requests-003", + "question": "I'm after approving or denying a request. Help me understand audit, rollback, and policy update behavior so I can keep operator decisions traceable.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user understand audit, rollback, and policy update behavior and gives enough concrete guidance, decision criteria, verification steps, or risk framing to keep operator decisions traceable.", + "expected_behavior": [ + "The output directly addresses the user's situation: after approving or denying a request.", + "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", + "The output helps the user understand audit, rollback, and policy update behavior with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to keep operator decisions traceable.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." + ] + }, + { + "id": "docs-network-policy-integration-policy-examples-001", + "question": "I'm following an integration policy example. Help me enable a common third-party workflow quickly so I can avoid writing a policy from scratch.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user enable a common third-party workflow quickly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid writing a policy from scratch.", + "expected_behavior": [ + "The output directly addresses the user's situation: following an integration policy example.", + "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", + "The output helps the user enable a common third-party workflow quickly with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid writing a policy from scratch.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." + ] + }, + { + "id": "docs-network-policy-integration-policy-examples-002", + "question": "I'm adapting an example to my organization. Help me replace sample hosts and ports with exact production endpoints so I can create a policy that matches our real integration.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user replace sample hosts and ports with exact production endpoints and gives enough concrete guidance, decision criteria, verification steps, or risk framing to create a policy that matches our real integration.", + "expected_behavior": [ + "The output directly addresses the user's situation: adapting an example to my organization.", + "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", + "The output helps the user replace sample hosts and ports with exact production endpoints with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to create a policy that matches our real integration.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." + ] + }, + { + "id": "docs-network-policy-integration-policy-examples-003", + "question": "I'm copying an example into a stricter environment. Help me identify broad rules or assumptions that need tightening so I can avoid weakening production egress controls.", + "expected_skill": "nemoclaw-user-manage-policy", + "ground_truth": "A NemoClaw-specific answer that helps the user identify broad rules or assumptions that need tightening and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid weakening production egress controls.", + "expected_behavior": [ + "The output directly addresses the user's situation: copying an example into a stricter environment.", + "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", + "The output helps the user identify broad rules or assumptions that need tightening with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid weakening production egress controls.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." + ] + } +] diff --git a/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md b/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md new file mode 100644 index 00000000000..b67ec16f90a --- /dev/null +++ b/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md @@ -0,0 +1,62 @@ +# Approve or Deny Agent Network Requests + +Review and act on network requests that the agent makes to endpoints not listed in the sandbox policy. +OpenShell intercepts these requests and presents them in the TUI for operator approval. + +## Prerequisites + +- A running NemoClaw sandbox. +- The OpenShell CLI on your `PATH`. + +## Open the TUI + +Start the OpenShell terminal UI to monitor sandbox activity: + +```console +$ openshell term +``` + +For a remote sandbox, pass the instance name: + +```console +$ ssh my-gpu-box 'cd ~/nemoclaw && . .env && openshell term' +``` + +The TUI displays the sandbox state, active inference provider, and a live feed of network activity. + +## Trigger a Blocked Request + +When the agent attempts to reach an endpoint that is not in the baseline policy, OpenShell blocks the connection and displays the request in the TUI. +The blocked request includes the following details: + +- **Host and port** of the destination. +- **Binary** that initiated the request. +- **HTTP method** and path, if available. + +## Approve or Deny the Request + +The TUI presents an approval prompt for each blocked request. + +- **Approve** the request to add the endpoint to the running policy for the current session. +- **Deny** the request to keep the endpoint blocked. + +Approved endpoints remain in the running policy until the sandbox stops. +They are not persisted to the baseline policy file. +To keep an endpoint allowed after a restart, update the policy YAML or apply a preset as described in [Customize the Sandbox Network Policy](../SKILL.md). + +## Run the Walkthrough + +From the NemoClaw repository root, run the walkthrough script after you have onboarded at least one sandbox and it is reachable: + +```console +$ ./scripts/walkthrough.sh +``` + +This script opens a split tmux session with the TUI on the left and the agent on the right. +The walkthrough requires tmux and the `NVIDIA_API_KEY` environment variable, and it assumes an existing sandbox to attach to. + +## Related Topics + +- [Customize the Sandbox Network Policy](../SKILL.md) to add endpoints permanently. +- Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference. +- Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for general sandbox monitoring. diff --git a/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md b/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md new file mode 100644 index 00000000000..07ab88a6a15 --- /dev/null +++ b/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md @@ -0,0 +1,11 @@ +# Customize the Sandbox Network Policy: Details + +## Remove a Custom Preset + +Custom presets applied with `--from-file` or `--from-dir` are recorded in the NemoClaw sandbox registry alongside their full YAML content, so they can be removed by name — the original file does not need to be kept on disk: + +```console +$ nemoclaw my-assistant policy-remove my-internal-api --yes +``` + +`policy-remove` accepts both built-in and custom preset names. Run `nemoclaw policy-list` to see every preset currently applied to the sandbox. diff --git a/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md b/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md new file mode 100644 index 00000000000..303a7fc05ea --- /dev/null +++ b/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md @@ -0,0 +1,334 @@ +# Common NemoClaw Integration Policy Examples + +Use these examples when a sandbox is already installed and an integration needs network access. +This page covers only integrations that NemoClaw currently ships as maintained policy preset YAML under `nemoclaw-blueprint/policies/presets/`. +Integration setup usually has two separate parts: + +- Configure the integration itself, such as a bot token, OAuth credential, or agent plugin setting. +- Allow the sandbox to reach the integration's network endpoints through NemoClaw and OpenShell policy. + +Prefer NemoClaw commands for policy changes that should be tracked with the sandbox. +Use OpenShell directly when you need to inspect blocked requests or approve a one-off request in the TUI. + +## Before You Start + +Replace `my-assistant` with your sandbox name in the examples. + +Check the current policy state first: + +```console +$ nemoclaw my-assistant policy-list +``` + +For a live view of blocked requests, open the OpenShell TUI in a separate host terminal: + +```console +$ openshell term +``` + +When the agent reaches an endpoint that is not in policy, the TUI shows the host, port, requesting binary, method, and path when available. +Approve a request only when you understand why the integration needs it. +An approval updates the running policy, but it does not create a NemoClaw preset entry that can be reviewed and replayed like `policy-add`. + +## Supported Integration Presets + +NemoClaw ships maintained policy presets for common services in `nemoclaw-blueprint/policies/presets/`. + +| Workflow | Preset | +|----------|--------| +| Brave Search | `brave` | +| Homebrew packages | `brew` | +| Discord messaging | `discord` | +| GitHub and GitHub API | `github` | +| Hugging Face Hub and Inference API | `huggingface` | +| Jira and Atlassian Cloud | `jira` | +| Local Ollama or vLLM through the host gateway | `local-inference` | +| OpenClaw model-pricing reference fetch | `openclaw-pricing` | +| npm and Yarn packages | `npm` | +| Microsoft 365, Outlook, and Graph API | `outlook` | +| Python Package Index | `pypi` | +| Slack messaging | `slack` | +| Telegram Bot API | `telegram` | +| WeChat (personal) iLink Bot API (experimental) | `wechat` | +| WhatsApp Web messaging (experimental) | `whatsapp` | + +Preview the endpoints before applying: + +```console +$ nemoclaw my-assistant policy-add outlook --dry-run +``` + +Apply the preset: + +```console +$ nemoclaw my-assistant policy-add outlook --yes +``` + +Remove it later if the sandbox no longer needs that access: + +```console +$ nemoclaw my-assistant policy-remove outlook --yes +``` + +## Email and Calendar With Microsoft 365 + +Use the `outlook` preset for Microsoft 365 email and calendar workflows that use Microsoft Graph or Outlook endpoints. +The preset allows `graph.microsoft.com`, Microsoft login, and Outlook service endpoints. + +```console +$ nemoclaw my-assistant policy-add outlook --dry-run +$ nemoclaw my-assistant policy-add outlook --yes +``` + +Then configure the email or calendar tool credentials through the integration you are running in the sandbox. +Keep OAuth client secrets and refresh tokens out of policy files. + +If the tool still fails, run `openshell term`, trigger the workflow again, and inspect the blocked request. +If the blocked endpoint is not covered by the maintained `outlook` preset, treat it as a separate policy review instead of assuming it is part of the supported preset. + +## Telegram Bot Messaging + +Telegram needs both channel configuration and egress policy. +If you already enabled Telegram during onboarding but did not include the preset, add it to the running sandbox: + +```console +$ nemoclaw my-assistant policy-add telegram --yes +``` + +To add Telegram after onboarding, set the token on the host, add the channel, rebuild so the image picks up the channel config, and make sure the policy preset is applied: + +```console +$ export TELEGRAM_BOT_TOKEN= +$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add telegram +$ nemoclaw my-assistant rebuild +$ nemoclaw my-assistant policy-add telegram --yes +``` + +If delivery fails, open the TUI and send a test message to the bot: + +```console +$ openshell term +``` + +The matching preset for each supported messaging channel is the channel name (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`). + +## Slack or Discord Messaging + +Slack and Discord also need both channel configuration and egress policy. +Use the matching policy preset after you configure the channel credentials. + +For Slack: + +```console +$ export SLACK_BOT_TOKEN= +$ export SLACK_APP_TOKEN= +$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add slack +$ nemoclaw my-assistant rebuild +$ nemoclaw my-assistant policy-add slack --yes +``` + +For Discord: + +```console +$ export DISCORD_BOT_TOKEN= +$ export DISCORD_SERVER_ID= +$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add discord +$ nemoclaw my-assistant rebuild +$ nemoclaw my-assistant policy-add discord --yes +``` + +If you enabled Slack or Discord during onboarding, apply only the matching preset: + +```console +$ nemoclaw my-assistant policy-add slack --yes +$ nemoclaw my-assistant policy-add discord --yes +``` + +## WeChat or WhatsApp Messaging (Experimental) + +WeChat and WhatsApp are experimental. +Both rely on QR-based pairing flows that are more fragile than token-based bots, and the upstream client libraries can change behavior without notice. + +WeChat uses Tencent's iLink Bot API for personal accounts. +The bot token is captured by a host-side QR scan during onboarding rather than pasted from a developer portal. +Add the channel interactively and apply the preset: + +```console +$ nemoclaw my-assistant channels add wechat +$ nemoclaw my-assistant rebuild +$ nemoclaw my-assistant policy-add wechat --yes +``` + +WhatsApp Web pairs entirely inside the sandbox via QR scan, so `channels add` does not collect a host-side token. +Apply the preset and complete the in-sandbox pairing after the rebuild: + +```console +$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add whatsapp +$ nemoclaw my-assistant rebuild +$ nemoclaw my-assistant policy-add whatsapp --yes +``` + +If you enabled WeChat or WhatsApp during onboarding, apply only the matching preset: + +```console +$ nemoclaw my-assistant policy-add wechat --yes +$ nemoclaw my-assistant policy-add whatsapp --yes +``` + +## GitHub and Jira + +Use `github` when the agent needs GitHub API or Git access. +Use `jira` when the agent needs Atlassian Jira access. + +Preview first: + +```console +$ nemoclaw my-assistant policy-add github --dry-run +$ nemoclaw my-assistant policy-add jira --dry-run +``` + +Apply the preset that matches the workflow: + +```console +$ nemoclaw my-assistant policy-add github --yes +$ nemoclaw my-assistant policy-add jira --yes +``` + +The `jira` preset intentionally allows Node.js access to Atlassian Cloud and does not allow `curl`. +When validating it manually, avoid plain `curl -s` against `auth.atlassian.com`. +Atlassian can return an empty redirect body even when the request succeeds. +Use an explicit status probe instead: + +```console +$ node -e "require('https').get('https://api.atlassian.com', r => console.log(r.statusCode))" +$ curl -sS -o /dev/null -w '%{http_code}' --max-time 10 https://auth.atlassian.com +``` + +Before approval, the curl probe should report `000` or a local policy denial. +After approving the blocked request in OpenShell, it should report an HTTP +status such as `301` or `200`. + +Remove access when the task is done: + +```console +$ nemoclaw my-assistant policy-remove github --yes +$ nemoclaw my-assistant policy-remove jira --yes +``` + +## Brave Search + +The default Balanced policy tier includes `brave`. +If you chose Restricted during onboarding or removed the preset later, add it before enabling Brave Search workflows: + +```console +$ nemoclaw my-assistant policy-add brave --dry-run +$ nemoclaw my-assistant policy-add brave --yes +``` + +The Brave Search API key is still configured separately during onboarding or through the web search setup flow. + +## Package and Model Tooling + +Use these presets when an agent workflow installs packages or downloads model assets: + +| Workflow | Preset | +|----------|--------| +| npm or Yarn packages | `npm` | +| Python packages from PyPI | `pypi` | +| Homebrew packages | `brew` | +| Hugging Face model or dataset access | `huggingface` | + +Add only the preset required for the task: + +```console +$ nemoclaw my-assistant policy-add npm --yes +$ nemoclaw my-assistant policy-add pypi --yes +$ nemoclaw my-assistant policy-add brew --yes +$ nemoclaw my-assistant policy-add huggingface --yes +``` + +Remove package access after a one-time setup task if the sandbox no longer needs it: + +```console +$ nemoclaw my-assistant policy-remove npm --yes +$ nemoclaw my-assistant policy-remove pypi --yes +$ nemoclaw my-assistant policy-remove brew --yes +$ nemoclaw my-assistant policy-remove huggingface --yes +``` + +### Homebrew Specifics + +The sandbox base image includes Homebrew (Linuxbrew), so applying the `brew` preset is the only step needed before installing a formula. +A `/usr/local/bin/brew` symlink puts the entry point on the sandbox `PATH`, so the agent can run `brew install ` directly: + +```console +$ nemoclaw my-assistant policy-add brew --yes +$ nemoclaw my-assistant exec -- brew install +``` + +You do not need to bootstrap Homebrew, install build dependencies, or source `brew shellenv` inside the sandbox. + +## Model Pricing + +OpenClaw's gateway fetches reference pricing from LiteLLM and OpenRouter on every start so it can populate `usage.cost` in session JSONL records. +The default-strict egress policy denies both hosts. +The fetch fails closed, the gateway logs `[gateway/model-pricing] LiteLLM pricing fetch failed: TypeError: fetch failed` (and the matching OpenRouter line) on every startup, and every session record records `usage.cost = 0` even though the input and output token counts populate correctly. +Tools that read the session log to display per-turn cost (audit dashboards, compliance review surfaces) cannot distinguish a real free run from this silent failure. + +Apply the `openclaw-pricing` preset to allow both pricing endpoints. +The preset pins each host to a single read-only path so it does not widen egress beyond the pricing fetch: + +```console +$ nemoclaw my-assistant policy-add openclaw-pricing --dry-run +$ nemoclaw my-assistant policy-add openclaw-pricing --yes +``` + +After the next gateway restart the WARN entries stop and `usage.cost` populates from the fetched pricing tables. + +## Local Inference + +Use `local-inference` when the sandbox needs access to host-side local inference services such as Ollama or vLLM through the OpenShell host gateway. +Onboarding auto-suggests this preset when you choose a local provider. +If you need to add it after onboarding: + +```console +$ nemoclaw my-assistant policy-add local-inference --dry-run +$ nemoclaw my-assistant policy-add local-inference --yes +``` + +Then verify the sandbox status: + +```console +$ nemoclaw my-assistant status +``` + +## Inspect or Replace the Live Policy + +Use `policy-list` for normal preset state: + +```console +$ nemoclaw my-assistant policy-list +``` + +Use OpenShell when you need the full enforced YAML: + +```console +$ openshell policy get --full my-assistant > live-policy.yaml +``` + +If you must replace the live policy, edit the full policy file and set it back: + +```console +$ openshell policy set --policy live-policy.yaml my-assistant --wait +``` + +`openshell policy set` replaces the live policy with the file you provide. +It does not accept a preset file that starts with a `preset:` block, and it does not merge a single endpoint into the existing policy. +Use `nemoclaw my-assistant policy-add` for maintained NemoClaw presets. + +## Next Steps + +- [Approve or Deny Agent Network Requests](approve-network-requests.md) for the interactive OpenShell TUI flow. +- [Customize the Sandbox Network Policy](../SKILL.md) for static policy edits and raw OpenShell policy files. +- Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) for Telegram, Discord, Slack, WeChat, and WhatsApp channel configuration. +- Commands (use the `nemoclaw-user-reference` skill) for the full `policy-add`, `policy-list`, `policy-remove`, and `channels` command reference. diff --git a/skills/nemoclaw-user-manage-sandboxes/SKILL.md b/skills/nemoclaw-user-manage-sandboxes/SKILL.md new file mode 100644 index 00000000000..41e0bffd973 --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/SKILL.md @@ -0,0 +1,262 @@ +--- +name: "nemoclaw-user-manage-sandboxes" +description: "Explains operational tasks after the quickstart: listing sandboxes, status and health checks, logs, diagnostics, port forwards, multiple sandboxes, credential reset, rebuilds, network presets, upgrades, and uninstall. Trigger keywords - manage nemoclaw sandboxes, nemoclaw status, nemoclaw list, nemoclaw dashboard port, nemoclaw rebuild, nemoclaw upgrade sandboxes, nemoclaw uninstall, sandbox mutability, sandbox runtime configuration, sandbox rebuild, nemoclaw backup, nemoclaw restore, workspace backup, openshell sandbox download upload, nemoclaw messaging channels, nemoclaw telegram, nemoclaw discord, nemoclaw slack, nemoclaw wechat, nemoclaw whatsapp, openshell channel messaging, nemoclaw workspace files, soul.md, user.md, identity.md, agents.md, sandbox persistence." +license: "Apache-2.0" +--- +# Manage Sandbox Lifecycle + +Use this guide after you finish the OpenClaw quickstart (use the `nemoclaw-user-get-started` skill). +It covers day-two sandbox operations such as listing sandboxes, checking health, managing ports, rebuilding safely, upgrading, and uninstalling. +When a workflow uses the lower-level OpenShell CLI, see CLI Selection Guide (use the `nemoclaw-user-reference` skill) for the boundary between `nemoclaw` and `openshell`. + +## List Sandboxes + +List every sandbox registered on this host: + +```console +$ nemoclaw list +``` + +The list shows each sandbox's model, provider, policy presets, active SSH session indicator, and dashboard URL when a dashboard port is recorded. +Use JSON output for scripts: + +```console +$ nemoclaw list --json +``` + +## Check Sandbox Health + +Check a specific sandbox's health, inference route, active connections, live policy, update status, and messaging-channel overlap warnings: + +```console +$ nemoclaw my-assistant status +``` + +Use the host-level status command when you want the sandbox inventory plus host auxiliary service state, such as cloudflared: + +```console +$ nemoclaw status +``` + +## Inspect Logs + +View recent sandbox logs: + +```console +$ nemoclaw my-assistant logs +``` + +Stream logs while you reproduce a problem: + +```console +$ nemoclaw my-assistant logs --follow +``` + +The log command reads both OpenClaw gateway output and OpenShell audit events, so policy denials appear beside gateway logs. + +## Collect Diagnostics + +Collect diagnostics for bug reports or support handoff: + +```console +$ nemoclaw debug --sandbox my-assistant --output nemoclaw-debug.tar.gz +``` + +Use `--quick` for a smaller local summary: + +```console +$ nemoclaw debug --quick --sandbox my-assistant +``` + +The debug command gathers system information, Docker state, gateway logs, and sandbox status. + +## Manage Dashboard Ports + +If the forward stopped, or the installer reported that no active forward was found and the URL does not load, restart it manually with the port from the install summary. + +```console +$ openshell forward start --background my-gpt-claw +``` + +To list active forwards across all sandboxes, run the following command. + +```console +$ openshell forward list +``` + +## Run Multiple Sandboxes + +Each sandbox needs its own dashboard port, since `openshell forward` refuses to bind a port that another sandbox is already using. +When the default port is already held by another sandbox, `nemoclaw onboard` scans ports `18789` through `18799` and uses the next free port. + +```console +$ nemoclaw onboard # first sandbox uses 18789 +$ nemoclaw onboard # second sandbox uses the next free port, such as 18790 +``` + +To choose a specific port, pass `--control-ui-port`: + +```console +$ nemoclaw onboard --control-ui-port 19000 +``` + +You can also set `CHAT_UI_URL` or `NEMOCLAW_DASHBOARD_PORT` before onboarding: + +```console +$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard +$ NEMOCLAW_DASHBOARD_PORT=19000 nemoclaw onboard +``` + +For full details on port conflicts and overrides, refer to Port already in use (use the `nemoclaw-user-reference` skill). + +## Reconfigure or Recover + +Recover from a misconfigured sandbox without re-running the full onboard wizard or destroying workspace state. + +### Change Inference Model or API + +Change the active model or provider at runtime without rebuilding the sandbox: + +```console +$ nemoclaw inference set --model --provider +``` + +Refer to Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) for provider-specific model IDs and API compatibility notes. + +### Restart the Gateway and Port Forward + +If `nemoclaw status` reports the sandbox is alive but the gateway is not running, run the recover command instead of opening a shell. + +```console +$ nemoclaw recover +``` + +The command restarts the in-sandbox gateway and re-establishes the dashboard port-forward in one step. +It is idempotent and safe to script. +Refer to `nemoclaw recover` (use the `nemoclaw-user-reference` skill) for details. + +### Reset a Stored Credential + +If a provider credential was entered incorrectly during onboarding, clear the gateway-registered value and re-enter it on the next onboard run: + +```console +$ nemoclaw credentials list # see which providers are registered +$ nemoclaw credentials reset # clear a single provider, for example nvidia-prod +$ nemoclaw onboard # re-run to re-enter the cleared provider +``` + +The credentials command is documented in full at `nemoclaw credentials reset ` (use the `nemoclaw-user-reference` skill). + +### Rebuild a Sandbox While Preserving Workspace State + +If you changed the underlying Dockerfile, upgraded OpenClaw, or want to pick up a new base image without losing your sandbox's workspace files, use `rebuild` instead of destroying and recreating: + +```console +$ nemoclaw rebuild +``` + +Rebuild preserves the mounted workspace and registered policies while recreating the container. +If NemoClaw cannot archive any requested state path, it reports the backup failure and stops before deleting the original sandbox. +Refer to `nemoclaw rebuild` (use the `nemoclaw-user-reference` skill) for flag details. + +### Add a Network Preset After Onboarding + +Apply an additional preset, such as Telegram or GitHub, to a running sandbox without re-onboarding: + +```console +$ nemoclaw policy-add +``` + +Refer to `nemoclaw policy-add` (use the `nemoclaw-user-reference` skill) for usage details and flags. + +Non-interactive re-onboards in the default `suggested` policy mode preserve presets added this way. +To make a re-onboard authoritative, set `NEMOCLAW_POLICY_MODE=custom` and provide `NEMOCLAW_POLICY_PRESETS` with the exact list to apply; onboarding removes anything else. +See `NEMOCLAW_POLICY_MODE` (use the `nemoclaw-user-reference` skill) for the full table. + +## Update to the Latest Version + +When a new NemoClaw release becomes available, update the `nemoclaw` CLI on your host and check existing sandboxes for stale agent/runtime versions. + +### Update the NemoClaw CLI + +Re-run the installer. +Before it onboards anything, the installer calls `nemoclaw backup-all` (use the `nemoclaw-user-reference` skill) automatically, storing a snapshot of each running sandbox in `~/.nemoclaw/rebuild-backups/` as a safety net. +If your existing gateway is from OpenShell earlier than `0.0.37`, the installer prompts before it runs the new automatic gateway upgrade path. +The automatic path is offered only when the existing `nemoclaw` CLI supports `backup-all`; older installs must preserve sandbox state manually before retiring the gateway. +For unattended installs, set `NEMOCLAW_ACCEPT_EXPERIMENTAL_OPENSHELL_UPGRADE=1`, or manually run `nemoclaw backup-all` and `openshell gateway destroy -g nemoclaw || openshell gateway destroy` before rerunning the installer as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_OPENSHELL_UPGRADE_PREPARED=1 bash`. + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +### Upgrade Sandboxes with Stale Agent and Runtime Versions + +The installer checks registered sandboxes after onboarding succeeds and runs `nemoclaw upgrade-sandboxes --auto` for stale running sandboxes. +Use `upgrade-sandboxes` directly to verify the result, rebuild when you skipped the installer or onboarding step, or handle sandboxes that were stopped or could not be version-checked. +The upgrade flow is non-destructive by default because NemoClaw preserves manifest-defined workspace state, but a manual snapshot before any major upgrade gives you a state restore point. + +```console +$ nemoclaw snapshot create --name pre-upgrade # optional, recommended +$ nemoclaw update --yes # updates CLI through the maintained installer flow +$ nemoclaw upgrade-sandboxes --check # verify or list remaining stale/unknown sandboxes +$ nemoclaw upgrade-sandboxes # manually rebuild remaining stale running sandboxes +``` + +`nemoclaw update` is the CLI wrapper around the same installer path as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash`. +Use `nemoclaw update --check` when you only want to inspect version state and see the maintained update command. + +For scripted manual rebuilds, use `nemoclaw upgrade-sandboxes --auto` to skip the confirmation prompt. + +If the upgraded sandbox needs its workspace state reverted, restore the pre-upgrade snapshot into the running sandbox. +This restores saved state directories only; it does not downgrade the sandbox image or agent/runtime: + +```console +$ nemoclaw snapshot restore pre-upgrade +``` + +Load [references/lifecycle-details.md](references/lifecycle-details.md) for detailed steps on What Changes During a Rebuild. + +## Uninstall + +To remove NemoClaw and all resources created during setup, run the CLI's built-in uninstall command: + +```bash +nemoclaw uninstall +``` + +| Flag | Effect | +|--------------------|------------------------------------------------------| +| `--yes` | Skip the confirmation prompt. | +| `--keep-openshell` | Leave OpenShell binaries installed. | +| `--delete-models` | Also remove NemoClaw-pulled Ollama models. | + +`nemoclaw uninstall` runs the version-pinned `uninstall.sh` that shipped with your installed CLI, so it does not fetch anything over the network at uninstall time. + +If the `nemoclaw` CLI is missing or broken, fall back to the hosted script: + +```bash +curl -fsSL https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh | bash +``` + +The same `--yes`, `--keep-openshell`, and `--delete-models` flags listed above also apply to the hosted script. Pass them after `bash -s --`. + +```bash +curl -fsSL https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh | bash -s -- --yes --delete-models +``` + +For a full comparison of the two forms, including what they fetch, what they trust, and when to prefer each, see `nemoclaw uninstall` vs. the hosted `uninstall.sh` (use the `nemoclaw-user-reference` skill). + +## References + +- **[references/runtime-controls.md](references/runtime-controls.md)** — Single page that answers what can change at runtime versus what requires a rebuild for NemoClaw sandboxes. +- **Load [references/backup-restore.md](references/backup-restore.md)** when downloading workspace files from a sandbox, uploading restored files into a new sandbox, or preserving sandbox state across rebuilds. Backs up and restores OpenClaw workspace files before destructive operations such as sandbox rebuilds. +- **Load [references/messaging-channels.md](references/messaging-channels.md)** when setting up messaging channels, chat interfaces, or integrations without relying on nemoclaw tunnel start for bridges. Explains how Telegram, Discord, Slack, WeChat, and WhatsApp reach sandboxed OpenClaw and Hermes agents through OpenShell-managed processes and NemoClaw channel commands. +- **Load [references/workspace-files.md](references/workspace-files.md)** when users ask about `SOUL.md`, `USER.md`, `IDENTITY.md`, `AGENTS.md`, or other workspace files, or when preparing to back up or restore workspace state. Explains what workspace personality and configuration files are, where they live, and how they persist across sandbox restarts. +- **Load [references/lifecycle-details.md](references/lifecycle-details.md)** when you need detailed steps for What Changes During a Rebuild. + +## Related Skills + +- [Set Up Messaging Channels](references/messaging-channels.md) to connect Telegram, Discord, or Slack. +- [Workspace Files](references/workspace-files.md) for persistent OpenClaw files inside the sandbox. +- [Backup and Restore](references/backup-restore.md) for snapshot and restore workflows. +- `nemoclaw-user-monitor-sandbox` — Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for observability tools diff --git a/skills/nemoclaw-user-manage-sandboxes/evals/evals.json b/skills/nemoclaw-user-manage-sandboxes/evals/evals.json new file mode 100644 index 00000000000..891606460ed --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/evals/evals.json @@ -0,0 +1,212 @@ +[ + { + "id": "docs-manage-sandboxes-lifecycle-001", + "question": "I'm managing a NemoClaw sandbox. Help me check status, health, logs, ports, providers, upgrades, and uninstall paths so I can operate the sandbox safely after quickstart.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user check status, health, logs, ports, providers, upgrades, and uninstall paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to operate the sandbox safely after quickstart.", + "expected_behavior": [ + "The output directly addresses the user's situation: managing a NemoClaw sandbox.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user check status, health, logs, ports, providers, upgrades, and uninstall paths with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to operate the sandbox safely after quickstart.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-manage-sandboxes-lifecycle-002", + "question": "I'm choosing a lifecycle command. Help me understand which commands inspect, restart, rebuild, or destroy state so I can avoid accidental data loss.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user understand which commands inspect, restart, rebuild, or destroy state and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidental data loss.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing a lifecycle command.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand which commands inspect, restart, rebuild, or destroy state with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidental data loss.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-manage-sandboxes-lifecycle-003", + "question": "I'm planning an upgrade, rebuild, or uninstall. Help me know when to preserve workspace files first so I can recover useful agent state after disruptive changes.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user know when to preserve workspace files first and gives enough concrete guidance, decision criteria, verification steps, or risk framing to recover useful agent state after disruptive changes.", + "expected_behavior": [ + "The output directly addresses the user's situation: planning an upgrade, rebuild, or uninstall.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user know when to preserve workspace files first with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to recover useful agent state after disruptive changes.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-manage-sandboxes-runtime-controls-001", + "question": "I'm changing a running sandbox. Help me know which controls can change without rebuild or re-onboarding so I can make safe adjustments with minimal downtime.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user know which controls can change without rebuild or re-onboarding and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make safe adjustments with minimal downtime.", + "expected_behavior": [ + "The output directly addresses the user's situation: changing a running sandbox.", + "The AI coding assistant loads the expected_skill and references/runtime-controls.md", + "The output helps the user know which controls can change without rebuild or re-onboarding with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make safe adjustments with minimal downtime.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." + ] + }, + { + "id": "docs-manage-sandboxes-runtime-controls-002", + "question": "I'm reviewing a runtime control. Help me classify it as hot-reloadable, rebuild-only, or onboarding-only so I can choose the correct operational path.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user classify it as hot-reloadable, rebuild-only, or onboarding-only and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose the correct operational path.", + "expected_behavior": [ + "The output directly addresses the user's situation: reviewing a runtime control.", + "The AI coding assistant loads the expected_skill and references/runtime-controls.md", + "The output helps the user classify it as hot-reloadable, rebuild-only, or onboarding-only with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose the correct operational path.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." + ] + }, + { + "id": "docs-manage-sandboxes-runtime-controls-003", + "question": "I'm responding to an incident or risky agent behavior. Help me use `shields up`, `shields down`, and `shields status` correctly so I can tighten or inspect controls without confusion.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user use `shields up`, `shields down`, and `shields status` correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to tighten or inspect controls without confusion.", + "expected_behavior": [ + "The output directly addresses the user's situation: responding to an incident or risky agent behavior.", + "The AI coding assistant loads the expected_skill and references/runtime-controls.md", + "The output helps the user use `shields up`, `shields down`, and `shields status` correctly with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to tighten or inspect controls without confusion.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." + ] + }, + { + "id": "docs-manage-sandboxes-backup-restore-001", + "question": "I'm backing up workspace files before a destructive operation. Help me preserve agent memory, identity, and useful configuration so I can rebuild or migrate without losing important state.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user preserve agent memory, identity, and useful configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to rebuild or migrate without losing important state.", + "expected_behavior": [ + "The output directly addresses the user's situation: backing up workspace files before a destructive operation.", + "The AI coding assistant loads the expected_skill and references/backup-restore.md", + "The output helps the user preserve agent memory, identity, and useful configuration with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to rebuild or migrate without losing important state.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." + ] + }, + { + "id": "docs-manage-sandboxes-backup-restore-002", + "question": "I'm handling a workspace archive. Help me understand credential stripping and integrity checks so I can trust the archive without exposing secrets.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user understand credential stripping and integrity checks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the archive without exposing secrets.", + "expected_behavior": [ + "The output directly addresses the user's situation: handling a workspace archive.", + "The AI coding assistant loads the expected_skill and references/backup-restore.md", + "The output helps the user understand credential stripping and integrity checks with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the archive without exposing secrets.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." + ] + }, + { + "id": "docs-manage-sandboxes-backup-restore-003", + "question": "I'm restoring workspace files. Help me verify the agent's useful memory returned so I can continue work without reintroducing sensitive host data.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user verify the agent's useful memory returned and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue work without reintroducing sensitive host data.", + "expected_behavior": [ + "The output directly addresses the user's situation: restoring workspace files.", + "The AI coding assistant loads the expected_skill and references/backup-restore.md", + "The output helps the user verify the agent's useful memory returned with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue work without reintroducing sensitive host data.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." + ] + }, + { + "id": "docs-manage-sandboxes-workspace-files-001", + "question": "I'm inspecting workspace files. Help me understand where personality, identity, and configuration live so I can predict how the agent will behave across sessions.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user understand where personality, identity, and configuration live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to predict how the agent will behave across sessions.", + "expected_behavior": [ + "The output directly addresses the user's situation: inspecting workspace files.", + "The AI coding assistant loads the expected_skill and references/workspace-files.md", + "The output helps the user understand where personality, identity, and configuration live with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to predict how the agent will behave across sessions.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." + ] + }, + { + "id": "docs-manage-sandboxes-workspace-files-002", + "question": "I'm adding durable instructions for the agent. Help me know which files persist and who owns them so I can put guidance in the right place.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user know which files persist and who owns them and gives enough concrete guidance, decision criteria, verification steps, or risk framing to put guidance in the right place.", + "expected_behavior": [ + "The output directly addresses the user's situation: adding durable instructions for the agent.", + "The AI coding assistant loads the expected_skill and references/workspace-files.md", + "The output helps the user know which files persist and who owns them with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to put guidance in the right place.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." + ] + }, + { + "id": "docs-manage-sandboxes-workspace-files-003", + "question": "I'm restarting, rebuilding, or migrating a sandbox. Help me understand how each action affects workspace state so I can avoid losing or duplicating important files.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user understand how each action affects workspace state and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid losing or duplicating important files.", + "expected_behavior": [ + "The output directly addresses the user's situation: restarting, rebuilding, or migrating a sandbox.", + "The AI coding assistant loads the expected_skill and references/workspace-files.md", + "The output helps the user understand how each action affects workspace state with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid losing or duplicating important files.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." + ] + }, + { + "id": "docs-manage-sandboxes-messaging-channels-001", + "question": "I'm connecting a messaging channel. Help me let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel so I can support real-world always-on interactions.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel and gives enough concrete guidance, decision criteria, verification steps, or risk framing to support real-world always-on interactions.", + "expected_behavior": [ + "The output directly addresses the user's situation: connecting a messaging channel.", + "The AI coding assistant loads the expected_skill and references/messaging-channels.md", + "The output helps the user let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to support real-world always-on interactions.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." + ] + }, + { + "id": "docs-manage-sandboxes-messaging-channels-002", + "question": "I'm configuring channel credentials and processes. Help me understand what OpenShell supervises and where secrets live so I can trust the messaging integration operationally.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what OpenShell supervises and where secrets live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the messaging integration operationally.", + "expected_behavior": [ + "The output directly addresses the user's situation: configuring channel credentials and processes.", + "The AI coding assistant loads the expected_skill and references/messaging-channels.md", + "The output helps the user understand what OpenShell supervises and where secrets live with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the messaging integration operationally.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." + ] + }, + { + "id": "docs-manage-sandboxes-messaging-channels-003", + "question": "I'm testing a new messaging channel. Help me send and receive a message through the full path so I can prove the channel, gateway, and sandboxed agent are wired correctly.", + "expected_skill": "nemoclaw-user-manage-sandboxes", + "ground_truth": "A NemoClaw-specific answer that helps the user send and receive a message through the full path and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prove the channel, gateway, and sandboxed agent are wired correctly.", + "expected_behavior": [ + "The output directly addresses the user's situation: testing a new messaging channel.", + "The AI coding assistant loads the expected_skill and references/messaging-channels.md", + "The output helps the user send and receive a message through the full path with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prove the channel, gateway, and sandboxed agent are wired correctly.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." + ] + } +] diff --git a/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md b/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md new file mode 100644 index 00000000000..830f35e1f47 --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md @@ -0,0 +1,164 @@ +# Backup and Restore Workspace Files + +Workspace files define your agent's personality, memory, and user context. +They persist across sandbox restarts but are **permanently deleted** when you run `nemoclaw destroy`. + +This guide covers snapshot commands, manual backup with CLI commands, and an automated script. + +## When to Back Up + +- **Before running `nemoclaw destroy`** +- Before major NemoClaw version upgrades +- Periodically, if you've invested time customizing your agent + +## Snapshot Commands + +The fastest way to back up and restore sandbox state is with the built-in snapshot commands. +Snapshots capture all workspace state directories defined in the agent manifest and store them in `~/.nemoclaw/rebuild-backups//`. +Agent manifests may also declare durable top-level state files. For Hermes, +snapshots include `SOUL.md` and the SQLite database behind `.hermes/state.db` +using SQLite's online backup API, then restore that database through SQLite +instead of copying a live raw database file. +Treat snapshot directories as private local data: the Hermes database can +contain session metadata and message history needed for a faithful restore. + +```console +$ nemoclaw my-assistant snapshot create +$ nemoclaw my-assistant snapshot list +$ nemoclaw my-assistant snapshot restore +``` + +`snapshot list` prints a table of version, name, timestamp, and path. Versions (`v1`, `v2`, ..., `vN`) are computed from the timestamp order, so `vN` is always the newest snapshot. + +To tag a snapshot with a human-readable label, pass `--name`: + +```console +$ nemoclaw my-assistant snapshot create --name before-upgrade +``` + +To restore a specific snapshot instead of the latest, pass a version, name, or timestamp prefix: + +```console +$ nemoclaw my-assistant snapshot restore v3 +$ nemoclaw my-assistant snapshot restore before-upgrade +$ nemoclaw my-assistant snapshot restore 2026-04-14T +``` + +To clone a snapshot into a different sandbox name, pass `--to `. +If the destination sandbox already exists, NemoClaw refuses to overwrite it unless you pass `--force`: + +```console +$ nemoclaw my-assistant snapshot restore before-upgrade --to my-assistant-clone +$ nemoclaw my-assistant snapshot restore before-upgrade --to my-assistant-clone --force --yes +``` + +The `nemoclaw rebuild` command uses the same snapshot mechanism automatically. +Snapshot restore performs a targeted repair for legacy `.openclaw-data` symlinks that were created by older images. +Unsafe symlinks and hard links inside sandbox state are rejected during backup creation before they can enter a snapshot. +Credential-bearing Hermes files such as `auth.json` are intentionally excluded +from snapshots. NemoClaw-regenerated Hermes config files (`config.yaml` and +`.env`) are also excluded; model/provider and messaging credentials are +recreated from host-side onboarding and OpenShell provider state during rebuild. +For full details, see the Commands reference (use the `nemoclaw-user-reference` skill). + +## Manual Backup + +Use `openshell sandbox download` to copy files from the sandbox to your host. + +```console +$ SANDBOX=my-assistant +$ BACKUP_DIR=~/.nemoclaw/backups/$(date +%Y%m%d-%H%M%S) +$ mkdir -p "$BACKUP_DIR" + +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/SOUL.md "$BACKUP_DIR/" +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/USER.md "$BACKUP_DIR/" +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/IDENTITY.md "$BACKUP_DIR/" +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/AGENTS.md "$BACKUP_DIR/" +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/MEMORY.md "$BACKUP_DIR/" +$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/memory/ "$BACKUP_DIR/memory/" +``` + +## Manual Restore + +Use `openshell sandbox upload` to push files back into a sandbox. + +```console +$ SANDBOX=my-assistant +$ BACKUP_DIR=~/.nemoclaw/backups/20260320-120000 # pick a timestamp + +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/SOUL.md" /sandbox/.openclaw/workspace/ +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/USER.md" /sandbox/.openclaw/workspace/ +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/IDENTITY.md" /sandbox/.openclaw/workspace/ +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/AGENTS.md" /sandbox/.openclaw/workspace/ +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/MEMORY.md" /sandbox/.openclaw/workspace/ +$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/memory/" /sandbox/.openclaw/workspace/memory/ +``` + +## Using the Backup Script + +The repository includes a convenience script at `scripts/backup-workspace.sh`. + +### Backup + +```console +$ ./scripts/backup-workspace.sh backup my-assistant +Backing up workspace from sandbox 'my-assistant'... +Backup saved to /home/user/.nemoclaw/backups/20260320-120000/ (6 items) +``` + +### Restore + +Restore from the most recent backup: + +```console +$ ./scripts/backup-workspace.sh restore my-assistant +``` + +Restore from a specific timestamp: + +```console +$ ./scripts/backup-workspace.sh restore my-assistant 20260320-120000 +``` + +## Verifying a Backup + +List backed-up files to confirm completeness: + +```console +$ ls -la ~/.nemoclaw/backups/20260320-120000/ +AGENTS.md +IDENTITY.md +MEMORY.md +SOUL.md +USER.md +memory/ +``` + +## Multi-Agent Deployments + +When OpenClaw is configured with multiple named agents, each agent has its own +workspace directory (`workspace-main/`, `workspace-support/`, `workspace-ops/`, +and so on — see [Multi-Agent Deployments](workspace-files.md#multi-agent-deployments)). + +`nemoclaw snapshot create` automatically discovers every `workspace-*/` +directory under the sandbox state tree and includes it in the snapshot bundle +alongside the default `workspace/`. `snapshot restore` re-applies the full +per-agent set. No manual per-workspace backup pattern is needed. + +The sandbox entrypoint ensures every per-agent workspace lives directly under +the persistent `.openclaw/` tree, so state also survives `openshell sandbox restart`. + +### Shared files across agents + +Files that operators typically want consistent across every per-agent workspace +(`AGENTS.md`, shared skills, common templates) are **not** synced automatically. +Each workspace is independent; changes in one don't propagate. Operators that +need this either copy the shared files explicitly to each workspace after +editing, or maintain a host-side sync layer. Tracking shared-file tooling +(shared mount, `workspaces list` command) in +[#1260](https://github.com/NVIDIA/NemoClaw/issues/1260). + +## Next Steps + +- [Workspace Files overview](workspace-files.md) to learn what each file does +- Commands reference (use the `nemoclaw-user-reference` skill) diff --git a/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md b/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md new file mode 100644 index 00000000000..80047e4609d --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md @@ -0,0 +1,24 @@ +# Manage Sandbox Lifecycle: Details + +## What Changes During a Rebuild + +Each rebuild destroys the existing container and creates a new one. +NemoClaw protects your data through the same backup-and-restore flow as `nemoclaw rebuild` (use the `nemoclaw-user-reference` skill): + +- NemoClaw preserves manifest-defined workspace state. Before deleting the old container, NemoClaw snapshots the state directories and durable state files defined in the agent manifest, typically `/sandbox/.openclaw/workspace/`; for Hermes this also includes `SOUL.md` and the SQLite database behind `.hermes/state.db`. Stored credentials (`~/.nemoclaw/credentials.json`) and registered policy presets live on the host and are re-applied to the new sandbox automatically. +- NemoClaw does not preserve runtime changes outside the workspace state directories. This includes packages installed inside the running container with `apt` or `pip`, files in non-workspace paths, and in-memory or process state. If you have customized the running container at runtime, capture that as `Dockerfile` changes for `nemoclaw onboard --from` or a manual `openshell sandbox download` before the rebuild starts. + +Aborts before the destroy step are non-destructive. +The flow refuses to proceed past preflight if a credential is missing or past backup if required manifest-defined state cannot be copied, so a failed run leaves the original sandbox intact and ready to retry. +When a backup command reports partial archive output, NemoClaw keeps the usable entries and reports only the manifest-defined paths that could not be archived. + +See [Backup and Restore](backup-restore.md) for the full list of state-preservation guarantees, snapshot retention, and instructions for manual backups when the auto-flow is not enough. + +**If the rebuild aborts with `Missing credential: `:** + +The rebuild preflight reads the provider credential recorded by your last `nemoclaw onboard` session. +If you have switched providers since onboarding, for example from a remote API to a local Ollama setup, the preflight may still reference the old key and fail before any destroy step runs. + +To recover, re-run `nemoclaw onboard` and select your current provider. +This refreshes the session metadata. +Your existing container keeps serving traffic until the new image is ready. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md b/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md new file mode 100644 index 00000000000..c7fc4c1898f --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md @@ -0,0 +1,279 @@ +# Messaging Channels + +Telegram, Discord, Slack, WeChat, and WhatsApp reach your OpenClaw or Hermes agent through OpenShell-managed processes and gateway constructs. +For token-based channels, NemoClaw registers credentials with OpenShell providers. +WeChat captures a token through a host-side QR scan during onboarding. +WhatsApp pairs inside the sandbox via QR scan and intentionally stores mutable session state there. +NemoClaw bakes the selected channel configuration into the sandbox image and keeps runtime delivery under OpenShell control. + +**Experimental Channels:** + +WeChat and WhatsApp are experimental. +Both rely on QR-based pairing flows that are more fragile than token-based bots, and the upstream client libraries can change behavior without notice. +Interfaces, defaults, and supported features may change, and these channels are not recommended for production use. + +You can enable channels during `nemoclaw onboard` or add them later with host-side `nemoclaw channels` commands. +Do not run agent-specific channel mutation commands such as `openclaw channels add` or `openclaw channels remove` inside the sandbox because NemoClaw generates `/sandbox/.openclaw/openclaw.json` for OpenClaw and `/sandbox/.hermes/.env` for Hermes at image build time, and changes inside the running container do not persist across rebuilds. + +`nemoclaw tunnel start` does not start Telegram, Discord, Slack, or other chat bridges. +It only starts optional host services such as the cloudflared tunnel when that binary is present. (`nemoclaw start` is kept as a deprecated alias.) +For details, refer to Commands (use the `nemoclaw-user-reference` skill). + +## Prerequisites + +- A machine where you can run `nemoclaw onboard` (local or remote host that runs the gateway and sandbox). +- A token for each token-based messaging platform you want to enable, a personal WeChat account on your phone for the host-side QR scan during onboarding, or a phone you can use to scan the QR code for WhatsApp pairing. +- A network policy preset for each enabled channel, or equivalent custom egress rules. + +## Channel Requirements + +| Channel | Required tokens | Optional settings | +|---------|-----------------|-------------------| +| Telegram | `TELEGRAM_BOT_TOKEN` | `TELEGRAM_ALLOWED_IDS` for DM allowlisting, `TELEGRAM_REQUIRE_MENTION` for group-chat replies | +| Discord | `DISCORD_BOT_TOKEN` | `DISCORD_SERVER_ID`, `DISCORD_USER_ID`, `DISCORD_REQUIRE_MENTION` | +| Slack | `SLACK_BOT_TOKEN`, `SLACK_APP_TOKEN` | `SLACK_ALLOWED_USERS` for DM and channel `@mention` user allowlisting, `SLACK_ALLOWED_CHANNELS` for channel ID allowlisting | +| WeChat (experimental) | None. Captured via host-side QR scan during `nemoclaw onboard` | `WECHAT_ALLOWED_IDS` for DM allowlisting | +| WhatsApp (experimental) | None. Pair via QR after rebuild | None | + +Telegram uses a bot token from [BotFather](https://t.me/BotFather). +Open Telegram, send `/newbot` to [@BotFather](https://t.me/BotFather), follow the prompts, and copy the token. +For Telegram group chats, disable privacy mode before testing group replies: in @BotFather, run `/setprivacy`, choose the bot, then choose **Disable**. +After changing privacy mode, remove the bot from each Telegram group and add it back so Telegram applies the new delivery setting to that group. +`TELEGRAM_ALLOWED_IDS` is a comma-separated list of Telegram user IDs for DM access. +Group chats stay open by default so rebuilt sandboxes do not silently drop Telegram group messages because of an empty group allowlist. +Set `TELEGRAM_REQUIRE_MENTION=1` to make the bot reply in Telegram groups only when users mention it. +Pairing and `TELEGRAM_ALLOWED_IDS` still govern direct messages. + +Discord uses a bot token from the Discord Developer Portal. +For server channels, enable Developer Mode in Discord, right-click the server, and copy the Server ID into `DISCORD_SERVER_ID`. +By default, NemoClaw configures the bot to reply only when mentioned. +Set `DISCORD_REQUIRE_MENTION=0` if you want it to reply to all messages in the configured server. +Set `DISCORD_USER_ID` to restrict access to one user; otherwise, any member of the configured server can message the bot. + +Slack uses Socket Mode and requires two tokens. +Use `SLACK_BOT_TOKEN` for the bot user OAuth token (`xoxb-...`) and `SLACK_APP_TOKEN` for the app-level Socket Mode token (`xapp-...`). +Set `SLACK_ALLOWED_USERS` to comma-separated Slack member IDs to authorize those users for DMs and for channel `@mention` events in channels where the Slack app is present. +Set `SLACK_ALLOWED_CHANNELS` to comma-separated Slack channel IDs to restrict channel `@mention` handling to those channels. +When both Slack allowlists are set, NemoClaw requires the mention to come from one of the allowed channels and one of the allowed members. +Channel messages still require an explicit bot mention. + +WeChat (experimental) delivers messages over Tencent's iLink gateway via the upstream `@tencent-weixin/openclaw-weixin` plugin baked into the sandbox base image and the built-in Hermes iLink WeChat adapter. +The supported mode in this release is **personal WeChat** (`bot_type=3`). +WeChat Official Account and WeCom/Enterprise WeChat are not wired up. + +Because the bot token only exists after a successful iLink QR handshake, NemoClaw runs the QR login on the host during `nemoclaw onboard`. +You scan the QR with WeChat on your phone (Discover → Scan), confirm the login, and NemoClaw captures the token, `accountId`, `baseUrl`, and `userId` from the iLink response. +NemoClaw registers the token as the `-wechat-bridge` OpenShell provider and substitutes the `openshell:resolve:env:WECHAT_BOT_TOKEN` placeholder for it inside the sandbox, so the token never lands in the image or on disk inside the running container. +The non-secret per-account metadata (`WECHAT_ACCOUNT_ID`, `WECHAT_BASE_URL`, `WECHAT_USER_ID`) is baked into the sandbox image so the in-sandbox bridge can pre-seed the per-account context tokens without re-running the QR handshake. + +WeChat is DM-only (`allowIdsMode: "dm"`). +NemoClaw adds the operator who scanned the QR to `WECHAT_ALLOWED_IDS` automatically, and you can append more comma-separated WeChat user IDs through the same env var. +You can silence the host-side `[wechat]` diagnostic lines (poll status, IDC redirects, swallowed gateway errors) by exporting `NEMOCLAW_WECHAT_QUIET=1` once the flow is stable in your environment. + +Tencent's iLink gateway is a third-party service. +Review your organization's terms-of-service, compliance, and data-residency constraints before enabling WeChat. + +WhatsApp (experimental) Web does not use a host-side token or OpenShell credential provider. +NemoClaw advertises WhatsApp for both OpenClaw and Hermes sandboxes, and each agent completes pairing with its own in-sandbox command. +Pairing happens inside the sandbox after the rebuild completes and creates mutable session credentials there. +Run `openshell term` and then use the agent-specific pairing command to render the QR code in the terminal: + +```console +$ openclaw channels login --channel whatsapp # OpenClaw sandboxes +$ hermes whatsapp # Hermes sandboxes +``` + +Session credentials are generated and stored inside durable agent state (`whatsapp` for OpenClaw, `platforms/whatsapp` for Hermes), so they survive rebuilds without re-pairing. +This is the runtime tradeoff of enabling WhatsApp without a host bridge: a paired sandbox can use that WhatsApp account until you unpair it or clear the durable state. +NemoClaw cannot detect cross-sandbox WhatsApp conflicts the way it does for token-based channels. +Pair only one sandbox per WhatsApp account at a time. + +## Enable Channels During Onboarding + +When the wizard reaches **Messaging channels**, it lists Telegram, Discord, Slack, WeChat, and WhatsApp. +Press a channel number to toggle it on or off, then press **Enter** when done. +If a token-based channel token is not already in the environment or credential store, the wizard prompts for it and saves it. + +If you enable WeChat (experimental), the wizard does not prompt for a paste token. +Instead, it renders a QR code in your terminal, polls Tencent's iLink gateway, and captures the bot token after you scan the QR with WeChat on your phone. +The login has an eight-minute deadline, refreshes the QR up to three times on expiry, and follows iLink's IDC redirects automatically. +Keep the terminal in the foreground until you see `✓ WeChat login confirmed`. + +WhatsApp (experimental) uses QR pairing instead of a host-side token, so the wizard does not prompt. +It prints pairing instructions and you complete the pairing inside the sandbox after rebuild. +NemoClaw also selects the matching network policy preset during policy setup so the channel can reach its provider API. + +For scripted setup, export the credentials and optional settings for the channels you want to enable before you run onboarding: + +```console +$ export TELEGRAM_BOT_TOKEN= +$ export TELEGRAM_REQUIRE_MENTION=1 +$ export DISCORD_BOT_TOKEN= +$ export DISCORD_SERVER_ID= +$ export SLACK_BOT_TOKEN= +$ export SLACK_APP_TOKEN= +$ export SLACK_ALLOWED_USERS= +$ export SLACK_ALLOWED_CHANNELS= +``` + +This release does not support non-interactive WeChat configuration because the iLink QR handshake requires a human to scan the QR on a paired phone. +Run `nemoclaw onboard` interactively when you want to enable WeChat. + +Then run onboarding: + +```console +$ nemoclaw onboard +``` + +Complete the rest of the wizard so the blueprint can create OpenShell providers where needed (for example `-telegram-bridge` or `-wechat-bridge`), bake channel configuration into the image (`NEMOCLAW_MESSAGING_CHANNELS_B64`), and start the sandbox. + +## Add Channels After Onboarding + +Run channel commands from the host, not from inside the sandbox. +Use `channels list` to see the supported channel names: + +```console +$ nemoclaw my-assistant channels list +``` + +Add the channel you want: + +```console +$ nemoclaw my-assistant channels add telegram +$ nemoclaw my-assistant channels add discord +$ nemoclaw my-assistant channels add slack +$ nemoclaw my-assistant channels add wechat +$ nemoclaw my-assistant channels add whatsapp +``` + +`channels add` collects whatever each channel needs. +It prompts for Telegram, Discord, and Slack tokens, runs an interactive host-side QR scan for WeChat, and collects nothing for WhatsApp because pairing happens in-sandbox after rebuild. +It registers bridge providers with the OpenShell gateway when tokens were captured, records the channel in the sandbox registry, and asks whether to rebuild immediately. +The command accepts mixed-case input such as `Telegram`, then stores and prints the canonical lowercase channel name. +If a matching built-in network policy preset exists, `channels add` applies it to the sandbox automatically before the rebuild so the bridge has egress to its upstream API. +If applying the preset fails, NemoClaw warns and tells you to re-apply manually with `nemoclaw policy-add ` after the rebuild. +Choose the rebuild so the running sandbox image picks up the new channel. +If you need optional channel settings such as `TELEGRAM_ALLOWED_IDS`, `TELEGRAM_REQUIRE_MENTION`, `DISCORD_SERVER_ID`, `DISCORD_USER_ID`, `DISCORD_REQUIRE_MENTION`, `SLACK_ALLOWED_USERS`, or `SLACK_ALLOWED_CHANNELS`, export them before the rebuild starts. +If you defer the rebuild, apply the change later: + +```console +$ nemoclaw my-assistant rebuild +``` + +In non-interactive mode, set the required environment variables before running `channels add`. +Missing credentials fail fast, and the command queues the change for a manual rebuild: + +```console +$ NEMOCLAW_NON_INTERACTIVE=1 TELEGRAM_BOT_TOKEN= \ + nemoclaw my-assistant channels add telegram +$ nemoclaw my-assistant rebuild +``` + +For Discord server access after onboarding, include the server settings when you add the channel and rebuild: + +```console +$ DISCORD_BOT_TOKEN= \ + DISCORD_SERVER_ID= \ + DISCORD_REQUIRE_MENTION=1 \ + nemoclaw my-assistant channels add discord +``` + +### `channels add wechat` + +`channels add wechat` (experimental) follows the same shape as the other channels with two differences driven by the iLink QR handshake. + +First, the command does not prompt for a paste token. +Instead, it renders a QR code in your terminal, polls Tencent's iLink gateway, and captures both the bot token and the per-account metadata (`accountId`, `baseUrl`, `userId`) once you scan the QR with WeChat on your phone (Discover → Scan). +The login has an eight-minute deadline and refreshes the QR up to three times on expiry. +Keep the terminal in the foreground until you see `✓ WeChat login confirmed`. + +Second, the command requires an interactive terminal. +Non-interactive mode (`NEMOCLAW_NON_INTERACTIVE=1`) fails fast with a clear error because the QR handshake needs a paired phone. + +```console +$ nemoclaw my-assistant channels add wechat +``` + +If `WECHAT_BOT_TOKEN` is already cached for this sandbox (the operator onboarded with WeChat earlier), `channels add wechat` reuses the cached token and skips the QR scan to keep the upstream plugin's existing iLink session intact. +Re-running QR would invalidate that session. +Use `channels remove wechat` first if you intend to acquire a fresh account. + +## Rotate or Remove Credentials + +Running `channels add` for a channel that is already configured overwrites the stored tokens and registers the updated bridge provider. +For WeChat the cached-token short-circuit applies. +See [`channels add wechat`](#channels-add-wechat) for how to acquire a fresh account. +Rebuild the sandbox after the update so the image reflects the current channel set. + +To remove a channel and clear its stored credentials, run: + +```console +$ nemoclaw my-assistant channels remove telegram +$ nemoclaw my-assistant channels remove wechat +``` + +`channels remove wechat` clears the bot token, deletes the `-wechat-bridge` OpenShell provider, and drops `wechat` from the sandbox's enabled-channel set. +The next rebuild produces an image without the WeChat channel block in `openclaw.json` and without the per-account state files under `/sandbox/.openclaw/openclaw-weixin/`. + +For in-sandbox QR-paired channels (today: WhatsApp), `channels remove` destructively clears the in-sandbox session directory before the rebuild so the next rebuild does not restore stale auth files and reconnect the channel. +The cleanup targets `/sandbox/.openclaw//` for OpenClaw and `/sandbox/.hermes/platforms//` for Hermes. +The cleanup tries `openshell sandbox exec` and falls back to SSH if that does not produce the success sentinel. +If neither transport can reach a running sandbox for a QR-paired channel, the command exits non-zero and asks you to start the sandbox and re-run. +NemoClaw deliberately leaves the registry, policy preset, and `session.policyPresets` unchanged on that failure path, so a follow-up re-run completes the removal cleanly. + +`channels remove whatsapp` clears the client-side Baileys session inside the sandbox; it cannot deregister the linked device with WhatsApp's servers because that requires an active Baileys connection to issue the logout RPC, which we no longer have once the session files are gone. +The phone account will continue to list the sandbox as a Linked Device until you remove it manually from your phone (Settings → Linked Devices → tap the entry → Log out) or until WhatsApp's 14-day inactivity timeout expires. +Removing the entry from the phone is recommended if you plan to re-pair the same phone with a different sandbox. + +Use `channels stop` when you want to pause a bridge without deleting credentials: + +```console +$ nemoclaw my-assistant channels stop telegram +$ nemoclaw my-assistant channels start telegram + +$ nemoclaw my-assistant channels stop wechat +$ nemoclaw my-assistant channels start wechat +``` + +For WeChat specifically, `channels stop wechat` followed by a rebuild keeps the per-account state files under `/sandbox/.openclaw/openclaw-weixin/accounts/` intact even though the bridge is no longer wired up in `openclaw.json`. +A subsequent `channels start wechat` plus rebuild revives the bridge against the same iLink account without a fresh QR scan. +The bot token is held by the OpenShell provider across the stop/start cycle. + +Telegram, Discord, Slack, and WeChat each allow only one active consumer per channel credential. +Multiple sandboxes can use the same channel type at the same time when each sandbox uses a distinct bot/app token (or a distinct WeChat iLink bot account). +For example, two Telegram sandboxes can DM the same `TELEGRAM_ALLOWED_IDS` account as long as they use different `TELEGRAM_BOT_TOKEN` values. +For WeChat, each sandbox must own a distinct iLink `accountId` (bot identity). +Running two sandboxes against the same WeChat account causes one of them to lose messages. +If you enable a messaging channel and another sandbox already uses the same token, onboarding prompts you to confirm before continuing in interactive mode and exits non-zero in non-interactive mode. +If NemoClaw only has legacy channel metadata and cannot compare credential hashes, it keeps the conservative warning. +Re-run `channels add ` with the intended token to refresh the stored non-secret hash. +`nemoclaw status` reports cross-sandbox overlaps so you can resolve duplicates before messages start dropping. + +## Stop Messaging Delivery + +Use `channels stop` when you want to pause one bridge and keep the sandbox running. +Use `nemoclaw tunnel stop` or its deprecated alias `nemoclaw stop` when you want to stop host auxiliary services and also ask NemoClaw to stop the OpenClaw gateway inside the selected sandbox. +Stopping the in-sandbox gateway stops Telegram, Discord, Slack, WeChat, and WhatsApp polling for that sandbox until you restart the sandbox or gateway. + +## Confirm Delivery + +After the sandbox is running, send a message to the configured bot or app. +If delivery fails, use `openshell term` on the host, check gateway logs, and verify network policy allows the channel API. +Use the matching policy preset (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`) or review Common Integration Policy Examples (use the `nemoclaw-user-manage-policy` skill). + +## Tunnel Command + +When the host has `cloudflared`, `nemoclaw tunnel start` starts a cloudflared tunnel that can expose the dashboard with a public URL. +Set `CLOUDFLARE_TUNNEL_TOKEN` before running the command when you want to use a Cloudflare named tunnel instead of a generated quick-tunnel URL. +`nemoclaw tunnel stop` stops the tunnel and asks NemoClaw to stop the in-sandbox gateway for the selected or default sandbox. +The older `nemoclaw start` still works as a deprecated alias. + +```console +$ nemoclaw tunnel start +``` + +## Related Topics + +- Deploy NemoClaw to a Remote GPU Instance (use the `nemoclaw-user-deploy-remote` skill) for remote deployment with messaging. +- Architecture (use the `nemoclaw-user-reference` skill) for how providers, the gateway, and the sandbox fit together. +- Commands (use the `nemoclaw-user-reference` skill) for `channels add`, `channels remove`, `channels start`, `channels stop`, `tunnel start`, `tunnel stop`, and `status`. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md b/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md new file mode 100644 index 00000000000..5f0e37085d4 --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md @@ -0,0 +1,39 @@ +# Runtime Controls and Sandbox Mutability + +This page explains which parts of a running NemoClaw sandbox can change immediately and which changes require a rebuild or re-onboard. + +## What you can change at runtime + +NemoClaw applies its security posture in three layers — what is baked into the sandbox image at onboard, what is hot-reloadable on the running sandbox, and what requires a rebuild or re-onboard. +The table below maps each commonly changed item to the layer that owns it and the command that changes it. + +| Item | When the change takes effect | How to change it | +|---|---|---| +| Inference provider (cloud, NVIDIA Endpoints, local Ollama / vLLM, compatible-endpoint, …) | Rebuild required (`openclaw.json` is locked at sandbox creation) | `nemoclaw rebuild` after picking a different provider via `nemoclaw inference set` | +| Inference model on the current provider | Rebuild required for OpenClaw; hot-reloadable for managed routers | `nemoclaw rebuild` (OpenClaw) or `nemoclaw inference set` (router-based) | +| Sub-agent (Hermes / OpenClaw / …) | Re-onboard required (the sub-agent and its workspace are baked at onboard) | `nemoclaw onboard --recreate-sandbox` | +| Network policy preset (slack, discord, telegram, brave, …) | Runtime — applies on the next request; rebuild only required if the preset adds bind-mounted secrets | `nemoclaw policy-add ` / `policy-remove ` | +| Network allow-list (custom hosts) | Runtime — picks up at next request | `openshell policy set` or interactive approval prompt at the gateway | +| Channel tokens (Slack / Discord / Telegram bot credentials) | Rebuild required (tokens are baked into the sandbox image at onboard so they never leave the host clear-text) | `nemoclaw channels add ` then accept the rebuild prompt | +| Channel enable/disable (turn a configured channel off without removing the token) | Rebuild required (`openclaw.json` is the source of truth at runtime, see #3453) | `nemoclaw channels stop ` then rebuild | +| Dashboard forward port | Runtime — port is re-resolved on next `connect` | `NEMOCLAW_DASHBOARD_PORT= nemoclaw connect` | +| Dashboard bind address (loopback vs all interfaces) | Runtime — applies on next `connect` | `NEMOCLAW_DASHBOARD_BIND=0.0.0.0 nemoclaw connect` (see #3259) | +| Web search backend (Brave, Tavily, etc.) | Runtime via `web.backend` config flag; rebuild only if `web.fetchEnabled` flips | `nemoclaw config set --key web.backend --value tavily` | +| Filesystem layout (Landlock zones, read-only mounts, container caps) | **Locked at creation** — no runtime change | Re-onboard with `nemoclaw onboard --recreate-sandbox` | +| Sandbox name | **Locked at creation** | Re-onboard with a different `--name` | +| GPU passthrough enable / device selector | **Locked at creation** | Re-onboard with `--gpu` / `--sandbox-gpu-device` | +| Agents allow-list (`agents.list` in `openclaw.json`) | Runtime — hot-reloaded by OpenClaw on config change | Prefer agent or NemoClaw commands that keep host and sandbox state aligned | +| `openclaw.json` keys (general — model, agents.list, web.backend, channel config, etc.) | Mixed. Individual keys still follow the rebuild rules in the rows above, such as provider switch requiring rebuild even after editing the JSON. | Prefer NemoClaw host commands so the host registry and rebuilt image stay aligned | + +If a row above conflicts with what you observe, the runtime source of truth inside the sandbox is `/opt/nemoclaw/openclaw.json`; the host registry caches metadata but the image and OpenClaw read from the in-sandbox file. + +## See also + +The mutability table above is a consolidated index of information that lives in more detail on per-topic pages: + +- [Manage Sandbox Lifecycle](../SKILL.md) — full rebuild / re-onboard / upgrade workflow. +- Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) — the rebuild path for provider and model changes. +- Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) and Approve Network Requests (use the `nemoclaw-user-manage-policy` skill) — runtime policy editing and operator approval flow. +- Security Best Practices (use the `nemoclaw-user-configure-security` skill) — the per-attack-surface posture table that this page complements. +- OpenClaw Security Controls (use the `nemoclaw-user-configure-security` skill) — application-layer controls that operate independently of NemoClaw. +- CLI Commands Reference (use the `nemoclaw-user-reference` skill) — full flag surface for every `nemoclaw` command, including the env vars that affect runtime behavior. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md b/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md new file mode 100644 index 00000000000..9b25555a2df --- /dev/null +++ b/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md @@ -0,0 +1,103 @@ +# Workspace Files + +OpenClaw stores its personality, user context, and behavioral configuration in a set of Markdown files inside the sandbox. +These files live at `/sandbox/.openclaw/workspace/` and are collectively called **workspace files**. + +## File Reference + +| File | Purpose | +|---|---| +| `SOUL.md` | Defines the agent's persona, tone, and communication style. | +| `USER.md` | Stores information about the human the agent assists. | +| `IDENTITY.md` | Short identity card — name, language, emoji, creature type. | +| `AGENTS.md` | Behavioral rules, memory conventions, safety guidelines, and session workflow. | +| `MEMORY.md` | Curated long-term memory distilled from daily notes. | +| `memory/` | Directory of daily note files (`YYYY-MM-DD.md`) for session continuity. | + +## Where They Live + +All workspace files reside inside the sandbox filesystem: + +```text +/sandbox/.openclaw/workspace/ +├── AGENTS.md +├── IDENTITY.md +├── MEMORY.md +├── SOUL.md +├── USER.md +└── memory/ + ├── 2026-03-18.md + └── 2026-03-19.md +``` + +## Multi-Agent Deployments + +A single NemoClaw sandbox can host more than one OpenClaw agent. +When OpenClaw is configured with multiple named agents (e.g., a shared `main` agent +plus per-user agents for a Teams-integrated deployment), each agent gets its own +workspace directory alongside the default `workspace/`: + +```text +/sandbox/.openclaw/ +├── workspace/ # default agent (single-agent deployments) +├── workspace-main/ # named agent "main" +├── workspace-support/ # named agent "support" +└── workspace-ops/ # named agent "ops" +``` + +Each per-agent workspace contains the same Markdown file structure as the default +(`SOUL.md`, `USER.md`, `IDENTITY.md`, `AGENTS.md`, `MEMORY.md`, `memory/`). +Files are per-agent — changes in `workspace-main/AGENTS.md` are not visible to +`workspace-support/`. + +Persistence and snapshots are handled automatically for per-agent workspaces: +the sandbox entrypoint provisions each `workspace-/` directly under the +writable `.openclaw/` tree so state survives sandbox restart, and +`nemoclaw snapshot create` discovers every `workspace-/` directory +and includes it in the snapshot bundle alongside the default `workspace/`. + +**Note:** + +Files that operators typically want consistent across every agent workspace +(`AGENTS.md`, shared skills, common templates) are not synced automatically. +Each workspace is independent; changes in one don't propagate. Tracking +shared-file tooling (shared mount, `workspaces list` command) in +[#1260](https://github.com/NVIDIA/NemoClaw/issues/1260). + +## Persistence Behavior + +Workspace files live in the sandbox's persistent state volume, not in the container image. +This means they survive normal container restarts, but they are deleted when you destroy the sandbox. + +### Preserved During Restart, Rebuild, and Upgrade + +Sandbox restarts preserve workspace files because the persistent state volume outlives individual container restarts. + +The `nemoclaw rebuild` command and the sandbox upgrade flow also preserve workspace state. +Before replacing the container, NemoClaw snapshots the workspace state directories and restores them into the rebuilt sandbox. +If NemoClaw cannot archive any requested state file or directory, it reports the backup failure and stops before replacing the sandbox. +It does not continue with a partial backup. + +### Deleted During Sandbox Destroy + +Running `nemoclaw destroy` deletes the sandbox and its persistent state volume. +Workspace files are removed from the sandbox unless you created a snapshot or backup first. + +**Warning:** + +Back up your workspace files before running `nemoclaw destroy`. +See [Backup and Restore](backup-restore.md) for instructions. + +## Editing Workspace Files + +The agent reads these files at the start of every session. +You can edit them in two ways: + +1. Ask your agent to update its persona, memory, or user context. +2. Use `nemoclaw connect` to open a terminal inside the sandbox and edit files directly, or use `openshell sandbox upload` to push edited files from your host. + +## Next Steps + +- Set Up Task-Specific Sub-Agents (use the `nemoclaw-user-configure-inference` skill) +- [Backup and Restore workspace files](backup-restore.md) +- Commands reference (use the `nemoclaw-user-reference` skill) diff --git a/skills/nemoclaw-user-monitor-sandbox/SKILL.md b/skills/nemoclaw-user-monitor-sandbox/SKILL.md new file mode 100644 index 00000000000..de5ea1de444 --- /dev/null +++ b/skills/nemoclaw-user-monitor-sandbox/SKILL.md @@ -0,0 +1,89 @@ +--- +name: "nemoclaw-user-monitor-sandbox" +description: "Inspects sandbox health, traces agent behavior, and diagnoses problems. Use when monitoring a running sandbox, debugging agent issues, or checking sandbox logs. Trigger keywords - monitor nemoclaw sandbox, debug nemoclaw agent issues." +license: "Apache-2.0" +--- +# Monitor Sandbox Activity and Debug Issues + +## Prerequisites + +- A running NemoClaw sandbox. +- The OpenShell CLI on your `PATH`. + +Use the NemoClaw status, logs, and TUI tools together to inspect sandbox health, trace agent behavior, and diagnose problems. + +## Check Sandbox Health + +Run the status command to view the sandbox state, gateway health, and active inference configuration: + +```console +$ nemoclaw status +``` + +For local Ollama and local vLLM routes, `nemoclaw status` also probes the host-side health endpoint directly. +This catches a stopped local backend before you retry `inference.local` from inside the sandbox. + +Key fields in the output include the following: + +- Sandbox details, which show the configured model, provider, GPU mode, and applied policy presets. +- Gateway and process health, which show whether NemoClaw can still reach the OpenShell gateway and whether the in-sandbox agent process is running. +- Inference health for local Ollama and local vLLM, which shows `healthy` or `unreachable` together with the probed local URL. +- NIM status, which shows whether a NIM container is running and healthy when that path is in use. + +Run `nemoclaw status` on the host to check sandbox state. +Use `openshell sandbox list` for the underlying sandbox details. + +## View Blueprint and Sandbox Logs + +Stream the most recent log output from the blueprint runner and sandbox: + +```console +$ nemoclaw logs +``` + +To follow the log output in real time: + +```console +$ nemoclaw logs --follow +``` + +## Monitor Network Activity in the TUI + +Open the OpenShell terminal UI for a live view of sandbox network activity and egress requests: + +```console +$ openshell term +``` + +For a remote sandbox, SSH to the instance and run `openshell term` there. + +The TUI shows the following information: + +- Active network connections from the sandbox. +- Blocked egress requests awaiting operator approval. +- Inference routing status. + +Refer to Approve or Deny Agent Network Requests (use the `nemoclaw-user-manage-policy` skill) for details on handling blocked requests. + +## Test Inference + +Run a test inference request to verify that the provider is responding: + +```console +$ nemoclaw my-assistant connect +$ openclaw agent --agent main -m "Test inference" --session-id debug +``` + +If the request fails, check the following: + +1. Run `nemoclaw status` to confirm the active provider and endpoint. + For local Ollama and local vLLM, check the `Inference` line first. + If it shows `unreachable`, restart the local backend before retrying from inside the sandbox. +2. Run `nemoclaw logs --follow` to view error messages from the blueprint runner. +3. Verify that the inference endpoint is reachable from the host. + +## Related Skills + +- `nemoclaw-user-reference` — Troubleshooting (use the `nemoclaw-user-reference` skill) for common issues and resolution steps +- `nemoclaw-user-manage-policy` — Approve or Deny Agent Network Requests (use the `nemoclaw-user-manage-policy` skill) for the operator approval flow +- `nemoclaw-user-configure-inference` — Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) to change the active provider diff --git a/skills/nemoclaw-user-monitor-sandbox/evals/evals.json b/skills/nemoclaw-user-monitor-sandbox/evals/evals.json new file mode 100644 index 00000000000..72aed43b0dc --- /dev/null +++ b/skills/nemoclaw-user-monitor-sandbox/evals/evals.json @@ -0,0 +1,44 @@ +[ + { + "id": "docs-monitoring-monitor-sandbox-activity-001", + "question": "I'm monitoring sandbox activity. Help me understand what the agent and sandbox are doing now so I can detect unhealthy or unexpected behavior early.", + "expected_skill": "nemoclaw-user-monitor-sandbox", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the agent and sandbox are doing now and gives enough concrete guidance, decision criteria, verification steps, or risk framing to detect unhealthy or unexpected behavior early.", + "expected_behavior": [ + "The output directly addresses the user's situation: monitoring sandbox activity.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand what the agent and sandbox are doing now with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to detect unhealthy or unexpected behavior early.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-monitoring-monitor-sandbox-activity-002", + "question": "I'm diagnosing a runtime failure. Help me use health, logs, and traces to locate the failing layer so I can separate host, gateway, sandbox, policy, and inference issues.", + "expected_skill": "nemoclaw-user-monitor-sandbox", + "ground_truth": "A NemoClaw-specific answer that helps the user use health, logs, and traces to locate the failing layer and gives enough concrete guidance, decision criteria, verification steps, or risk framing to separate host, gateway, sandbox, policy, and inference issues.", + "expected_behavior": [ + "The output directly addresses the user's situation: diagnosing a runtime failure.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user use health, logs, and traces to locate the failing layer with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to separate host, gateway, sandbox, policy, and inference issues.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-monitoring-monitor-sandbox-activity-003", + "question": "I'm collecting debugging evidence. Help me gather enough information without weakening controls so I can investigate safely and share useful diagnostics.", + "expected_skill": "nemoclaw-user-monitor-sandbox", + "ground_truth": "A NemoClaw-specific answer that helps the user gather enough information without weakening controls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to investigate safely and share useful diagnostics.", + "expected_behavior": [ + "The output directly addresses the user's situation: collecting debugging evidence.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user gather enough information without weakening controls with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to investigate safely and share useful diagnostics.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + } +] diff --git a/skills/nemoclaw-user-overview/SKILL.md b/skills/nemoclaw-user-overview/SKILL.md new file mode 100644 index 00000000000..d78c71f291e --- /dev/null +++ b/skills/nemoclaw-user-overview/SKILL.md @@ -0,0 +1,13 @@ +--- +name: "nemoclaw-user-overview" +description: "Explains how OpenClaw, OpenShell, and NemoClaw form the ecosystem, NemoClaw's position in the stack, what NemoClaw adds beyond the community sandbox, and when to prefer NemoClaw versus integrating OpenShell and OpenClaw directly. Use when users ask about the relationship between OpenClaw, OpenShell, and NemoClaw, or when to use NemoClaw versus OpenShell. Trigger keywords - nemoclaw ecosystem, openclaw openshell, nemoclaw vs openshell, sandboxed openclaw, how nemoclaw works, nemoclaw sandbox lifecycle blueprint, nemoclaw overview, openclaw always-on assistants, nvidia openshell, nvidia nemotron, nemoclaw release notes, nemoclaw changelog." +license: "Apache-2.0" +--- +# Ecosystem + +## References + +- **Load [references/ecosystem.md](references/ecosystem.md)** when users ask about the relationship between OpenClaw, OpenShell, and NemoClaw, or when to use NemoClaw versus OpenShell. Explains how OpenClaw, OpenShell, and NemoClaw form the ecosystem, NemoClaw's position in the stack, what NemoClaw adds beyond the community sandbox, and when to prefer NemoClaw versus integrating OpenShell and OpenClaw directly. +- **Load [references/how-it-works.md](references/how-it-works.md)** for sandbox lifecycle and architecture mechanics; not for product definition (Overview) or multi-project placement (Ecosystem). Describes how NemoClaw works internally: CLI, plugin, blueprint runner, OpenShell orchestration, inference routing, and protection layers. +- **Load [references/overview.md](references/overview.md)** when users ask what NemoClaw is or what the project provides. For ecosystem placement or OpenShell-only paths, use the Ecosystem page; for internal mechanics, use How It Works. Explains what NemoClaw covers: onboarding, lifecycle management, and OpenClaw operations within OpenShell containers, plus capabilities and why it exists. +- **Load [references/release-notes.md](references/release-notes.md)** when users ask about recent changes, the release cadence, or where to track versioned assets on GitHub. Includes the NemoClaw release notes. diff --git a/skills/nemoclaw-user-overview/evals/evals.json b/skills/nemoclaw-user-overview/evals/evals.json new file mode 100644 index 00000000000..c87001a0d8e --- /dev/null +++ b/skills/nemoclaw-user-overview/evals/evals.json @@ -0,0 +1,212 @@ +[ + { + "id": "docs-index-001", + "question": "I'm first arriving at the NemoClaw docs. Help me understand what NemoClaw helps me run and why it exists so I can decide whether it is worth installing before I spend time on setup.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what NemoClaw helps me run and why it exists and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether it is worth installing before I spend time on setup.", + "expected_behavior": [ + "The output directly addresses the user's situation: first arriving at the NemoClaw docs.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user understand what NemoClaw helps me run and why it exists with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether it is worth installing before I spend time on setup.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-index-002", + "question": "I'm evaluating whether an always-on assistant can run safely in my environment. Help me see the core safety, lifecycle, and inference-routing promises up front so I can judge whether the stack matches my risk tolerance.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user see the core safety, lifecycle, and inference-routing promises up front and gives enough concrete guidance, decision criteria, verification steps, or risk framing to judge whether the stack matches my risk tolerance.", + "expected_behavior": [ + "The output directly addresses the user's situation: evaluating whether an always-on assistant can run safely in my environment.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user see the core safety, lifecycle, and inference-routing promises up front with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to judge whether the stack matches my risk tolerance.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-index-003", + "question": "I'm considering the one-command install path. Help me know what the command will install, configure, and launch so I can take the next step without feeling like I am accepting an opaque shortcut.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user know what the command will install, configure, and launch and gives enough concrete guidance, decision criteria, verification steps, or risk framing to take the next step without feeling like I am accepting an opaque shortcut.", + "expected_behavior": [ + "The output directly addresses the user's situation: considering the one-command install path.", + "The AI coding assistant loads the expected_skill and SKILL.md", + "The output helps the user know what the command will install, configure, and launch with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to take the next step without feeling like I am accepting an opaque shortcut.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." + ] + }, + { + "id": "docs-about-overview-001", + "question": "I'm explaining NemoClaw to a teammate. Help me summarize the product, stack, and value in plain language so I can align on whether NemoClaw is relevant to our agent workflow.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user summarize the product, stack, and value in plain language and gives enough concrete guidance, decision criteria, verification steps, or risk framing to align on whether NemoClaw is relevant to our agent workflow.", + "expected_behavior": [ + "The output directly addresses the user's situation: explaining NemoClaw to a teammate.", + "The AI coding assistant loads the expected_skill and references/overview.md", + "The output helps the user summarize the product, stack, and value in plain language with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to align on whether NemoClaw is relevant to our agent workflow.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." + ] + }, + { + "id": "docs-about-overview-002", + "question": "I'm worried about security, cost, or operations risks from unattended agents. Help me understand which guardrails NemoClaw adds so I can decide whether sandboxed execution addresses my main concerns.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user understand which guardrails NemoClaw adds and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether sandboxed execution addresses my main concerns.", + "expected_behavior": [ + "The output directly addresses the user's situation: worried about security, cost, or operations risks from unattended agents.", + "The AI coding assistant loads the expected_skill and references/overview.md", + "The output helps the user understand which guardrails NemoClaw adds with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether sandboxed execution addresses my main concerns.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." + ] + }, + { + "id": "docs-about-overview-003", + "question": "I'm comparing NemoClaw with direct OpenClaw or OpenShell usage. Help me see the capabilities NemoClaw owns so I can classify it as the right reference stack rather than generic setup glue.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user see the capabilities NemoClaw owns and gives enough concrete guidance, decision criteria, verification steps, or risk framing to classify it as the right reference stack rather than generic setup glue.", + "expected_behavior": [ + "The output directly addresses the user's situation: comparing NemoClaw with direct OpenClaw or OpenShell usage.", + "The AI coding assistant loads the expected_skill and references/overview.md", + "The output helps the user see the capabilities NemoClaw owns with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to classify it as the right reference stack rather than generic setup glue.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." + ] + }, + { + "id": "docs-about-ecosystem-001", + "question": "I'm comparing OpenClaw, OpenShell, and NemoClaw. Help me understand the role of each layer so I can choose the right adoption path for my project.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user understand the role of each layer and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose the right adoption path for my project.", + "expected_behavior": [ + "The output directly addresses the user's situation: comparing OpenClaw, OpenShell, and NemoClaw.", + "The AI coding assistant loads the expected_skill and references/ecosystem.md", + "The output helps the user understand the role of each layer with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose the right adoption path for my project.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." + ] + }, + { + "id": "docs-about-ecosystem-002", + "question": "I'm deciding whether to use the reference integration. Help me identify when NemoClaw is enough versus when I need direct OpenShell integration so I can avoid unnecessary platform work.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user identify when NemoClaw is enough versus when I need direct OpenShell integration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid unnecessary platform work.", + "expected_behavior": [ + "The output directly addresses the user's situation: deciding whether to use the reference integration.", + "The AI coding assistant loads the expected_skill and references/ecosystem.md", + "The output helps the user identify when NemoClaw is enough versus when I need direct OpenShell integration with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid unnecessary platform work.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." + ] + }, + { + "id": "docs-about-ecosystem-003", + "question": "I'm planning a deployment with multiple moving parts. Help me separate agent, runtime, and orchestration responsibilities so I can assign ownership and troubleshoot the right layer later.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user separate agent, runtime, and orchestration responsibilities and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assign ownership and troubleshoot the right layer later.", + "expected_behavior": [ + "The output directly addresses the user's situation: planning a deployment with multiple moving parts.", + "The AI coding assistant loads the expected_skill and references/ecosystem.md", + "The output helps the user separate agent, runtime, and orchestration responsibilities with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assign ownership and troubleshoot the right layer later.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." + ] + }, + { + "id": "docs-about-how-it-works-001", + "question": "I'm studying the NemoClaw architecture. Help me understand how the CLI, plugin, blueprint, and sandbox interact so I can reason about failures and maintenance work with confidence.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user understand how the CLI, plugin, blueprint, and sandbox interact and gives enough concrete guidance, decision criteria, verification steps, or risk framing to reason about failures and maintenance work with confidence.", + "expected_behavior": [ + "The output directly addresses the user's situation: studying the NemoClaw architecture.", + "The AI coding assistant loads the expected_skill and references/how-it-works.md", + "The output helps the user understand how the CLI, plugin, blueprint, and sandbox interact with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to reason about failures and maintenance work with confidence.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." + ] + }, + { + "id": "docs-about-how-it-works-002", + "question": "I'm debugging a broken setup. Help me identify which lifecycle boundary owns the failure so I can fix the problem without changing unrelated layers.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user identify which lifecycle boundary owns the failure and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix the problem without changing unrelated layers.", + "expected_behavior": [ + "The output directly addresses the user's situation: debugging a broken setup.", + "The AI coding assistant loads the expected_skill and references/how-it-works.md", + "The output helps the user identify which lifecycle boundary owns the failure with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix the problem without changing unrelated layers.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." + ] + }, + { + "id": "docs-about-how-it-works-003", + "question": "I'm deciding whether blueprint-driven setup is repeatable enough. Help me see how versions, digests, and sandbox creation fit together so I can trust the process for team or fleet usage.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user see how versions, digests, and sandbox creation fit together and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the process for team or fleet usage.", + "expected_behavior": [ + "The output directly addresses the user's situation: deciding whether blueprint-driven setup is repeatable enough.", + "The AI coding assistant loads the expected_skill and references/how-it-works.md", + "The output helps the user see how versions, digests, and sandbox creation fit together with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the process for team or fleet usage.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." + ] + }, + { + "id": "docs-about-release-notes-001", + "question": "I'm reading NemoClaw release notes. Help me understand what changed since my installed version so I can assess upgrade risk before touching a working sandbox.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user understand what changed since my installed version and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assess upgrade risk before touching a working sandbox.", + "expected_behavior": [ + "The output directly addresses the user's situation: reading NemoClaw release notes.", + "The AI coding assistant loads the expected_skill and references/release-notes.md", + "The output helps the user understand what changed since my installed version with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assess upgrade risk before touching a working sandbox.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." + ] + }, + { + "id": "docs-about-release-notes-002", + "question": "I'm maintaining an existing sandbox. Help me spot compatibility notes, migrations, or behavior changes so I can decide whether to update now or wait.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user spot compatibility notes, migrations, or behavior changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether to update now or wait.", + "expected_behavior": [ + "The output directly addresses the user's situation: maintaining an existing sandbox.", + "The AI coding assistant loads the expected_skill and references/release-notes.md", + "The output helps the user spot compatibility notes, migrations, or behavior changes with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether to update now or wait.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." + ] + }, + { + "id": "docs-about-release-notes-003", + "question": "I'm evaluating NemoClaw for a longer-running assistant workflow. Help me see the pace and nature of recent changes so I can judge whether the project feels stable enough for my use case.", + "expected_skill": "nemoclaw-user-overview", + "ground_truth": "A NemoClaw-specific answer that helps the user see the pace and nature of recent changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to judge whether the project feels stable enough for my use case.", + "expected_behavior": [ + "The output directly addresses the user's situation: evaluating NemoClaw for a longer-running assistant workflow.", + "The AI coding assistant loads the expected_skill and references/release-notes.md", + "The output helps the user see the pace and nature of recent changes with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to judge whether the project feels stable enough for my use case.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." + ] + } +] diff --git a/skills/nemoclaw-user-overview/references/ecosystem.md b/skills/nemoclaw-user-overview/references/ecosystem.md new file mode 100644 index 00000000000..a409789a59c --- /dev/null +++ b/skills/nemoclaw-user-overview/references/ecosystem.md @@ -0,0 +1,92 @@ +# Ecosystem + +NemoClaw provides onboarding, lifecycle management, and OpenClaw operations within OpenShell containers. + +This page describes how the ecosystem is formed across projects, where NemoClaw sits relative to [OpenShell](https://github.com/NVIDIA/OpenShell) and [OpenClaw](https://openclaw.ai), and how to choose between NemoClaw and OpenShell. + +## How the Stack Fits Together + +There are three pieces that are put together in a NemoClaw deployment: OpenClaw, OpenShell, and NemoClaw, each with a distinct scope. +The following diagram shows how they fit together. + +```mermaid +flowchart TB + NC["🦞 NVIDIA NemoClaw
CLI, plugin, blueprint"] + OS["🐚 NVIDIA OpenShell
Gateway, policy, inference routing"] + OC["🦞 OpenClaw
Assistant in sandbox"] + + NC -->|orchestrates| OS + OS -->|isolates and runs| OC + + classDef nv fill:#76b900,stroke:#333,color:#fff + classDef nvLight fill:#e6f2cc,stroke:#76b900,color:#1a1a1a + classDef nvDark fill:#333,stroke:#76b900,color:#fff + + class NC nv + class OS nv + class OC nvDark + + linkStyle 0 stroke:#76b900,stroke-width:2px + linkStyle 1 stroke:#76b900,stroke-width:2px +``` + +NemoClaw sits above OpenShell in the operator workflow. +It drives OpenShell APIs and CLI to create and configure the sandbox that runs OpenClaw. +Models and endpoints sit behind OpenShell's inference routing. +NemoClaw onboarding wires provider choice into that routing. + +The following table shows the scope of each component in the stack. + +| Project | Scope | +|---------|--------| +| [OpenClaw](https://openclaw.ai) | The assistant: runtime, tools, memory, and behavior inside the container. It does not define the sandbox or the host gateway. | +| [OpenShell](https://github.com/NVIDIA/OpenShell) | The execution environment: sandbox lifecycle, network, filesystem, and process policy, inference routing, and the operator-facing `openshell` CLI for those primitives. | +| NemoClaw | The NVIDIA reference stack that implements the definition above on the host: `nemoclaw` CLI and plugin, versioned blueprint, channel messaging configured for OpenShell-managed delivery, and state migration helpers so OpenClaw runs inside OpenShell in a documented, repeatable way. | + +## NemoClaw Path versus OpenShell Path + +Both paths assume OpenShell can sandbox a workload. +The difference is who owns the integration work. + +| Path | What it means | +|------|---------------| +| **NemoClaw path** | You adopt the reference stack. NemoClaw's blueprint encodes a hardened image, default policies, and orchestration so `nemoclaw onboard` can stand up a known-good OpenClaw-on-OpenShell setup with less custom glue. | +| **OpenShell path** | You use OpenShell as the platform and supply your own container, install steps for OpenClaw, policy YAML, provider setup, and any host bridges. OpenShell stays the sandbox and policy engine; nothing requires NemoClaw's blueprint or CLI. | + +## What NemoClaw Adds Beyond the OpenShell Community Sandbox + +OpenShell ships a community sandbox for OpenClaw. +Running `openshell sandbox create --from openclaw` pulls that package, builds the image, applies the bundled policy, and starts a working sandbox. +This is a valid path, and it produces a running OpenClaw environment with OpenShell isolation. + +NemoClaw builds on that foundation with additional security hardening, automation, and lifecycle tooling. +The following table compares the two paths. + +| Capability | `openshell sandbox create --from openclaw` | `nemoclaw onboard` | +|---|---|---| +| Sandbox isolation | Yes. OpenShell applies seccomp filters, Landlock filesystem restrictions, privilege dropping, network namespace isolation, and no-new-privileges enforcement. The community sandbox bundles its own policy tailored for OpenClaw. | Yes. NemoClaw applies these through the blueprint and layers a more restrictive policy on top (see rows below). | +| Credential handling | OpenShell's provider system replaces real credentials with placeholder tokens in the sandbox environment. The L7 proxy resolves placeholders to real values at egress. You create providers manually with `openshell provider create`. | NemoClaw creates OpenShell providers automatically during onboarding. It also filters sensitive host environment variables (provider API keys, `DISCORD_BOT_TOKEN`, `SLACK_BOT_TOKEN`, `TELEGRAM_BOT_TOKEN`) from the sandbox creation command to prevent accidental leakage through build args. | +| Image hardening | The community image includes standard system tools for general-purpose use. | NemoClaw strips build toolchains (`gcc`, `g++`, `make`) and network probes (`netcat`) from the runtime image to reduce attack surface. | +| Filesystem policy | The community sandbox bundles a policy for OpenClaw. | NemoClaw defines a targeted read-only and read-write layout. System paths (`/usr`, `/lib`, `/etc`) are read-only. The agent's home directory (`/sandbox`) and config directory (`/sandbox/.openclaw`) are writable by default so the agent can manage config, install skills, and write to standard paths natively. | +| Inference setup | The community sandbox includes an `openclaw-start` script that runs OpenClaw's onboarding wizard inside the sandbox. You can also create providers and configure OpenShell inference routing manually from the host. | NemoClaw's onboarding wizard validates your credential from the host, lets you select a provider (NVIDIA Endpoints, OpenAI, Anthropic, Google Gemini, Ollama, and compatible endpoints), and configures OpenShell's inference routing automatically. Credentials stay on the host and are delivered through OpenShell's provider system. | +| Channel messaging | OpenShell provides the credential provider system and L7 proxy that delivers channel tokens securely (including path-based resolution for Telegram's `/bot/` URL pattern). You create providers and configure OpenClaw's channel settings manually. | NemoClaw automates channel setup during onboarding: it collects bot tokens, registers them as OpenShell providers, and bakes OpenClaw channel config with placeholder tokens that OpenShell's proxy resolves at egress. No separate bridge process runs on the host. | +| Blueprint versioning | No blueprint. The community sandbox uses whatever image version is currently published. | NemoClaw downloads the blueprint artifact, checks version compatibility, and verifies its digest before applying. Running `nemoclaw onboard` on different machines produces the same sandbox. | +| State migration | Not included. | NemoClaw migrates agent state across machines with credential stripping and integrity verification. | +| Process count limits | OpenShell applies seccomp and privilege dropping. You set process count limits manually with `--ulimit` or orchestrator config. | NemoClaw applies `ulimit -u 512` in the container entrypoint to cap the process count and mitigate fork-bomb attacks, on top of OpenShell's seccomp and privilege dropping. | + +## When to Use Which + +Use the following table to decide when to use NemoClaw versus OpenShell. + +| Situation | Prefer | +|-----------|--------| +| You want OpenClaw with minimal assembly, NVIDIA defaults, and the documented install and onboard flow. | NemoClaw | +| You need maximum flexibility for custom images, a layout that does not match the NemoClaw blueprint, or a workload outside this reference stack. | OpenShell with your own integration | +| You are standardizing on the NVIDIA reference for always-on assistants with policy and inference routing. | NemoClaw | +| You are building internal platform abstractions where the NemoClaw CLI or blueprint is not the right fit. | OpenShell (and your orchestration) | + +## Related topics + +- [Overview](overview.md) contains what NemoClaw is, capabilities, benefits, and use cases. +- [How It Works](how-it-works.md) describes how NemoClaw runs, plugin, blueprint, sandbox creation, routing, protection layers. +- Architecture (use the `nemoclaw-user-reference` skill) shows the repository structure and technical diagrams. diff --git a/skills/nemoclaw-user-overview/references/how-it-works.md b/skills/nemoclaw-user-overview/references/how-it-works.md new file mode 100644 index 00000000000..01c02704974 --- /dev/null +++ b/skills/nemoclaw-user-overview/references/how-it-works.md @@ -0,0 +1,102 @@ +# NemoClaw Architecture Overview + +This page explains how NemoClaw runs OpenClaw inside an OpenShell sandbox and how the gateway connects the agent to inference, integrations, and policy. + +NemoClaw does not replace OpenClaw or OpenShell. +It packages them into a repeatable setup with a host CLI, a versioned blueprint, default policies, inference setup, plugin configuration, and state helpers. +You can use that setup directly or adapt it for your own OpenShell integration. + +## High-Level Flow + +NemoClaw keeps the user workflow on the host while OpenShell enforces the sandbox boundary. +The gateway sits between NemoClaw control, the sandbox, inference providers, and external integrations. +That placement lets NemoClaw configure the environment without giving the agent direct access to host credentials or uncontrolled network egress. + +![NemoClaw High-Level Component Diagram](images/nemoclaw-highlevel-component-diagram.png) + +The diagram has the following components: + +| Component | Role in the flow | +|-------|------------------| +| Users and operators | Start from the CLI, installer, dashboard, or an end-user channel. | +| NemoClaw control | Collects configuration, runs onboarding, prepares the blueprint, and asks OpenShell to create or update resources. | +| OpenShell gateway | Owns sandbox lifecycle, networking, policy enforcement, inference routing, and integration egress. | +| NemoClaw sandbox | Runs OpenClaw with the NemoClaw plugin, the selected blueprint contents, and supporting tools. | +| Inference | Receives model requests through the gateway, using NVIDIA endpoints, NIM, or compatible APIs. | +| Integrations | Reach messaging services, MCP servers, GitHub, package indexes, or model hubs through gateway-managed egress. | +| State and artifacts | Store configuration, credentials, logs, workspace files, policies, and transcripts outside the running agent process. | + +For repository layout, file paths, and deeper diagrams, see Architecture (use the `nemoclaw-user-reference` skill). + +## Design Principles + +NemoClaw architecture follows the following principles. + +Thin plugin, versioned blueprint +: The sandbox plugin stays small and stable. Host-side orchestration uses a versioned blueprint and runner that can evolve on its own release cadence. + +Respect CLI boundaries +: The `nemoclaw` CLI is the primary interface for sandbox management. + +Supply chain safety +: Blueprint artifacts are immutable, versioned, and digest-verified before execution. + +OpenShell-backed lifecycle +: NemoClaw orchestrates OpenShell resources under the hood, but `nemoclaw onboard` + is the supported operator entry point for creating or recreating NemoClaw-managed sandboxes. + +Reproducible setup +: Running setup again recreates the sandbox from the same blueprint and policy definitions. + +## CLI, Plugin, and Blueprint + +NemoClaw is split into three integration pieces: + +- The _host CLI_ runs onboarding, validates provider choices, stores configuration, and calls OpenShell commands for gateway, provider, sandbox, and policy operations. +- The _plugin_ is a TypeScript package that runs with OpenClaw inside the sandbox. + It registers the managed inference provider metadata, the `/nemoclaw` slash command, and runtime context hooks. +- The _blueprint_ is a versioned YAML package with the sandbox image, policy, inference profile, and supporting assets. + The runner resolves and verifies the blueprint before applying it through OpenShell. + +This separation keeps the sandbox plugin small while allowing host orchestration and blueprint contents to evolve on their own release cadence. + +## Sandbox Creation + +When you run `nemoclaw onboard`, NemoClaw creates an OpenShell sandbox that runs OpenClaw in an isolated container. +The host CLI and blueprint runner orchestrate this process through the OpenShell CLI: + +1. NemoClaw resolves the blueprint, checks version compatibility, and verifies the digest. +2. The onboarding flow determines which OpenShell resources to create or update, such as the gateway, inference providers, sandbox, and network policy. +3. The runner calls OpenShell CLI commands to create the sandbox and configure each resource. + +After the sandbox starts, the agent runs inside it with all network, filesystem, and inference controls in place. + +## Inference Routing + +Inference requests from the agent never leave the sandbox directly. +OpenShell intercepts every inference call and routes it to the configured provider. +During onboarding, NemoClaw validates the selected provider and model, configures the OpenShell route, and bakes the matching model reference into the sandbox image. +The sandbox then talks to `inference.local`, while the host owns the actual provider credential and upstream endpoint. +If you select the Model Router provider, `inference.local` routes to a host-side router that chooses from the configured NVIDIA model pool for each request. + +## Protection Layers + +The sandbox starts with a default policy that controls network egress, filesystem access, process privileges, and inference routing. + +| Layer | What it protects | When it applies | +|---|---|---| +| Network | Blocks unauthorized outbound connections. | Hot-reloadable at runtime. | +| Filesystem | Restricts system paths to read-only; `/sandbox` and `/tmp` are writable. | Locked at sandbox creation. | +| Process | Blocks privilege escalation and dangerous syscalls. | Locked at sandbox creation. | +| Inference | Reroutes model API calls to controlled backends. | Hot-reloadable at runtime. | + +When the agent tries to reach an unlisted host, OpenShell blocks the request and surfaces it in the TUI for operator approval. Approved endpoints persist for the current session but are not saved to the baseline policy file. + +For details on the baseline rules, refer to Network Policies (use the `nemoclaw-user-reference` skill). For container-level hardening, refer to Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill). + +## Next Steps + +- Read [Ecosystem](ecosystem.md) for stack-level relationships and NemoClaw versus OpenShell-only paths. +- Follow the Quickstart (use the `nemoclaw-user-get-started` skill) to launch your first sandbox. +- Refer to the Architecture (use the `nemoclaw-user-reference` skill) for the full technical structure, including file layouts and the blueprint lifecycle. +- Refer to Inference Options (use the `nemoclaw-user-configure-inference` skill) for detailed provider configuration. diff --git a/skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png b/skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d4a43fc152ba6f58f1d2c1c74e7ae97c66b7e9 GIT binary patch literal 880587 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ⅇ6WgkpE3}>#Ve22YZ3m{MP;IjdH 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

%IW`O(%c>@}|M@1of&d<*N*wjc_< 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

hJn<1FHR-=4h`;H}ub;aXehgBtzcKl(Pt{YGRC z;~0R5BYpv>79%`lY#QB&g+tbP0XmEFPaBl_0n`(+&WNfdw1s+2fJPj*=yb|2$F=fK zxnEkkjO`F-aM+Ed*6x06J8MI~+q1hq)oxvny<>gov#r zN!ygRjgb4wbPVSI`uQ|8GQhTnX8^jCrak-iAu+9$?3w zgXl{e;WM+bD?nA%y4cO&EWqE+&aQ}vQC(TfwwpMeYU=|OJPpWtXlOL(cG-%Ov>f^D zY|h-kF0zH$iX*;b+sEg%xf zF#5tK`sq?co#{u9Zg0PVuG&XE(Wl|5OPN2aZ!Uo5^@fx%cbz5F$EBug>33h804Q{W z2rH%O=zDLc_dj?$6>2KcmCJCj-fC7l;Z;|GUFMmh+%Z$NM9D&g0o_(=k&;^9j@rNIN7&^XNqu&6u=3*A- z*lx$|La%+$vi4i;o!agU>fnMj=Yp2EP$+~BtDRN5s)uuDL7vVTwSyZNL3^w=J?D-G z0D5ba)yC~%KH4M&=b2Vusf+*Bk@xQ18)>z3=3rFyWb^Vl=cYY9Jz-zgE~zg3-h1!G zJKPf8XG27hLOH+;Uqk+w{#h-;B1< z0V_c9SHJpI>>8u(Ra@w9fBV~br|oJz^g&pUufP5}-mg8x_q(9a_B2p|hY^5m6L;M3 zo<0H>c7FTKw_z)mXBw2l2%5HA>{7;j?HZ0i=W^~oRttZ+!@R+A3lMXGrS}9JxE-o< z(U))(8hpd3NcORSPv5thxt#$=q;Ki|+}Uq9FQ)1(TX9G;cUs0=F3Il&<_I2#*CPkq z!6xGp(tu!PK^m%Pf+I6KnYNqkFr@?HMW4kab01l*b3gwRzC=kWhH}q&zpACD9{g-A zxpmgzO?|O3I3``p;yi!Rip4nKSB4W^J4cKYTF`Oum`p-vpdDy3Uf{SRTXYz&mjM`9 z2N)nCwbRbhpCDg#X#oV07I~%J&9r-%Pai&b7~4)m$W;L^!=uC4A#u82VEbR_R0sFX z9wM?bhh0RU3b1T$xsv|yP#&qd{qos-PF1!EjL zaf~QvWdQ&{6ouS$4!QuE(cY&Vt%p|}!RN7!@#5}Q+PDV+An06oyy@(gSGa4RdR3au z-Xq}Cyj-BLit%Q2H*IIOuTezx=4(rmGPGOS4o*m-U;M+f3$eRA=9%a-?vpH@39=)( zPH_2Zw7DOsDcZrlA!^?hbTP;I&K*0`dq>}oaW1XfXD`jX6!r;$vM!_+2r4ku^6UTD z;(Q-n&xOSL&W45u7>l<6Y-|Xi^5{6bNldHf^;NC?a|GOxA|$zPiUWJx^%7tl89f3b@R^r;>5 z;7c#3-8*)t`a(kl)G^ZFh0Et-PI0~MdhDR44@%pYJA%rSX4sWtcyy@v4i;MBw|f2c z*V#^bXYf%$wxLUEOQO$$rJ$EmVxGa4Oc}Ku32L958b{aOnLhd8!z3tYH9(dLXseFJ zX;BS@n^`}Aj_Q@R_QKzipe>R|FweY@_SC1833;9=#l?1sdV|1$f}* zweGme0Z(#K=&}{;whK>rfR4O~_9n~k7HnR_Sx(dV8HdHpo+|#$Z~U-6=h|alwbe^J z@_Tu^`57lS=DvH4-|lQI&sGOe*Hu>7&qh%dT<9G0{sR^ay4aY0mp3{0RPizB&;n6) z5X%#M6^}{dLR4j{QCg+N1@!ejc)QUxzdCV(MGMzLrtIIlA71-uDlp$&!2$?<0|F8^ zS61=z#igi2)m{(c8jp(-fz_2iAhAm-kGUsDAPkLYi8Ra~s<=VCM z!588@NqMXeZ2M}T)Vt)7_YX}LGC&#Ze}Bkj&LmHIZW*VToe<0SSoeNXM(1kO=ztp#kY%ppH@*+=LgCH&rj?z3Be>Z8qLMLsat)D>82bec~@ZS5ugUU#6#O4Rgd)=Y@f6?GZ|Gz}v zE#+R_w(aa{wKDjcc4>F^l>P;7?`YhXj!>^%w8J{)^U7d%06mXB@ZbNRe+uw(KXcdt z=X+Z!V=nc|p+nIB;&csvlYr<=M3&yOV^?||yW5VsdO*$VgRaB=#n^BR+V}1%Em->= zdaxjJ{k4Kj>lzwEpLhkFk6>JFtL|ph4@miHYg_vK^IwOZ$q2ssdN;Dry9~W`8T7iG zvxG6D9ap-IMZ)yW3>9>I*(Xy(?5~4n-+J?Hb{Kmzm4UUI8V8KMhus)ldJL6UHEt0Bkx|4|dk344- zY}KX9m!lm<7@w82?=OD#Gw5-5_)i75S|@d@`a)eq(H0!ugKgvDl`CmEeOq5!i`{sd zzP?Pf+l!2oA?DH>(x*TDDLYu~BOi8^rOij*d?%t4e{=R+x^BM>4q?HgB+5kE&O%R2 zOrs(&V7O#!b|!O^rjZ*>NoVsJ^JVtv|#{CLF%jEU(Sb~ zQ07=T$TQMe&c|X77y~_Tt-J;OZL2+d%x~klC%&8P*@u4o^_><#E%{*|;h=@^=1(eu zD5Xvgug^cdmfu&H<@cm!CxGUsAub2IXmr!)s8Q7CH2Mid(Ez7|eK*4RlTUsU000?^ zLXt5V6KMsl29FCDZey(P3-C%+)s~nj8imaXy1+sOt-uy1k?PQnBaK}G4+ILh`cp8H z478!44rfCtOtU+Hnavo-1R&KG3hCW<-wC6hWzPUeDFCeI>m*@t@Kmg-)PO1|!8|>D zUv@GfRY5|bGJP)st_{Gz0L+qXZC3At&li(%_s6|K=!gQSKJ z+u8Q^8I6zc65(#&zWp&d7EC4hq6Wp=cCk%tXAO?m5Q-X81>$KJ^8k2@K1nk_oi@tw146GX1X(CqB3-lJ{CiA-Yzrv(asls+9{A%meMlRF7gfwNag zVUqZ6^Fc;&6x~HxyK=?n^26uyGs`i%lRuNE`=Nd2ZIZWE-e&oyyg~jt2|#M<-u+Bj zk46VzL?0R1%hi5PY8{_~b5;5@bPMzo>z`D;U>EuF4nn3+c;G4;Mcuw{_A*^cD1+y4qUu*cgjed`@1k z9JMbt<8WDu48L;aGP()d_b@4QXMuX;lv}5{)uGWirf~uqy-WkeHYTO-zVmMS`vz2q2D z#@KFt-T{bvfytmzTLseA)D+T@Bk#q;eIsBS=}cXzva&i1z%X%r>_w}te0(L#Q)W+)`tG2-sW4R69GILM+Nn| zDzl=Z9EaRm02S}2pM3mrw7KnMopk(aKr^b~b)2zA(Y?pE)J735U$>rmJV6&64seM8 zk+m3JHUUm96l#&-Mx34rC!r2$ono#8*J0~*Pl?@e>+Crj-wQDI)Zp-aGXUFra0mmN zPIo6pSir@k6FM0j90*-i2ge{QZpX)~ii>l|#`ffolX`X2pa1+boHkWKmjd|Z362X_ z=Z`^uMp{&tRX?>I1g)!6T*ir_vsnk94xFP$kEE)NRTvkhB7gf&U0K~r;P0tZH^RYv z17L&ts=#aOb{~CB-MOy54&Cgv*s`e+$I%3l^Xyme8R_TZ#VUY<>iqrTuyYJ)bj#|4 zd}dskR(_;j`^FouhmNLG-o<_;3raA6v<680GAog%rY0DJTS6by`S17@V6b#Ci=`On zIw5T*os!nUIZi&m@p>L9T&I)o)R=0W{q89(WsHiCf6Fn)0?qFQ$K3tmJ%7(7Rkm^D zX(%`U`7JH!yl1Be_`?*uX%W%mo&>#R$@52^$@|?b2Am0Tb23uomv*qMVzr)9ks?yeu&H&F< z{_Wc{8picyOBUj^#h^Q5B(_;}2_EXS6%s=dKw?oEmu%m#n_1&P6hX8EGM(<;E9>M519I{5o;9~R_LAZsw z8s>&oslWoX?b`|%N2{4r6a9ZN5{`Mlt_W=iM(hyqSy#IbTgbum*=HZ5+S&p%gX01{ zU>Y5<1VGCq^VAzRyRdJxAQz!GRter z>oL4nQ1jAA+tY`A>6BIjFjs~2dI7BnL8(df4a_U~eA+Yi%guaZxMX(PKu zr8u96p4fi_aO9nIt+_dM60LT4kVqL5$StD!_V%$5rMnOLKAQG2?|%ir)|&ujb{yDC z21J#ep-dRBs{nfT-MPy-iqoMv&9o4)4Y27W#!yM=g0u#p&H(^e+FGWjrqea_6T!PD zPMskiz;iB~Lf6u!@iO4lqtv;+)+i_pe4I1RIzxZ=H{YYK>f|v5(d&_a>T$s%Ae@NG zP7li;%-<$aF1e^FPHq_a)<|e;+0s-X?u9GYpaZtn#!zAZZ3iq;TeE@18bnCJ8PElI zwWS$A+{C@K2it=-ke`0~5xVFG928?Af8_y7mOn||J=Xyoj?i|U*paHyK_*e_*oCOo zog0k&uYR-!`FjwWJB&Swh$BQI_Nd{V6%}kV$b5WwNF9!Ct+7kZR7~SwX8TP5;LS~! zf#Q>xnqcWlK$lv(FC*w|Fj7zQ*3iVKNI6q&{hY!LsI4wAePM$cx8N}6fX<)YSw#@8 zpxtJ8je4}{okM6dHNASMwrcIL0!P32;)?*DnV_-QDzp zSbdk}bgXKV^nK=G-U2`cxVm7?_c{l%eCn|RQ+=+pvomb>f&g8hr}IrcS;wIB9?NQ; z+Bb7MrKRwDewdGXyUz<+_MO((`s8)j)~xMYV6Sa!eVoUgI&~^e%b}fA`@e1OeeI|2 zWTAbtrzhLlESqe?InYOY#t&vbjZM=IGtBNJ-nkVng99pZuZT4|Nl9tT9npmSSR(|ScrnHN*W9v!8O~> z2&1-nLKeB8Suls~E8WOP{EV9O$M5`?i${~_to7OwO#cLEIJd2Yh+x5@d%W;!(xq9Ygb_#o(*uV zKwP_e1@93g6VYbxO#)1wpzT4)qPpC1jX@doiAMew4t=&qn6@xr% z*#d)Yw``H6K-|m@F1=|_Ir<*pq(*mcSdUyYnl|rQ^f=ufzJ*>hl*T&TLR=drI(#L& zSMZDxoY!7n3y3NMj_paUOWE@guco9EtmQ_ z5#z^b(r$-bUS0u+dNKgp`Zn!9!5K%69tnS2v?s*4Z26K@HAqkd=tlY$&>|4X2*pOk zTf2rR@QiJB=@`?rFWp5~WZ+yo!8V)Y7u5a7V}1)rP_{|_`TV{4zvm?_J`t>hKk{(- zxw6|`UR~@oIf;Fqg_lOz^PcV*-;%uv8l*1-dC7mINw0gD=lmm{;g9p_kdZ~+AL+>R zMLp^@=a7!`um_X>T)N^j@tWdA^OX-fOUnx2XvhwV&n4wCGMMyv`5epP3m~C177Hw) zJrAD^K)rSM0`m-M^pSH~>^h7vWQz8AKyD8oF+K>^0pDK0_-kyaXK}&wRbHE)5w<{i6%`i{ASw_9J!$~CK)e`c+mRXV>u_t+2kOH9d&Z8g6c zY_~YFCX2@OT7F%+_0Z0*j;u}`K~Z2rc@#$zKcerRXoIHjg8%cvxxP>i@w~DTB4R@r z>~)+^`0j!Zfw%(XuAu*_YisK}fPd-e+wWqR*_37`r$TN>3og1IC;b?-)Q>)E)KpJ_ zpe|bT-2xVuVk=&YUc77Dj`Ydi#?{|00Dz# z7>rFk%;7_?rgz_Xo5dd65Qa1OUnXO2;=ZnP@8Q^6gh18)5sRA{czH|unRk=p z)b{YVeOv4%v&j088u1pbIOk08qyA>*9p=Q7AAj&s63i=rULS8KKA6_l>*;cHQ;b^! zsl58?;YhcR{?PZdm_867tN+S{sZ9i;yVlX3>an9uVCOHv)@Fp{UfQr1j1LlzsQGp2 zm6s2uw_bZA7Ld)*|I_$fMkwo2l*a4roh*zQqwO*VB`>!9#_`?sGKUp}+lNeb;n)5H zFQeyt9C-@Bb>1N$)xPiU=z^~kjhAw*X=|tcmy!3VaOG33G@ftWjqHd|Au zqs;igpY(=KCYV**xB_4Bu6$lw=shq7i=hw4#-W3U(g*KFT?^GVufHS^Xd zi%M8r#~5KAZ15Hr=;?FS|F#$!TTI^4nsW+uMP-D9WE}+$chQ%n_@&maD~}zq3svxH z$~!|D9@jLaZ8hv*f!}wAxy%~oshN)#41;oseAL68r-bl;VAaQRUe255cnn{IhP`07 z`6r`vQ+b7xywusrCHRhupsrlO7TVcqk+BOy)9)Th`_Kbz*QJa{-)EUC@uAs%tzBIK z`fhG*P3xH(i$4<(d&M9R_(gqNU0q#z@95F=+Mz>fInOU;{Irx<310} zB?YTzTd%AQi*rHx%WF@M{D+^GK0AW;^B;VACr>%=@{eEtj26&(@q<1>AypJWp&D+S zENWc#(?Kp_`5E_$pFxfcR+ZvN!*zv~%)oRSkW?Q0ZC*}3H7q&`1VtJq-pNjFfpGX+ zx5hp5@xF?Pt4s~eT>xaz)zt}rvN;TGMvxOF?O)Oi)Z!Rb>EyS27t_Np}*U!i(>s zzXj3=BJdChkb#>rp)9z|--31fQ80{9XnSgeb*o)h<=fuAONPE2CxhS)^Aq5paZy99 z;2st1g;XjS1#PCmO+)9lZQDa3%F3&gWl4%G8j6h`VEtSjp|G@_HNFZ4 z5n!y*$b3D_+iQYHdU|d~nT#4IP|E%ggdmVY=c6EF0kZ;g1Tasa1e%S4I)GaAp>-E@ zqjAadYy56R(Q>7YPsMbX6|SIaNvJ zAIeQGa*@hSl9P7ZiQSInSe9g4vMh??On?JOkpwt`14vBgd4BubBq&RcoQ^Y*FZts8 zzIWKe+H0?QuPv=tm~tFE6s{Zx19Kg-7-$gidJ+CL5Rb9CO#_~*yfzV_FoLnd6@qTz zY_<$nnd0BK%8zz1P-*W+e&M4P``{@t;e!faj3M^eXE<$7aFZ+W7kP&?M4Xi-`dj+y zvk58#CNU=S?4qfWXQH4`UQDaJ8@>ol_c_awr&O9=%0^~z00eZ}!$&aLwt9N_`M@}p zOAr02Sn$xrhkjIJ$AgQt>~ck!#z0Y)2Z!F-f9bbyF=LDYl?wC;2nA%)a%uF?&`_Lp zW+GX(%9FPN$dh*z`YMkk&=%V4ZvzM9m0K`0 z%S#OmbUduXOs5_OSl+|`Ix|DQ;-=u@1*mMFmZccTgTxB$*Rt#=U}~t0Hv~ z=b8T;+lk!bd@;KVQf1@>J`72;||6Mw{cVsG*j>flrsaPhlYn) z2-7D}@}Og*^V9yVV#TeFV&P*Ts(9qs4h{@9pMK%fk(Zo5I$(7?tK8}6^Z5y6(=%t- zj)^+2UAs}*3S1t*9C}1qMSfa>vE+7h;OzsE<6K0gGuNQc<-p^MIN#hd%D&0d&3vnD zEdTae$x68pC$L$x4C*zLi%t(^M6T(kL~Jb5C)2g-HVke!ve4Ib8^sEp|x+rE8AaM~bP+-NCZ+!9`vZ8)_{L}gGHT&U6I!?;V!byvR zj&o()9ng4#eZ6m=#68P9MPSgWQ)795HS^kR# zb^tpMvzkOIV*KWzzixr6%)6R^fW3QnL5KUu5b-qn?Iq^%B*8syX?Hb-X)~RjKabr6 zI(rn|f9+Zpf2?2K3=a)7&wuKZ&GRgNG1C`=A4BkyIA+$a+thsJH*P~ShvDM`$R^~i zy*<^;;e5Z1+;MLFEP>l6lFfsGhc}Z2*EVrN?ejTDHcfjndy0gV6P^?PI^5uJOq#41}}6U3%v7l2I68r zfnWOmlQ{P$FOyjp1MLhvK?Du$0|#|n+{MnLtY$E;!L1uNk?q-pG6v8p?_l!n?qcU4 z7F=ycFF1AbB=f>WFin;4=0^U# ztQjN#WEj448hOCFmCLS@abzQtM3HXS_HJaO3pdNaVNl5w9d--_P0i1*eEaIJF-j*G99m_W7^zwQ!Dv2w*4oL>6~@*axK&#{>|KpLJb?_b7v zx&7Rk@iPgQnSve}G|5oIds!%dj;)WuDS7pt-8;b(GwQ0Jkd=?4m*815$le1_mHnFe zB{&c_BZsdd7_G0l4ev6jc4G29oCRaR9UEF?VsO&nbb??nkTqFb&gOv);1G+Y`;pt| zm)T1$lJRyLgMU9`CXVgep==2M6TdpTaD1^P_SW^#&iyzt={pNK_wCz5dvR(bR|z-e z59K9MTiMzGtsCIUg^QB}@LU51E1Kcq9m#NMU^C=1GJe-mY5RP(CpRnJPu_Y5I9;G! z*fW{4j(N{gwr=D(1gwm62!0^*i2VTsQ&0c@)O%_TXtU&0cJlMrB^N|NI1t?`yE=x4-@E1g@%Qe&GvWi0m!?s|zYy8ThGg=t3`T zaX$Z-fBBaQ9{t_l{oUvi%A^K~ny5mZ()ZO(l#|Vb>!)QKr0TQUb5G&8GAQ^zkzGc8 z(mCpT_0Vaq{aXCAZ0)C(W4Rs%=^7MkS?U7n3+fmK=xT@79%)-nLJ$A!&;Beyt;)n- z``Xu+gSO@pHf0@3sPxn_yG}u$Dp_={7;E@H9TPW9V~= zxq$ongoKUnX~)opShK}@E&31zE`^pm&taKdD}0r|v5$xE@T{QnyD(Ij^z=%2s5&Sx zH)E_p<;pzn*ym1EW+CptzaTzs~6>zq&gBR6D93Sy80XZ)85*Hby zS?UEBs!RESGo3*V5%;@_~0&11a{J)B8M%6CT>M;)aT}BAG9Sjj(Mp( zFHp=PtIXzE=Q7nKuxEkAZTAR@@f`ziwYg+m7#m^7P~@KYD_q?o}|1oAMA&6BepB*k@mw5;6GHx|I`We9Yas~ z3_Zy8j4cbtdYAWxE{o6ZFsA&YuBxp{dTvH(Z8ovNVh5AAnsF|;L>2PX)!2_p2Dq}@ z=`F_P76G^hq^mQ?zZ`q#oq@P(u;VQ4#@>Ss&-S}`%C;7N-Ht43m?XgW3_d}9tp=3! zti}f^?Cb-P9|p5Ho{j^64Q%aNIlL#0y?>$Jc!WQNg-G#1#|Ohn@BwaKD+@{tn$hno z?%cq}ckUc`s7-VN+J}w>1%b{g`4wBW0eS{oxj@0>6)v)}1s_zK*ImS*-B5i%S z&{oFMxumXB$5c7fYub6W!72;L^F@ab>ZP_vasMWE=PCWU*x$9e+Q(w&_bpFbSK9Bq z)i&y49Or}f8_R#F{agqR0wa02^E(e9b2x{!?dJk8^KilJJT&qmfsa3a?8qw ztD7AI#0_8r-+=C;N+GP1WFySdH>uU;J#;+Ol5(eYsXqDvPdrq@;~x*eCN409G|~d>g^3o8Yrc@$JYI%sk2Ku{W79RKJ3mTHir$aGn_W>S7&fwvAQ>FwS9Q zc%<1ryuI15ruZ-Buo0wFB>3njaMT29#*b)&x`AF{%#Os}z9raLAn;pzVae`WfTVOG z52`Y&{3-q{p4IPSrdIj6yD0Ti&%S;82`qlPSxFp6vI6tWQsziEi+Zvn8x!z}JWUuuU3JGZkCigM#Kfp2dg9wzwH9jS<+Le9Jc{gQUM z)3dm=7T?J(0!+WAd882}|BAY1p_RqHybM{^-9mTbS27`u?eWwX zxRiUVSFHg?Ynx@rX1BGm;Zt?toirT69eKrJb56N?_bfus9Q}+C%JsCrB_H@)Mrh0f*<49Jq&yor?pp%jgCdf(648#(t2o2 zALD99_OyesH2~Sg0XJ@z-6#!kw_Wn#Li^-_#1SH=otHA25Jnu~og9Q~VWON$w zT-Du!QY#bHc;@MoGIZ-dH8w_CdWbjzqIFwtobM23+oN!yqNdZ{^X}b&1mo`CzYoK~ zdSr~GxwriUiwKLg zYj7&lUJY4*h;kI}*a841X*&imW)BSw0o&dP2==q|xdgNMjO`XSj+rUe4eGT{>uGE2 z3Zu5XWiT1X+IOsTEsRGd9K&E620Gwm{|sajZ*6-KG%HNp{oPz!x{t-$KsMXJRpg^&8y~Q;Z77e&E zlVK;y{@t55*ct%%VU%0Ikfhr0nU$)(+A0Jwgu2AzB2+0L@Sme4)bK+yalyrM-IrT; zBlP>d{I2g=z=JDZeKd{&)G~GoNBrhTi~I$~uC_v3!AN>BPSk8;3;kq*@*uDWP=#9Z zrG?iTHe6v9;|{ogh3uSWq0m^n21D)Bm#;MgWC`nJJJUP2&14Ad^X^B5`a>A?QD6Ec zo+}XfM_(w22hA*jp&C{zU&<$RL)u|*t#m^peRwqQwYRb@iO0pPj-ghiWv)2G1+Vl? z#hV8JcjaXa|pAx?(*G*I`USH3L4nLA1PZS zz)Au*UD%;4p#xKAs_nRmLSnfa;Op{t??3(YQ>i!nkmf4~q+N`O4ra@hH@MIx^nRw$ ze4TV_F?Q_SzMK2Spg4ZkjQ=c1;nWcA_A*D0kVTH`D!AgaJiPEN=ZWpA1A1$4VAe%bsp2*77zpP{^lM z9(6j1gPyj_MJ&U^7#j%Oy-mQ6fvsiw+ZNytVyS5P>3CMWF7p)n>D({fY0X`L%5V9p zV{vI>GW`|yI>!vQj9f!K9=5@4C#_$($lzg*GDir+1vd;j*15cE_wMjc7jPXvell{C zt6=3HW|uj9=ty%G=f6f+>!ZnOll`zB6h=zZc7 zpUAvZM%0;QCN8&{v~wC-Ez@TQP}-HR9sf9g=)15raL#$ls7EF@sK!3!ea0#8BL^9T z8>bNbDZ}=P+sY5htr}sJzuYp*g>}va+hI8d)QZ1u7pOdBpFNc|%Hk)o z>LE9ka*6>)`Bd3OXL-eagJWDcWw5gKX*{=ot^!v+R(6jJ&3yJ9haYUBE*wqtQN2Mq zd4Q}qn{c$PU2mY0hPrI!gpjlP9zNS z=c%vG9dS)FCL)xb9Hn;lNg42N9IPa_ULOHzi`1qHG0DKa-3wg&+gI3YIp;_?vES})5 zDCnXI$4D;f>hBXLPsOROsO*h-O zZfHKvw)7)|tD1Fv>VoL4)FNiu9@q;;Kqw5nR5}v_qwTP*&_o|hwt@7*2Ob~4Gz5UJ zFkC<;(@`M_Z^OxMhKh|FR=`sR$+Gov=;Z~n>Yav1zlYs}9dY1&W|NwL&zN!J64}5m zTo`W-x6L;P*AkS09JhU#Z0zXS(#sVXeGQ!5N*40FGw98X-v!>eN%pDh*Ri|s`_A-S z^X}nOERH@(S(D%syu1TF5{s}wajcZ%J8eZQT+)uCot;_Mz+2_HOO}%DpKPfM(*&D< zEK-+MY@xY|3}xBEmY3w&E+D!MEmF?73m=FL0N!F|R!|m!O&MV-Bxxz_Ue?=%(VVOZ zTh29a;)tD_Gw?>u4DBZuB23$Ve_eveI$@xL`i#{Y>c@O^ASjCXhU@|-s@oV(p+4|>$SSr=0m z+GWNX;j8Rm;|%zBH>E9&_zLd}ItRfTL9)gkk zaRAKRBcP>kO|tN;S-F8Aq>b30`oZ(Fjk_)koZL(XJ>}~qY2)MsnNrALY%p30!eHSg z&WyWv-GRsjMb~K``I&o>4cQ@K13KXXbZ-`UddU)lH^@r6f*mbJF!n=pr*7V*jc#|` zmon@2&;|~a?V{NsqlLrD%hP1}S+#~>ljZ%$Z^$plPf#W{CxV8$kkOnc!qUZd>Si9d zcu!gR=G59|eyzHQlZDeUbu1s{Bl1?TH}ju~kwgKnz4|H+vv2?Y{c(CbPt*kr%+oQcexMCmd*>+vNd3KI$ByRfU;jF| zdnLPR`K-22f7ipd)J`onY2Jr|kZfLO0vpV@i+ zv_5rT+idWzF!0b8{9C{ETY-Z?xZn83H<~~F(?3lB?;rfZ9|Z1}D?KxqbqxV7_G{

J+`jeJTj{qpQ)xyP;c?xpoMt)F4t|9# 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 z `FAnn=+*4Yb@Ew7`9EXx1* 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¬OyZ?6MH^W!t7Rkyw?hn(L zX`H9Mt=hYLKcK~~%>!%7KM_{FIlO2!!O&saQ2|nj+{&;(Qv{Jnl&2G7=dU z9f&hsf7T(Bj}Ptz6K!-iO^4ub8(FL=%AsbI&+z}Olh|Q{3Np(xx7pjC}{hfBEjy#qoHE3uzaDgx5t@|*Iy~x>OpwJ49 zkkhofwtqWmW&CgQaEm9}p92n}S^k}&`(|;bDs9zcRFu_y&P|SY$623-xH7~nu-n9+ zXUgw|sTS(Gga^AO(5ycGY=(7w6|>g8M@)hBJZfF;!dm+}(mZZM963G=S9`NOb%dqU z$lus{dH)#EExk9P!-+fAP*b!2%G7h=D_P&q!p|Rl5ox;)jz)w(ER=sUI0o&m3>xBo z9nBZljuoq|4wMM9+T@xXve#u;6vw?!mG$s4;p+VZm!sphVeNwgvhoLQs6lZy34A!C zG$x7`r+RB>7*n(QBJJT@PU57-&-W2}4_qGAlFuFRxB3d;GTC2y`&uE${^D+c*GI@1 zSt$!jLuA7qkeLNuWXO(XH@kk{-Io2Zf(iT5BS-oj?}7c*=WmwEyAQ(M#zOeG1$0i& z<^-yg=)GA7f9EQ>{?K{3=h}?zbw$*by+!-;84>3@LjA*^VhwY z+OEKnp(C|tgk^eIRkvOp;^EiZ^Ok@6TeD`i4$F5Pie`F8+m@bRY>WqPVQEjR7^US^M6B=EP?7x1&jr|r|r zKU`WZ$6yQ}4}ANzAjNO<=M%@IfbA^(GJcg29VS z>}oZ<(%UD>yfM*^Pty_={9Of8^AQp-zRICd^0u?<9lW=+6~Ml+3$D03qs(HQeSD>K zrRw`Vn4~1uQZg(;VqxX9=w=d?6;pYK2ngyPpTD?CKRyVY7y93H=@w7kU};Vmi_Dzf zf2{kkhvx(wj7lo&%6LW3KYC1yqObgDmPpdN8SNij78jMwjHi1F?@yabScK&gJ{&Zy zeoDcOrKSC_iu~+an;Z1)0nLM~`|sXArP|)#Ea!91c=bAW=)B@gOiT%$SL@?=4eULn=vCEPGjcfxQ)iBHxgl$L-bMS5kjJM-7BlT_AzU0%cR!}sC9&qGwm<}>6`=epmJ zJlR@n9s&tIa3(JE+FIMK4Nmb|osOoIt``6J0e;}FNa0qbT%EH_n!LHYHEw_KCyW8T zA|x(KE!O4P)jcVEXcoU^U}5YY+z*;=a$U9SXS6{2>^IfASg?mIKW5(i8RKs`VB!+2 z{iik1zfq?X$y>CReU_#RK0=hz6i)gigz!QHMn8hHK;8(Tm~!vI<`Kp6L=#o#D19c1 zilf7wjQErpT#ViBj;!0X-6~o=F%eT-23rpDtZ9d(PwM6iiM3EN1h|Si&DN9MC}EnK zB#K@?Pjvy8m^Sn_I<3^(?>~>HZ1DXgPN1gNIXL`I1%j^N%AMp)J-rU;b2-=|m4N3e zKRNup`1a$+$}U7-^705el4s~PUa7>R(=$53QuKaSV6FF+LWYD}D34k6W`n1jpO~2F z3n5yIWibm1znHkU>^(Z>R`-AW)P6I9AfIV0DijqWEKAVNfU}jRe(a- znw{%IE>U~DBJlW@q`Mtd={>_U-qI!@G)wBrcDB(UL{5yL=!k4`+dM?1u+r&`Y;R1y zz;768CqT_7=4=+p@bckJs*l(Ha`R3L-kR~;Tboo+R9HTTkqB>wL=|ell5q}va`_Y5 z8`b6dIi;ScQ+XxbibJpK;J?c_qXJ}TQ5LXCYp6;;C3el%R82S(-(UMF0!tE4U{g$ z34*TD)MIIDJ&iVbL;>zE*|eifk8)N0Jh!@CD(>ojPuq(W7cHc@CLIxyyt@A{Pas?5 zXZcw+d#ohIKivrI%Dg8-1*PILU|M%VxF~A~q4}O{Vw#4yiNcmcEM@fb7J}<%#?jD;958$(QHL{gcCHkG>axG^x=q7 zWd6=CIhO#O(T)JEWdO}V7tI%8HOrpPjbsTV3B#~OjK%`VZWF*Cu?A%W&}{CHpp_36 zZd+RVEEj(%#yn2DSt}9g z9=AvQhbode2-A*MA)neX>gES$2*RrLAi&C$_bB z@|T?V-PbO$r!!ruO{hZrIRAs2w=_D66_e;oCc;j8oWtBy(^7t$i@g$-o_5CFt?Xzk zZa6q?*ze3IltkUWxUv8y*yY80VI?#&h5ar+M%3=29>&J*N8~8R=C)5`O=al9`>E~d zxHuv?TtX#IXBJw1iI(QYNhlc6q3Zk(d%6xdI`z(21FwyYj}+Nzt>ZBcqT=Pr|wq{QK!V`<2OqVt6P;yu`4R*7X>PCY5Oy zXnw!gsKb<)e0p!F)&A22`o!V|wk-oqr+N5yHDXDMY^h&=DgajQ8)<9ItlLouc{yp7H9HhG%SO1dU$t83bTj(QShH4|vRqsF1sCBP3$JvtC{5nN3y;_F31)-~`{ zX%_t))C}!4eofGC=BsX|2kDn^-_mCN!rt`p-5qk{bvr`kg>B0H_gBwEtVAJk-p_~M z@LG`F*UJJ;zhsnw&MI$`y{nAT?~<+?Dors{1fnEBX1w~SVdhqCNR`zRR>8YpJ_9)V zl9Q7eqQ->qkI=>_!Q3A~46gYl?^WUqKxaYkPO*Ucpvw*={cB58)-n>}SR7MyHdHOi z>k~DPx2==t1m(;?ej%8hpiLgI{s=Yed$!l{9A{C_)LZ2CI8O?8)6kXr;OMOinCFS_ zY4JD*K{RSrC@Fc5Bj;l5JMND}+)|UQ-ZHLYeytL1neR9Q0yv5XyK+f7Pj;=~zKHjY zDw=;^j_8^Bos6dle|Qy6`u+l=#dxzghU*e4a`MsBdI3(ZM?{ZJXKqf){oDOhZYaz= zEH!niw$rEO)8Ulxt2(I{q=kHLQ>UqJ>zdW?S%F#bv0i$3twb!T&pz_>59f8#3qF!$ z%4F24+xlRqB7^^D?fR4>{p^M9A`HK;?(#TtW_SoG`@)HBphk)3{oMzLB8D3>sFUgZ zq3q8?*xQ?r2G@}sKJU*{t}In~*>A=Y!=F;%_e~oi*n@;t6M;s~`|ae8%Fa6Y!MAyT5Cim8kWiOF;7Z0H_K<}!iFh9P?;_1}fI zQ`#ml0LAlIWB61x`N6Fm4skl2TI+T3`m^7agK)JDVm_bqf-IsQo!e zG6Jw#SE@Bc^|U{F=|Uy64u3P*7n-1Rap?904*Y^xUz5Q95|YSf^v3o(A71RJ(l==Ij)H#rWDSM4E3?+S^zc}+66IiJ ze7y-O=AxBZ*0y=}Y-2YoCi%uZ$hNra^^{5xqQ!`*N|V`%Wt5qNN5YSg>I{0!qyoK6 zyjSR(!@^P)uyC7F&qw3=o+AE$8VEbZ>K%w#EHwM!wSGxeNnKWGHhO(8Q!%6IOC@%; znMs+Q)p0?!Rv*M4{-&E!r`nLM$FrEaW?zNE{N)YoOK|sN%`5;nVg&q6dnu>${mSY*i=e#;WG0!u}GRpOApd=UA;;&fvzmq98iyZzF6x!+w|F z9qPc&qqzf`;oUPp>GphuTL?IzVFYmC)$uS34-ZfL;rg6d&9WcBncKLQ)Klr8X`s&S z3^^IFNCa*HP;>OG^&&WS5Syf=9nLmyUyV9<5$?-*8LQ==|5BHHEiIY;iOZ}`#q7pq z@i$Yjshsg?-|RK>s#D%u4yH;N<@D5i_(NP)x272)W6%#Qf-h9UG~FClI~TYiCM48% z>(Hr%OW6LpeV*zR-sy&@GqHN+?FU36*75EqV22z<0;aE>k|vvq)&ntyndJiWrA($Q`Wzi+BdZ)^C31S6>d+xS z6d;yy&Vz-|zQv@;=jC9Q6oZ9@1@=%uQBN@7qJ@&omNJUE*?&_w>eC^O*9t*VR<{eUD zUNa3T+Z6fEOscGuq%ARoGy@(OW|vObI=utezo=@T9~G}`yrhrADGoM5TWlL<*3QvZ zbPmx#nlE~31)O)~{kS@2H5*@AtsJ_kO-QNy#QC=eiT8lqB`e(O6sY=7m*_nofS=mI z!_74pfhq6e(64g)z@FyK5Z*-TaCz)|_k5inN1F1{a4Y(D@04<5GioptD2eaoRik7L zI7}iQcVfXCWK1hz?10FC>;*{PZ94*0-&1cGj)A2nXQ=!#cSBm(HHbDfTj>3ti_|D& zzo%O+u4&+lk@5p}R2K^EwWmJStDOjO5FuvElAssf{vT8AUukRTm%GQ-vKy!A0AMU>nZ7FM#f5BkTN+VNZ*XOcSyU*s+cGq8x0-L zjLVcK*eIISXC9Wp73(w0_thx=gs=%#d8F)*-eZ5C?7xWAl)gxA$;rch0H~fyX&z?# zSnbr6qWG_s-f6Z6Mdp{{VL!d`Q>(%xd@4$XLiVf# zQ|0s_KLBzd!@EDbHOsRhk>V`&!$WDYQBj>Sfq|3?pE6T2`pfJ&efCOB>qv!ii3UB7 z<stwshx=7%1qD~vUtESR zQO#X;`>H`N-a4{*KBaBF64O{MhEJqfpRS2t=*DNAb;0royWRvikMVmVv)Hd9H!B=d zicTxZ%_=a~YWWo%ZY*4y$;4L`;d|T9aWO~TP2oTKj?hg-$CJUeWu-Q-a%ju=S;WLO zeUJeCOZbua0^zI$9eb30=E0_c_Tk=jug`26GL}$1D;mvuhP7yi23ZFL2JdH2RJ?#? zth+?`U5Fv8@{MYi+?)BRm8w-WodpIn$d|_^6Zbf|!U$D6`?$p!WR+IZT%OcUbI_*7 zWuBx6xqnO=arD1SavK`CefNO%?Y}&Kfy6(;uYkqX>vsQi>^Uy^{sK`aE)o>!hXHZ%-J#+-U>PUYp?EdnjRHOq;k1l?yCMJgXsRX=Ac zp)sgB>weeXIe$Lj955uEK8zWS{#qxcCV6Mv_;1mDuWT`ERcV1M*>d0HOA)pqUEyU{D6a-F^)cZzV*KU z>W$rOy_?YK-W)~K!(T4Tdk+2FFXOK--$i{0*dKhiHbb+0R7Ao1%Ku$!mf+^+y^~O_ z3i|RCI)i*g%0YECTu*u~8Vjly!5=c5u{kSx9N#Plt*0dChOUmqX79&K<<Cm!+HV(Y_$&Ahyv!U{feoApC`~H@e!l&xA;Y~nAPez&LtWIA0BE6pdqwckRzjL0TdZ5=S0o*Nt ze{wbC5!MfuMrbKPU9C&LeLmml%>1)}xXaFq@~Z<%njPGG%>QW^kqr7kau?#Ky8-v_ zL7r53Yg{R3P?ns2qbzLnuZ&6T$gdu(_}avY?9dEv(hao^UGkYvQcAj=OLy+1>BiXn zoedK)BZs?SsFFK#56Mmse4cA$;#yD}G(yF6f{ltlx@`G=Udqtf71*1Tj`CkFmip^= zV9NSo{e^)&9e9L%|Ik)!}Z@l#vBSr zormG4eEyf`CyD$|<~@?CS!B^a-T1kz^i{=rY!*1&qrfrt%5PGJ8H&`E%Qy3m> z50rt5?yz=LC(F%}>Vi_LP->7|KD;1k_RYz5i+po&-p4w2e1tE29>~fS?;{p5D^#B& zM!?MEQR-P`ED0-Ca-b%-DT?PUG{ZHM_uplus)^Rt0mZR{YnqA!fzwDfR^umb?CBOd zbis|y-@Z}qZO1%5G`_v`(QaJCOtIag3IJM4)5a_Pj}`zFZOkP2(Ip;eHlhQ%w#s_; zIw*HgWea77HYpjYw){mdZ!&HpViPNwYWW0Rn5grlB)CN-2Eq8fIgS?*)%)4P#_I*r zZ_SHV)@z4O+QU*!^V1daH7hHd`B~}__;_%>nFixD8?~JQji57~iw7|ApeteeFTyk; z3(DFIumVdxHSFJb0mfBG`|y4;<5no{2wymw4#u?9(UvbdIbA=p zc*MlSbWTpHjp#N|-cf7r(t_LgcqZl&+(-FV!d8ZvfP-@l9`S!0(m&3sJ?H%4k`s2p zApC(b*J&Zrb3uwsC{C(0UfVYiXUgyDOi`%31jlywHE6?wr95VTmMVdSBs^C(WHvlX ztS#m0@>27!qc!38jLw=Y!Ng_`o{EMVT(GOa=zEacV8Xdrw6yrIy3e24TN?sDtArI< zGbOFfTR+srR6U6s6?F-J%WJ6u6XAAM9|Vc7e$D+lK)q1s#y0P>U3|Xri*PZ!j`8zI zi)NVK5A!^0Yd&HQ!g)z zEq73;DZEUB?=j zBB41>|EJD0bU=K$-tWp|(9L`SDeQV|(|8F8Iv@U3mQxyr|7yy8fPwrIn}Z~7P}ys= z*U(YEEA*Y3w?T26l1vHoz4yGsT*Xprz{Sq^32XWoAzJxJ;wSSdiwhxRSVgoxpTu&= zUApTlzkI*qQGhaEOMgYZf4Zg7i0h`(NY&-`x^noQuN7% zD!ZYJrRED~1aqnfRT~=4uA_dYZ93xkaJZBX#-qikb&jH~*-CNg0}dlW`A26!y)C^q zPmePz>XH>9P+P(5^^VHUvSLcAC=?8Cp-mfy5>!DbQug-YECi%pr+c?W$mr?6OlZ{oSb}5CL&w`0#9A)sCI#* z`;%oXoeEt_opf?Cj_;`pCuD7F&5IJpoZ4qZ0NU2^LWn3a-t6FaJw+kUIbZAYIxv`j zm$U7OEG#l%^x@*&d$$KUrlY5dJpU`J>9XH?E4n+NNVxd}px2=+gPMjHO)Ebr$Jvn| zc_;QKKD*M=VOoz0^cO0J=q`|`54V|tWfTtWDt$LLSAWIODWU$LXiu3HL!SgJOw@mA zrkef2wHlu4F3apC$ue8?W8L2IS|FcX1J2qHYOouE)oE%V@WlO`xwuRl^=I|`THo&? znhmW@s>q>K^q)_fn;MqKlg*-9u8*Wx$UHrVxqa0wD1Kp86FbJnw0mo<2X}hQ3SUY* zJnCP?(imJWdJ#5Xesy=-?BzY){w15RTu`Q%=wWQVGm0|Ik_w2C6rRvk>Hv*X4;uy? z%vk!ljQ^Pm?H8kGLrPE$Nd*8z&M#7Ch3M&Y0M^8BrfjxEFYE(W=huUf(Ksod@2Z$) znfdI^Z0?_P^ErVV2Hm=28;d0Jn~YvhJ0F^`G!RD|IpK()*p#>x|vQVpL%9Nq2s!%VY>W$`03-Im1z2~E)6Ka_HxN^^!=-gw8 z(BH)e8&?YU*k$m_(+nt+)1jY$2oG^4z{72txtFGQ&D3@r!n%rc{f}ko|5UR?Kf<>i z|L5cXsc~cR1B-+7!7*4FjuV+SM^$o&YI&wyvtY17PezJOnY7)`Gv>7s-jTOrGB(Qm zIxo?6w>_}|Da@?ZHvFQZF1R#f1~HL(B^@2g$;+doqdZc4bR2!k;6?Lct29wZze#^|gGV)VEfS^m@LWPZ)Hv@Wy;c#)*@T;}F7I>&Qof`9 zEICy22zGwA#2is@bzlj~%d~(ppcw*uX(1hz7kV!hj+NWB;EZvHRck&2DQz*gt+UH~ zTjQM4d62bM!JJR&tzoevZHG9r4h0vStBZhkUKc}iOf%CZ0y!JxQwg`E|5b&{TI>Zkm1Pkk+%=1_=wd~z- zmFA`a`dVLS)}*OI!viCfkXe%;VkjGDJdZ#saQF^Ah*yNEe~S;lX;sXU{s3O(Yq<7H8-BPx9`wu_pVzo{f~-sG40cbi?oN zQTKff=N``edqv!sg9Mn;rFApd`Vq~S7E--o1O6#UTSGNxkpXcD`y4iq&AAt_ARN}KMV@^*Rm0t zu6_z)QJk9l2a5kRzqn80m584h^ygG$<>a{cd>Gyf8|Nai%WZ{0B2!`@IrGLLKQ1wXMC;n z5%7#eOSv2+!^xP$#X>njA|j zhcI}KV8k};?QC-S_7fRPS>8%D%U+cxo$~LO6i=fg?t`tgm$iKX))?;=D77OR#KB&s zou3bos%nO67soxD9iKuRC2tf6x+Y!p`U;>A4h*^xd+Z|V+5A;-%(hbM+zttP%nk{r z=VOP|!ZkWH%pGJQMYGAI=`yTEPwOfY#W5ATPN+qNoJqYjlfkgt3JFjpw$?1d8rGwJ zq{Cl04%*(LqD+3oNSm* z_Mzv8;1?}@mA!iH+rS0WjS_Bu3Bu}Xf!KfL_TI3z)sCdP`DqJ1wTHz`xY5O5Y;vzU z!IpgnU0+8?teuhYvS+Cf}g!t*)bM)K)Yi0eWbsBG4`mYk(_)Mxg!L)A?Hz zwg_ma+&z>(V#Np@b^6hh=+`vyZXw(R^aZMfjUHOyj!b+&goIbo60?{EN-Ex57}F z?NxisGUo2u2=HMa&guv9xx#gQj^*wUR~$vAmNW*KGqZY;iz)e&vqT$=RHZx!UUvi~ zn0fvPd;FM6tAcNW*h6o#A^RrR8jqYa<9+f_v9J!29!4{fOmV=V$Y=;pg@515at|~R z>&JD_7&u!ZC}5Ub$X=N+W{4p&bT{!WX!Gn66+h>MnE0kDCR%4N7P)hsnzZJ&9!*Vk zQqF7-H)XGzl2MVcJ%1Y}bSSc8`8;t<)y0qJH||g|%6eB`(%#{ssZH2hlqf!a9=sqw zQZo2>f#SKGxoEe$#*E?Br+Mn*NU@f3R*w#>(ofiF-#Xp&m;crzA&nng?`Hqopf6A{ zQ#v99{jAd-9EvDS%jzX<`?kmNsY>E8q>hf7z89!*(|gLH$JG_`l)`*(YWZb8kw&zS zyvY`etu8Sp@fpWv@t4Y}kc*2H_)p&pS58jOPR8;QfV0Mq=FbEo4tsTQ+LpfgK6_7s zs6Egu_tlI0B*bdj?*<PF>iz^1e6^^@mmF`?RUi7yO$Io96-;CMiDMo`JroQj#f6 zbMz@x>)A$OPyXu9&Vk&^2=boQ~qt89d{5Z z-xF38hfZgqF8~7~R{l|PPi@)E&@hb2X$zJ__>UV zUZAniR^%OZ1`XXfyZq?1o8Z!WCF@YgP-#uYWT8I!MD=R{{;G_}s^l<0H#2`SyHj|c|KHW01Saw8stH*QOoWkk z#jPHw28`3}RE90FYGzDz&didWQ z@oKm1T;2X7uPo0}(SVF8{cc8EHDQutSWKkRz%FH@J(MC@jc6pKO=h55z+~IX8zdx z4ARIc2Vq1LiAqS&ye`ilQQH2o`n*`z+}59IjmSkWUU!COoRayS&b1g39hK6PXgIT2 z{ROALQt?)fjAq_St4b!CZs7HDqKaYQw-**{y-FyDR@pZ61SH5>!b)~Cxrk-Apvbaw zX{Bk47q_@df2-nDrH+1-kI!X!tymxUvgQfRK%r`5ewk9i-)B)y^NqxA6@119v67mG zilL9=qQo|h+PEKnYeL1%QTXOR{-QFu+8jK~8f4E}KQU8Vf?8o7*N1b7vdxh(=L37K zI+@?q#MBmP|KWY7=T;cMI30q=`PzWjnatmiji=-dau^k!e_+jQ$0PHcXTRrb@i@Qw zgtTvvN9Ee{-34QN$*1J|_RwT28|a%PTBAJTx{M{R7%1t)Ubvyrm^YG|&V)x;9Pleg z%;McD`{AxOC#Su{#4`D_hI(HMhxHPbqP;EPg~1a4QPQaK=&yzne*KX=Z|=Ip>veOd z{xSuFo|f%rU*i<1m@R&Pb01*Z1`PbBbM{gbjzkRK1eLarG4mKi^9Y_cP2?+0ty1sm zx%IsvkpyoPF!btFwosOCeP;lvSR1~&GQ8QQf{SN?C*p>W(uYbW6o<5^S05>hVgM_* zh*{%^O}MqYrJX=2b{9}DF5&`GCzCrE@agL%)NEqWV;-vr|c9qK8dU|bD6 z=5#|acZp>FZ|OvZ5nsRkMB$&Al!0BJf9k&G3^AH=F3xGJIjNu5Q~K_>UDS1tc>_7O z3|2L5cEt|QZiNRwT|#KnW@&Ozt56(m<~&OQv}H-0`1I&Z=eA*nL;%yg&y|EJcSojg zg;yS4Rk#z}8MK@vQxYtN{}pf_gvI81@*2Af{aKnc*%4fZN~*0|swyg-Aj@s8D6D119F%b$AmY>)Ya z(4_j8GW$>bm#I0l-H9)&aN)tB21OykQ;9%ZD1I%}ZG0;9I6v6@WT6wBUrPjy^g~^8 z;8joe2~1=cH@#3i8cRm0X4&?V%M>VlEjLfytlHrLRYSXzK4y*xV{RsMMI^_Nh z{fV^}?XK&7QabRJwJz=nX9A+FfYcQB_Zn3Sjkwq?$_e(Xngc!;%97twHrKgfzmnm6 z3QlTzOmU(UXyI*B3bmOyd+vM=v;>sce!;LWCr=uO*Y3z(j&x5{5z)fpC66hlrk(3T z8}+i-HGqc7xg~6c%--n%cwZe$1ST>z_(_~E_J*$$%Q=XfJNdpf4KN?0|4dMn4hY!%^)CdEMPjx$5$0%0-R2}rjk@~T ziTxkY_mh*8&YtzGNZ$J8gvPnV0sj`ORQyDR;a^ys`;dYGT@ncN)#zzuTfz)Z_^ zu)T%-gOFk3H5a^&iqCHt=3#u+Lss>sfUGo@q3B<1*l$`6c#FN0B7Fipc$CE z>@Lxn$ZGA#Y$gfOXB;gd#Q`OG%h39cT3$Z3|ai>NGUKD>34kkZ8|9n;IHsa&tl(5InCM7lf`=s$& zNq3fc-#hKbi!~a&7NLs$F9}!Xu6Oe`&d!nUa&rbFuH0r#RH2pNg90b$0 zPjCgD**uymqk0;t%p=ddw}1E7_%wMk^YMQ7_S@}b^__5wk;~Kr09pY8om0^Oh zGPG)}A}LVAVKIo#0pWn#PyH+w`xa5Y z0)w}=8*ekmk(QQp({|=YK*7?~D8W6A}>E^+g&CgAj2H9ZpYBZ5c8xGp#Yz=%gW3%>Dj^tRLx3 zVL^OB(*QsA+l!Nc80BQHP7dxCTDBO5*s@HqoSK^0mC0&-xq`-s7nePoqe_J>k)v72 z=*K9t#xcXAyw94nb!O{qLwK_Eqr4cnpI>(PB0BVEw2ZsjQL)_Mvc1kkK z?7co)jth#*px#6%|3G|5URKxP;wD$fMv3Eph7`LFd zKf!rH)$9`IYsE$fg=Q_}qo{7cZyMjzy@4`6pEZ^1!{nBzvjt!7B=R-$<3&r_wb>R= z&q^)l`1W_`1LWo6uXCxp(!2EI*-fv_4hsD+itLuFM-yKo+s!Ohri&(KDpYO10A8St z$iD)I$+tO01k`onJ}8Nx2_xmd)N#OctvYl7CACv?Q*{?!SRz(j z8HM@fD#h~e_U1)-YKX;|?MCJ$Dd9tLK-Gm&b$#$k)@=(JFRt;5G>!Eq)m1;YWrA_$X6q(OVaPx`2J!c)cvi+?MA88a&;qO^Sg&bWf=NPhgw2&t`ET2@y} z;Qy5Ht*T=%{?BBKvomc%|E(6v>b~xH3()Q|fwTB5b*nHW=wXOAOLGWbk>4Oo zJmzCw3Y%u3g2IL95HzH6I-?Srf0L1;nPdCqY?|t`c_wD5ceU_9a46{X@AK1hb^puJ z^UWcDa$G`s=~{Yrq`S^HBvK1fOMP#@wtZ;AjeQVc11gEEJ~f5bktU0$kALL0@Ue~a zDfAhN@2PHt5@3w^PSQNn+#+g^i*>7F+>4xcK|FeCp182i=`bk5X$+yMnm(=Gm@C(> z7;19;=I-*ReThqqjx2ah_Y>i!hy8B;+P|f)|BPgNfNzP;%s%OEP)`|s~o;SYb`%qM^KB>eW_a^BG&al6wyg;8Q7`@vaImMA z1FeQ%yG_~biVHe|RC8cy!u}1UZm3=8u_N;ecv$<%`!Bq6ct3qT_GN@6$qVh3mxJ=Mh0l1whGy)kvgX;zwAej+b>-cA0EfFk<`GH>@s ztb``DcJox5j=AnWN}*A*D1429~2pm-OIS`Cg@Fv@Dsj zZtCMglU}cOu2fe&P@-T%e_F(!{vH1OX1DOl50D9MO{0DeLj3gA)^mPVM>+glfW*;7 zAtPFk24|etfA55Gik?yDd<4M(e#iYQ;E|xf#42OZ5!0S~bwx!SvdU?z^f3vfg(JMN zqn6yw`9-lH+jyF6?*=uEpRL(S#b8$fd5}H6sUtH<-bulM8*~d{Dbe?-L2Plz(9-)f z^L&G#~F;8=tfMJeP?o(^CX`x54JIQq;e4ZQ0E+uht#qQ&EmBK^K zvWJdb8lj@*z4_CH08ei%6(>Z^fL;6S1@TXLdlcMCas`r2u zkbfy>v1Nk@cW3GX)p4G`>sU_|A)&Att0st}``;V0MV|kJ9gnfL zde1+GT@UDo$ukm|Oq+7Yvon?QcLk318hGKKCQ2O^s@(W*mxk`#cjha^Zn5=F;7Xq- zF=gKJ*4RtAhU}PYQAo)yp5rgsFD^TqIW9YsWnQ-z2}%yzE*EW6UPsZ}Wt_Ge555KK zwYPeV=!p@ViiwIs#z7sG^P!0yW~$&S^47zjE0&Fyhswi1_tTtM$(WiFGuUQ2W*KK! z%55n%@r#wqIE2Dc(WbbjYBbbRF->}}kXd+Q>-nsrrOb39{|npNK>;+fn(0qfLh$q( zS6fDg1lQ@%E7)9*y}&8YIz#iN9W<}S_vnmAK!EIQZ+_6_EI#oHYari6=zpG5`{DM} z^)mOJ@-(&pmgTh^+*>8ht12Ts?aV~Zj8A>o*TvXxtpwY=zfmGW%>KtY4A|;JoFc(DbW@Qg^o?<6JbndxpXl*N&-Hqn z;!3CI@VDN-C=G1j>K;<@uNw7agiky#7CC#GO8K}EgM8zM|NE0lkLK?8qVuX@ zwajXPFv}NHT4B8fFUyw4^drRpiYG|FM;vv9R^@i_^hNEuQ22{<=2C!W2icw>VNatD zsMM~18<3_KKLY74=81`^CWT^@Ja_l(VkLl5`&10_K90(%Mu%=f+aKO8ASYX_#V3-j zi51sfRkzIBMI)@pBs=H>Nid*z*jyJ%K&7ZA~BZnorWQH!hqWC#oj2| z4yH9Uheu zz1Xc!IN4?VR{z*i0rI?;2kR7XC8@K;zG<+_7j(U+k*XrAn_WR3CJ8F@e07Q@n?I^k z>+q1=t{bBk{9byz5~0sD&R6ukx-<8z!zME8g02U#tLf+;%bR-Wb07hwTf>4FNQUeG zmhE87KNpOz{uvFqPjc@6fBO3BuqOMrZ$%Ukkq|_Y5M*?SNT+lo-9zbyfpm$ebd8wg zq;pJSGz^hOK)OZT1(-=c`$}?522C< zW&-t=w8i@Ue#Xaxaa`{7-J5`iRh&1g+To>| z>dZ`s9T|%8qA7+}?A>D@)wc022s~Pj8 zEw>=vc(TV2Fuys4r29B@N4cDfpg{p5e^;$lnL8~9W+H3nP)3Cx>zK2>8G3Pc*g=Sb zGPr9mjENRxgvhMic2hQpV=XXI46kYXV55BMtnR6I{z)iiYeGH95bOCxy!doaIt6X7 zL@9foXkCb{SCyb;ABHk>?ms*}dgH#N&(2xEHXGJi6Myi?x-aG12CK#DlmN-gv8;+> z5joEdY%GGfb>K;ex!LUI3g$B?IfF5&sNPzQ`Uz1LscOzZX6DcFi1V}-?xS5v-H}pJ z(7f0A#_Xk$1?Fzfwtt!P7A;qH0=O^bPOKbYP5fw`cL#ZXb|qBjOPU)aO5w|zKRhh# z``XJ(@GhM=88`9`%}FI^-A@gL+_gdy5rj@<$QwqjgBMd2i=gCe|8+?IT^fb3gXYD6 zQ6G-8AD8L@hP)SePXH}d{H9e9iJCmlyvt|w5dMfarla9UWZ)@bl1~p)TetfTeIoBh zwSEn24ogKccoD?#&SEauXysFX7%na6Y8moMeYJ z@xAjix|8I~@q8okj1{k|30wNXVQ*?~%^D#;d!| zTwGiXj7+kFvq$m{vjvO#QOWoX^MyxdjMw#WkW1J$K2C7ulxx4m;8Wkn2AaZ_)|20z zSrjXp6Mi7w9G(Xp#!H0pWT1BjG6e&$g$9R5U&FU>PO0Bd6Jxs;k<6!F88JI1JW2-i z0~va*&OAr+zF7)>R&T(?6(s1&45Pa+&`Ek7+7;My;>3|3=m-4`0MHmY&-XfI)TP~Bfck~7NTmE1>X}NK7M}}OzUzT3l1a$LEi&o9f`oLWR z5=uWI=lmSGlKRrZ>$lGN`x^GF(y)E^`waEiRe64qV(yF|N$`r(r|}KR8VkOjY|u_E zmp2}rEmvJ^TKjY5mhHj=7#)?8G|Ly4#Do&?15gH#RC)tmA~~0NX`4WHltgL?QD}BxcvZ@J9TLDu z!*BMXA~`HciF*W|U^?G{)3UWYsF~+J`cPe6-T95j(aSoj2$VC!AneKZ2s>l3t|9_} z&{8b8LtO@;1Ztsr5R7l*dHCWu`IG?}b}GqfY_yenIew$&A1pf$NiS0vLBF~s_xHst zx;((I@JOyH&gq!6=j^}*^voPB<8oBrD{Zo>Yah6c@u>Sq8v}#Qd6N|8($dqjdskJK zXlSTH#ldb<_83;yAsKtsaK4wj80@^Bc_`3V44bLFg^4CN3fvyt;}PX=snOde7&9{< zlt(5X7SX2S$76EVmQa{7V@GSCPW$7DH$*_jp?6BGS!S90I=PV2XVyvgUnDVVZUmk} zj;DexyjNR39LHdXe?}nBLINWP((C6>;<;N*FVUutH^pi8j+{EaPa8=x2ayNWW)Y&g|)UP#?FU+N^z?J4L)5yNYSKwMKF}IT; zMn-QRQ5NP|zi@w!^kACI^9Ds3$TU{4ZyFwJ>~$z7P#afqpd+fTtEXu5Pg&X?XRLN_kfr#}f@08z)s7srd=V&-SgT_b4%xDLhl zTqAd^ZMHHLUzIy?9^Nz|K!_E!PSxOyh=c@l-uJ6A;Y>P3^$)L7Q zaJ;?#`(OXmJ`yu+%MSMG#>rcP`ZV`hO-I(`l3`I|HT8jCi>cbIiC&q%pRKu4O^$5p z-rQHBTmzuRES^#G<8lyGMXfwRyW)jxQzhJOY7dYVKn(#pl zUGPo5G_=Me$o(J|5?Uun$sVznij%fh8U4x>jqC}- z^gVLr3&yZb$xkJ65-RBW_Q7{5N=wax+Clt`d$8t>(cVWptMYUVlKpLpU?0ydRPsCa zkMu-@H&*NLKVoa9wGP7hl9W1alHEkY@-{j%4Dfi$Ya3#-3N6qUGDt9K;;GR<&D28) zH`5o*Nv#DuI(+HczHn6n$Q2k*So*O|G<S9Bbpbspm7`##pAm(8EJv-U)@#D_L@Z zU38=<3-fDtb)g76`~9I}>$kki%7ON76?blA3R_MiK0Wz*xQkW>ogJ#aKWQW1!Sjd> zFSb^8(;K2Ecpo_pLb>>R&2g@w0tVh1If3**h1NMss4~pFQt? zrP`lz7%F3O7^~@<+PQj7NeDSP+C}{aYF}B*r*-NY4IlaPu~>T6{AB%yHAWK@3~l2@ z?0^<}txaZGwgnrz_&&4+FC|ba+xhsvD#RPv=lfG2_Mb5T+6UmbC>aAOxs!(M_iEq78u_FA>)!8NRfRS#lTVk1imMnnxcPFOTVWSx{O3avJQY!Sz0#c-9nS?`p zlr!~P1kLYOsYQQ8bl0C4CTKURBy(<7ws+!nReNj3TkQk=2Ti*B#uSqLk1n(#_q4zF z_ONO3)VQAj?gBkS)MSw0!gu_??|?nvF@nVcB7Xtv#P=av8r` zRj~v0ebmriGaRYJ2Q-OI`_5r>H2g*w=@Y*}?r(R+ywG4QN?~;NeSRt+VKx_y-mUjI zJJ`L0J%{KQgU!NU z&~itISpBJQ^d(7+DP|%^vrZK1E}^W+(o^_S`FP-<9~Mu6+@PZxfTRpa(~L9W9hgLC z#vbkR<{9RyL=NMVPATm~3K+FFSn7K>9&`MJ$D$b{oRS6*iL06e|Y!-<66;?)V|J#(E+>sb#u3KrJWqL znOO&U#Bhe7({|6Z6t`l2C_9-9DLXptF7e&g9_|Lor?!vCR=t>Rj;)>RWVENP7AVnk zwOX363PjF#_Ba@tky$vT-xJqD(w$|V5k`2fa- z(zn!tz;domod~=9G`+9-Vwkx)8P&T36D;w1!+{vNfKhow#RZGupiWqW<)ew}LG@K5 zGZ2mLy|bgXn80H@Y7q|(xw#2NJ9~Q3A+}g8$vlT>S-*-@6@cig}R^1$P7B0D>)L!cdO)G%Pf@D9;>Xm$v38@B#| zNAL$k(@{6KDk)c#Fvy59R*sKp^o9H;H(LQ}RJsu}xU?Q#f7*dR`A9gN?WR4TZ>?ff zZ;vC#xlu#n<`xiK4rR_YIJ0myqx;%cP=~%|1S^~t9hUWol?ZngD#L@p>?*r=N*|<` zQpoQZ9J%k>nwL*au_1ZGtHRwmjMz&lB(}D)N9>9Pkbbm5C}F^0Kl|}#U%)xu^xprX zre(0K<}X9p_l^G#YMS{&GX&&M%kt8(z944m0?IvfSlx4CL_Kh${?t5^GxO)1qvcU^ z5tN{)q_%OR_x4e>{0Y(5QkDvDq=S9Mraz#3?!uBE;{?y{mz~H`Icd^?LR=p}XWMm? z)!lo%ovPx+iW~hZ5Pq0nnDyysW$!qCPiVSWw3c<^lcik&yvuxQKd?)mH-%gqpy^_`Alt#S3vQfOPwhU1hy)V3#5P?LNgMhXA*_mR>WouAnie0 z?Bay;IXrlK*u9SI{CwuqQ=iu%uQ-yEdGzK`@2k~#lD0XL`G%6K-)Qz(XG5b-oLGl_ zQoqf_j%rvvoTQR)WvXnvjl`xZ1l`wykNdAqu0oF#T3~}m<103z-vmtsPekp-JAL@E zP0)?03pz#cevrselzF8yDnSxTDPYy%N;$6q7xsej9gyM z2)Fcy8#Alq4^BF{H~f`TMnkbJ$IDlnqL-)Q39MgXl zo^poeehPcN6-_e`wul-Uq1a%&!#thf0(e1b?xlaW^XSg34$>V5yGC};XbVM?^2e^k zUttH&UwLZJCS2M-o@n-b@%d$YQ$)seK7r^b$?zD3RQJUnDml5I7TZ<2brKVv7?H7V z0oIk;P2?|C2r2<*X@Pk*rV((n!)$~|dL z_vG}m=7-R_aFz6VN1c}|P+^Kz^O2G#KRqg|+ZGoukK6hK)u^`Y)+g!(6o z)7gFE?~T`@^uIbk=?OP%|3+j#C_!ur+gFY9+>ZuIMGZ<1 zdX?=zxD>z9xm{JN`0>0vWX*wesY*wyo;A9N9Bg?{NQbYzql451FAL~wAyumBs+Y>n zT3Zw*MWU12Z*Kyqrb+px>s`s0@0i=PFCS(8~HWUw#Y|vP9BFz4R%UdN`MBXGhu*=y&2D>biQ@1V zv%J6CuYaEe$%kWy$;sQ*it7J`oIxFNlBWea-}wk)@sr8u0k(OMyWeX?Cg69K(VJKq z;0o&W-P%385zrYr#n$b3Wvo3>W5~4iEW-|ltz_Y}Q^+CX88bB3B1#-Hh%{LE5ptd> zFnbzjJoor3f3C)i9;q3xMopX2(I@~?l=f-W4Rdj83@+lDQmnA@0U#u6gIsAR4ww8Bhb}_g6C4v8t^YmLQ&?0 z_V0b2+fRQXfltq;lm1$P%jvc@rx`#lL)cV$38;``YID^d{Px&Y+9?F)vdt8Ffd zWqg38H-Q2-jk-%2#No|)x1F=|aE;r)l&V+0ECt#7j~sqv>=B#p7yEj#%f~LBLkAct zhg#Vav%J=K7$bFapHbhSci*&Xx`#8{W?0nk3b!4cZF|skZ+vt3Pj>HD=|dSk)-skE zD5Srvg|{2H@cLfS7PwrW2*d z=!;Q%stiq&`1+-y1;U5-+i3SINC;Mg1;`3+!hYDUN=avuNp~JdBOU#%OlmuA&=^-X zn4YE4!o;8k>)e{A5Hd}@`1|OYQIS8a+LEk-&AOh`gYVFotI^9&eN8xD^TWd`;(ML` z(9|<_CwvO-40`G3f0wJ6UvlN#D{A&vxr%yg(LVfxLCc0u3_EX)Au*KwrzSYhf)6lY zW+n$~6obRLI4Q~*kE+6x?G|EUB&rs6Z%aJ$*P|%Ecj{PLP!YwSILyZC7PUWmpj+c` zUwu`(t3-B0Vsme*))o4+h|x64-7=R1^pmAlJHHeTp2vEyh2N5o>l^O4v<}`TsDk=3 zaw;i2M0wZ{#eKS&HB(?s5H>6f<{SeEVjM~zm+vO)M5O=$I?GfAqWRyaIsF$=HCYF} zjW5I7*>d@lp}?Lq<4ZYtiU488siF-Bh&U!v>w<%m<7r5u&9=dqYo+ngYaGSTekx5k z(XK};2lm=mx5a7;{whJDe%Q89I&rOPn?E^r{|KdNvLwBxQb|rxiHafwAvLUR4yNC; zX)L9Wx2hd&j5?DogdfJMjUev`5>%7PjFD=Mkto`a7{;|5tt55k8RwT+^lCcv)|tXO z0^8OE*X=kD2JnzPkPcEB5B9I(V z@(cz-r+|dc@^fmeS~%e3DC50RN$n<4?|8@6QMuV!m%A`0{?ieb=QBj5PqmPSXToEM zOQDeREK@oW9P|vw_g(Ik3?=8`NHgu)2^cNB-Xg@9qs1g zc0K(3NH~z4%qPxGYuHzTVPz~$N>}S$aWwe{K&vautd5(;sbhG_Q?0=-nkM$&;qBJF zCg*fsl}kFe3t303zH(9&lr*{ZYBy>6>DG_<&@+ddB>M2>c7k0>CcQNUI`Ru%&p7Kn zRGx5`Zqb=78d|HMhHyy?XJaS53A~k+-3!(We*W{Zsy;M%znz-aZq{kNp83b*%w)_X zUsv;?fSGN6r9dG4|6;Q`K4N97!-`dm^bfM-1t#dcb6Pa7-t*K4T;{zw%Z>x)5O}Yo zm;|QQTCs3eem~rm=?WIoiXOHOD^FvUsp>93>4}v)9~2)BhqPy3y06qtE}?wHIy(6h zuf(a*g3m`ql|RCS63n%0MfsSc7dt#dWhUVMm6P93E$aaghid)m_3GTYqy>)C2GeHF z<#K;fBg{(U-L5iW@nW@^^Vj0R4Se~hVFeFE$3-aNbp#qdl&)qRm3$5Km&V&3)(xfp0R-OoD z{He1PfBpcH*}EsO#GI+UhwX9J6QQ=8I2-+lVQnqC8N8tAPj%*?l`5~$$!2It5L-9*sMqGWK z{Xt;1bI5E6Bp*nSjr>@@R%UX0Qv2O)0%DMA%cmSf$m3G6!bP#I5aq{5jH-Dq2Ae&O zX6CHsRuiMNGpK1(H_;OmxjXx#i#1;Ld(Z<3xi;P>w&X&*Tb1p#j($Z4Ce$bE&e-uD z2_;oA`3+oQI&NM4=!R;_%W~+dx+8kP&VE5e?)?2z!i0rEL@&AV$V|bk-O>y0N9ME7 z#_+H!OUGP0r)nI~Ddur+O1y1EXInnewl|>KDM??UjZ%4_0i)G^a+R$kqn_714%;)h z47GE!vJRvF*3pP;&50PBHRC=XgNk3 z(|x($kYL`4tDR_v$fTM@YeZ*L+n?0=t4#H<4j{(03Swe;i^_q;mW6q;`TM+eDI9Y5iAEDE9dc#333 zVO^^)r_~7Hy>`krIDH#w=&$3dp|R@w>>lwq+$OBjcH5thnycURj(B^_c~=%iXM30{ zdd~UGP49{f3$pb^Z>ILYyF`^R%q&4+ zM$garS2%NqD+=$A;mmDI0tXvW1w`^NvjKh=|ENOkqE2Bt!bdFL1#p`$&IOWmU#q>1 zi(#NYPh)iuAD0pwUs;}(>NQ`a z{>hK`bHlNen*G?Lm3Kq|ratlSlr{>0RlT1cP0rI;z3IOfS99~8*FJt{)xx-!UsIg^ z>5A&?6Ks%eobj{7qk|Z|<1vo1rtYwW;;U7AdL)|{`zk+@$#9mY2<9C3EH0n|f!8>7 zp2xa*9~$ADnU#(=vitWa-m&<-fTro}i8}$#BoYDTI}d9SF+X#Yr}^oZutsj9AK$ zGV9w80H#9E(YszwZ#zJ`ZNL#|97Usvvs_6j83#N*uoJusyNn$PocxJ4`0|oU?6xz; z2eeTU=;Y5etOjyuVuv4(`~^Wb|N>x{-=luG`z2mQ5kT4f;DMGLEMuuM-fh@-s7f4C(h#?dbGn&fIpi8uYVDO zJY&_H6=~baopa`&^JLmKA!Vs9y3ABUv`c7DeBV_7KqLgl_WDO$-%c)A=I$EqY#Ci1 zuPt5l3Zr?;4>D%|$e+KalQd_`zS?shpoM{aEB|0Ouz2&!i&xSf_9vp?z}p)51eBzu zFc@cDU41roF$RW%o4e!u+>e8k^Cr?wM0Pr={k$C)>oGy$CI0Nvr?hu|8YM47)^m2R z)ov^6y7S!g!X+RNd|OICu>^&Jzhe*uEMh<@@5`@~w`0|>rxTvU7`(|o2-$ifXiq%x zcMiC9oq1mTPPo$_3-ji#oVQf!rv%G+{RXbpY#G{cR$2CpMs~!jfUmCb!0~>HOkEc1 zWt>Kj03Zsz67Sg}u4_3t;~4;^ulb9clf_PAM7tT%NdKJ(GB4#@&mXkEdK&xI=7G*g z=xB>n2@H;HASDtL5(;Zp3iQ=( zh#gvUUEPD#kbS$fo1YTabP9_+i_dIgZrMzH8xp4_DcMxP4J|Omg+0802Pc&dSZgAw z_v*e93D#|NloX%IggCO%b;p|Nn>o zIcltmGkW7hlgc)PgVL@#n@58CwT994^N#}6x6O21r`t{8khj0Z85)z!si&DLUT(?+jqX zKhMIQVQ%5vKnQO-TQ1Ccogfn@AU-BCmypw)SEwo6BCACAnr|=e^b3RbmsHocwmOo5 zK-*r9*6v+b2M34N65LwFGW!s_BZG+}vZDpZtjhnQ+W);P9?rSty0EBaAO7!m6~?)$ zHhX$>>J$`9E_H+OVF&_WfY9j?+3cwjgE67I;=cqBvR7^n7&J6Ikt4K23*ea$f{4K+ z)ovasK$ql15>F3DF*6UY`0gQ5-Z9Ks!HF?D#ecuS|J+4|8T%sDmfg_WzrD#Id-+$? zUYcf~bMU}-IvG#_$R_e>=O23UlT@lVJ7J7$Y;jkmG+cM@1XbhT;l^K`q1t{zL_|27 zFZ$J{n{FE+krD8bvjrhdb7)?`QX}tt*ZfM76r|p77GN^41W95T9c64ySH-q((w*&5 zq3pL)=OzPRUi+Qbe%;h1=o%@A`&#Dh-w5`$nOouW=nfy(ZJda155_|w?qd<=Yt&Jo z7m(#Xg{O==KU|!Ev!AC!ovI%(cXWU}ydGR+XNUGBbc!!%7A7o?n)@BV(nUlJ5#`&d#2W$P85cKv?{(yt%)R28>mG0v>R48^dfh?5Z) zo?j`bdTi`FKj$kTf=sbm&3dgbMFFEVl9eey(|{ zv?*Gq;MAz3Sc_7asF|LBk`GcYrJT^9HMPri7Bv@jZaMCHod72eVh{|(4DHVlPoT|t zFC|UIr!J}PU*t;U4fQR5;l=a=kz2<*ld_Pf+YEwr?)Ik{$y33DdXOW6`qA zKq*D`!}>Mt#p8)uoA14HBN=fw?B(<(Q5Bm{eSrKIrA2`cj7Kf&pR;>g9t}6LMfGG? zY0$g71^-cxylqZoeoJ!HEg^OH_ZR<33P*8;S6nado`pVabWxZ0{LzO7)QtfTeI-PrmF7{k^@NI{Q!n?CLGKlVGtHLmfZ6vS z=K4L=o1g`sOe};Ls7nE z1YhpVi0Rj{{T9GTp4XIU-5cZYVqbtqW|Z!Kkz8X}9DES>$&D7#-wre*9>3a%;uA!? z%C~tJu0L{zsotbVDwjd4dp;eNlD%tSHXO;8LUeWVttE?X)XAZp8F}jXov3)+dsjNG zVJ4i?^eQInlCu@BdTS}PM$v(t-pSN0hsAEKxVAXYLg|?tjA#8|nCmAPnK8wH%4n}u zC%wVRKt+>DK5T`N)4-$g|1wIIXikaY`~JkO{ep_L09q^Yh_!Kxcf08j8eUX#m9Zl+ zc#&Z+R_whWSvpoGv~h)Z{py!Gu>5X03X=3wb}BOF zAZp6My%+?n%|GC1IVi0f(%aOSxS5}Dme+H`Rob8XK$O>4r8@2pM(!WQ*5ICc+(F-={BZi?X~>~ebqBSFq*#xqp5T{l(D6i5%2!I6witczp=;C!`z5a(%6|)D zXk?%C-Bsn?we7eV54hyWIA2vSt8aYtZAqm>F|__0oJT^ z27Q0!QuEB>1o(Z91Dz_8v9g<-N_MPZwFjx@Q2@x`3-w2fZBbsQ`$f9+zY2YN&pI+u~%qm zqm)_nkH>!TI2_%u(SKhY`cCcsccpsrU|=+( zzG9BWPmOQ<`JKVxv@1bH0;1!xCgJx!Z777JP#HP$_n)pJ&kyDc+q4F~V%Vzk<^FyB zE~@y))yTy!(jjJabhTbFyJX?MyBJz7lWnRZ{#)MZML#7jic3Pb?~n3l9h!81^XkDiR~wmickR~D4u!-yhQbH*0)&d8vUk@x8^v(Z|3=vAx_dfb^yN)ohI7w z!E@pAH^Q=GTDuw%`T4+}AXjHCv#~0!K+K_J_vcFEwH|x811da*&Yv`~hu$a!11+s}Y82O*-9j?&MTQ+HM7BBf78m{>6DNj`#{KcGduB_L%sZmbEE^ zdY%vKl*V!0r*iIx`i#Xa+pwjQTb=zYmiI)y>GGxGOiT)}8at6KPjYuLUYQs zlD1cX?FnjQnAQ7u09AFWg@;aYj}_-9Poh#m%2KEWHReO|ovrO{)rLtQT4i+sv%Sk{ zeJ5134I(!LY@vvgN3Nk)#BlYfAcGMZO>0A1+FGM1gW+tb9#(MYIVjYzwJ5k{qe|qW zTql}Ot0|XTH>L28-g%0hESoCPWu9pCo_!XaH9vW;1`hQP_fw@!6qTRO=Qv`EkI{n6 z5XQxTzM9kltA*mM3@AmZuHd;5P>v4A(sRDBwIW%?$vbxlws62ly?*0$v{x7efX8)IdJe7YR z^xFZfe*9eHC;WM<&rNAym$9AIkm1PUy2ikY3X6O9bG$Y7UU#SD*bfT#2YoKuKSTEA zV2ISR^J3kS^o-Uu%-F!jQPz-9STLpf`~jUFd2$tH1f5vuCtG>!%7Y$$Km%gVgJow! z(pQH}c4DzS_h!BML|jyIC{W*Fc+O9gz=toZv#4BB31`-)QDfUUivGnf*QI0m#ywTbH--GY}p_`LS68_Z&u~o4`oy^&_$3RsXP5Et@a}x&P{hfhUkR#~@)4axsJ`I<+o9Ki4JxRI{Hw?PAwqUCg`co~`OZJ0?#s^a8YhposjyP4g!6}6?s4sqo*zDZ|V7+TMiJn(Vc!)cJfnxKrG-M zHtXp+R!s`jTB-$t%ca=zx0Kso2 zijy?(X3W`WB(4oEMmBjm9o>TF|+ z5tSaXg0`tsCHVA_2)581+;yKYoxHcIn}^U%Qqq8@kgYrsTMoS|VUR6nko;ZoeqK#u z)zp&Eh(W1K$Un|iA;Zh_;g``*e6OG2)!)QYmN2bnK+w=(67A$IVgqtR@PH+(_OLNJ@S}8US#a6Gr9T0vHi;h^T3v{dnc=);s$Wq#mCvVWPA zCW!Id$dQO+ScGcy>WxU<&13M zZlBo?p|GLGY(WuJ#3hCjbbKD-b=XU1zC5D)Mr5*Hh!R`29g6TJUbuueg(j-g%5lIg zt~+V=_{5)+g(=Te#?ibkn#k#5=ktj)+&gx#vi02DQ3G%8z`qXs|A-C^$u_@xa;23p!N|Y6$}wp>3MrCJ*V=WvhSK*GRDSoFBTBU#!0LlS z(b>4Of?!Zb_Hie37W&d`+`Gc0>E9kS_)sy=UeGt4RtHAUUSW`}s}r{0VWskX0+g^1 zZ8ZpQW^upm$NY4DR6TV5)btuoZvak8gIR|B+Nl~cN`>&~cd0EGw)-sbjW=3VKjJMx zhUS$o*U-2A0U=syp9|ErN>lyco4hz3YP=mShgm#b=|72YYH{0*eRFi4$7OHT_)?zK zg_wBW#+N-q{E{Ci=1bO551+>tne@%9x4$HvwO+n&ez25YbGE%TKl+W^e08Be+ufem z%t{X9<t)h^nI`H+HTS|hIzP{*xo^6pM{K5$ zHk0gcS^)z66@R(nZISxJn<(i!DNAUD-3xxsOyK>-EyGQVz*92NWF|pXej{ zSxTRrM8-w1Xjr*P?}CB@_JyqnwlK1!Vb+gS<%8hE9#r`vB4rf^q8R~K{tYM}Qs=`X z@HJ0MkhrdZfZ4%edJSl6q2_EAQs%W4A3E{~JHvH?me4waM1a+?;)rUZ$jK-U_*N(o z=VW&BmG!Dph&I}h5IzCb_~(@6&dt=@i@d3=6`-PI|XdLqjX+G#xtwFQ}Wm$m(YU zC}z*ckR4-z$NrUBl%7towiaU%L$Xc&Ti{2lhT4^=gGbe7mhMmP>y47LxabaeHdf=- zMpJ(RAPw+2Zj|c)xWNGQGo7L5cn>#Q<8yxDxVcFZ1uoTmcOVi%AM^O3{n~>r19?$R zw++2>*RcI6MVESH{iA$l`CV_jc#>){-bd+90>CCe8j<=lkl$p~LWL7GEmX<6{sC0% z)ZOoVC1U(|U4vux;;GdVB%9~SbtmOGm(=J54WvH!ea+;^tuDudje(p?#Q0d&?Bc+> z!-(UQUv6^Mz=m4a!(}ttgnr0{=_c1+H`Rg7vp;a(FUQ^3?pO48I0kRw4{p2yZb>Jr z6sp(?LKV-C=^>3&zFI{q1UO2~JZ==*$*-UR4pOc zdjUlL=%$gbJ$r&Ct}%qOSO<6qG}fj(O^aT9*d%9b26Pe`6QMfX9MurG`8Ucb{i0k# z%+2iIDK{1@8GW@@pEVdgESB{1Ibg0!YC>aAmQfL=)$^87j;jBtnVimr5r?W^N<>ho z!1SS`trqxx;nyBC03f-RCbMNB(bso(e&0qwEhFHOyy=yv=-9!2Jv__p%>%a$-Kui> z%y@>MRg5V2{pKJUW#9-YDE?J8(fYtz=E(p(X`wcPkNoBlp|dytTs2mcAX(6d?%5#^0RJ)u=sovIt|z8moMic_w! zstKmEVQOM=$dDoW+FDPSePIrJdf{R%E9|G!zn1d9usjywm)^!k)Paf2AJTu<1+0v( zGNWV#g{;=~3wg=rB2)XI0na}>dAw<6Y0 zLJr2mpXD@)YB~`voKbc~W4eM=PWNvZ%`u8;&HuCvR}?4xSJ&sIzoltbh)%tmnp?Yz zhuz+`PPR9FW8IV^*uC{2)ATr2!2@(4_xwOJ^q|5Y2APKoSew;~(Gg;*=lg>D&GzEu z%XU^GLKBHA!~HbW;YB&s+78mL#&*?nqp1l#MFmbEcy}q=1eK|pQ#naBtH}6l8^7-N8qJtooxR? zGadZ6Dg$a*K|R_ydJUVze<<3gWh^0E0;6J${w&;3jH_f4<`{FAoaKn6?+p=!`xmgF zt=BP=kH{3Lp`H?J4YFr9Rxn@VaRmsn!3s)Qd2#wm7)#{@duT#Kv>^@Ym^EEG?~&_& zfF~d}aA68BXZDKhn{di$4mXRG(OLFlHW<>mCt7@bhtQd3!o&SS?mGvEC28r08fjR5 z=msaET5rtU%8Au#i84EvCzDb|t_KiQqRT_JWO%lo zQQ6*_`+lEVHf)n4*EOMqW5vC)g`<5$6pr?xaeul27Xn}9jcAD_*8J-)9z2c}YyEtG z{x0V`1YEI6nmd5p^cfgAsWncCwoo66FD}1!)V?%bkfev!7DWygGxpjjco|JM-Q&qW zOn7cOFzdE&6vfVf8eVqq$<3 rebuild` to pick up the new OpenClaw runtime in existing sandboxes. +- Hermes sandbox startup is more reliable on the v0.14 root entrypoint. NemoClaw precreates `hooks`, `image_cache`, `audio_cache`, and `logs/curator` under `HERMES_HOME`, makes `/sandbox/.hermes` sticky group-writable so the `gateway` user can create runtime state without removing sandbox-owned config files, stops precreating `/sandbox/.hermes/gateway.pid` as a symlink that Hermes v0.14 treats as a PID race, and clears legacy PID and lock state before launch. +- `nemoclaw onboard` ready output points users at `nemoclaw dashboard-url --quiet` again, restoring the dashboard guidance that regressed during an earlier onboarding refactor. +- Slack onboarding validates preconfigured Slack tokens before treating Slack as configured. Invalid `SLACK_BOT_TOKEN` values from the environment or stored credentials no longer cause onboarding to skip the Slack prompt, so the wizard re-prompts for a valid `xoxb-...` token instead of silently advancing with a token Slack cannot use. +- The Windows bootstrap script defers first-run Ubuntu account setup to a separate WSL handoff window again, which keeps PowerShell prompt alignment intact during install. The default distro is `Ubuntu-24.04`, and `bootstrap-windows.ps1 -DistroName Ubuntu` reuses an existing `Ubuntu` distribution. +- The blueprint private-network blocklist reloads when `private-networks.yaml` changes on disk, so long-running NemoClaw processes validate SSRF and private-network rules against the current file instead of stale cached data. + +## v0.0.51 + +NemoClaw v0.0.51 improves messaging controls, local inference setup, sandbox diagnostics, policy validation, and onboarding recovery: + +- Slack setup now supports channel allowlisting. During onboarding, `channels add slack`, and non-interactive rebuilds, set `SLACK_ALLOWED_CHANNELS` to restrict channel `@mention` handling to selected Slack channel IDs. Combine it with `SLACK_ALLOWED_USERS` when you want both channel and member checks. +- Local Ollama setup now detects host installations that are below the minimum supported version and offers an explicit upgrade path. On macOS, NemoClaw uses Homebrew. On Linux, NemoClaw uses the system installer for upgrades and refuses non-interactive upgrade paths that would require a hidden sudo prompt. +- Non-interactive Linux Ollama setup can use a sudo-free user-local install path when passwordless sudo is unavailable. The docs now describe `NEMOCLAW_OLLAMA_INSTALL_MODE`, the user-local install trade-offs, and the manual `zstd` requirement. +- Managed Ollama model selection now uses a memory-aware registry for starter models. If a known bootstrap model does not fit currently available GPU memory, NemoClaw warns and falls back to the largest known model that does fit instead of starting a model that is likely to fail. +- `nemoclaw onboard` restores the managed vLLM menu entry for DGX Spark and DGX Station hosts, which had been hidden after a previous onboard refactor dropped the `gpu.platform` value the vLLM menu builder relies on. +- `nemoclaw resources` and `NEMOCLAW_RESOURCE_PROFILE` expose sandbox CPU and memory profiles. Profiles can be selected during onboarding, and `NEMOCLAW_CPU` or `NEMOCLAW_RAM` can override the selected profile for scripted runs. +- Cloudflare named tunnels are supported through `CLOUDFLARE_TUNNEL_TOKEN`. `nemoclaw tunnel start` passes the token through the environment and expects the named tunnel route to already point at the dashboard port. +- Jira policy validation guidance now matches the maintained preset. Use a Node HTTPS status probe for Atlassian API access and an explicit status-only curl probe for `auth.atlassian.com` when validating approved requests manually. +- Sandbox logs merge OpenClaw gateway output and OpenShell audit events into one stream, and `--tail` applies once to the merged result so policy denials appear beside gateway logs. +- Onboarding recovers more cleanly across host and runtime edge cases, including root-owned config sync directories, stale dashboard port allocation, unreachable Docker daemons, stale dashboard forwards, default NVIDIA CDI spec directories, and Linux Docker-driver health checks. + +## v0.0.50 + +NemoClaw v0.0.50 focused on onboarding reliability, local inference hardening, messaging diagnostics, and sandbox lifecycle cleanup: + +- `nemoclaw onboard` detects DGX Spark hosts where managed Ollama falls back to CPU execution. Local inference setup fails the Ollama validation step with a tailored diagnostic, adds a Spark `OLLAMA_LLM_LIBRARY=cuda_v13` systemd override when that backend is installed, and enables the managed Linux Ollama service so local inference survives reboot. +- Compatible endpoint setup rejects `host.docker.internal` inference URLs because OpenShell sandboxes do not have a portable host-service route through that name. Use Local Ollama's authenticated proxy path or a policy-managed host service instead. +- Telegram setup now surfaces BotFather group privacy guidance. Disable privacy mode, then remove and re-add the bot to each group before testing group delivery. +- Maintenance commands recover the OpenShell gateway before retrying sandbox-list operations, which makes rebuild, recover, upgrade, and backup flows more resilient after gateway drift. +- NemoClaw no longer writes proxy hooks into sandbox shell startup files. Local proxy configuration stays on supported OpenShell and NemoClaw paths rather than mutating user shell rc files. +- Windows bootstrap installs Ubuntu 24.04 when WSL is present but no Ubuntu distribution is registered. + +## v0.0.49 + +NemoClaw v0.0.49 is a hardening release focused on reliability, clearer diagnostics, OpenClaw compatibility, and stronger validation coverage: + +- Gateway failures now fail faster and explain more. `nemoclaw status` classifies gateway probe failures by layer, distinguishing a named gateway port that is not accepting connections, a named gateway that is present but not Connected, the active OpenShell gateway pointing at a different name, and a named gateway that is not configured at all. `nemoclaw connect` exits early with recovery guidance when the OpenShell gateway is down. +- Gateway upgrade and fallback paths are more stable. The release hardens older gateway fallback coverage, OpenShell gateway upgrade checks, crash-loop detection tests, and Brev GPU bridge gateway traffic coverage. +- Status and doctor now report a fresh mutable sandbox as not configured instead of `down`, and `nemoclaw logs --tail ` is locked in as a NemoClaw line count rather than OpenShell's follow-flag pun. `nemoclaw debug --quick` reports restricted kernel-log access as a skipped section instead of surfacing raw `dmesg` permission errors. +- OpenClaw compatibility is more resilient across runtime changes. Kimi mixed tool calls are normalized more consistently, compatible OpenClaw JSON envelope changes are tolerated in tests, and OpenClaw patch drift is easier to classify during image builds. +- Messaging channel removal is now a clean teardown. The sandbox registry and onboard session policy preset state stay in sync so removed presets do not return during later `onboard --resume` or rebuild flows; QR-paired channels also have their durable in-sandbox session directory wiped before the rebuild and removal aborts cleanly when that wipe cannot be confirmed; and `~/.nemoclaw/config.json` is re-synced from the host across every rebuild resume path so the OpenClaw plugin no longer crashes on the Dockerfile placeholder. +- Hermes sandboxes apply only the messaging channel policies the operator selects instead of pre-enabling every Hermes messaging provider, and dynamic preset application resolves Hermes-specific policy content so Discord on Hermes no longer falls back to generic Node allowlists. +- `nemoclaw snapshot restore --to ` now refuses to overwrite an existing destination unless you pass `--force`, which makes destructive clone restores an explicit opt-in. +- Source-checkout installs bootstrap OpenShell when needed before running preflight, so `git clone` based installs can reach the same managed OpenShell setup path as packaged installs. The Linux installer, onboard preflight, and prerequisites docs also explain why NemoClaw needs Docker group membership and the privilege impact of granting it. +- NVIDIA NIM preflight rejects WDDM placeholder GPU names on hosts without NVIDIA firmware, and Jetson onboarding refuses sandbox GPU passthrough instead of creating a configuration the sandbox cannot use. +- CLI and E2E coverage cover more real user paths. Missing `channels` arguments now print the correct usage, scenario suites use supported sandbox subcommands, scenario tests build against the full repository CLI, and security-sensitive credential paths have broader coverage. +- Release infrastructure now targets Node 24 in GitHub Actions. The E2E advisor also comments with clearer scenario guidance and waits for required PR checks before deciding. + +## v0.0.48 + +NemoClaw v0.0.48 improves onboarding, sandbox builds, local inference, messaging, and day-two sandbox operations: + +- Windows WSL onboarding detects Windows-host Ollama through both the HTTP endpoint and a Windows process probe, so the installer can offer start or restart actions even when the daemon is installed but not yet reachable from WSL. +- Onboarding no longer prints a noisy `No active forward found` warning when it performs best-effort dashboard forward cleanup before rebuilding or recovering a sandbox. +- `nemoclaw share mount` verifies the requested remote path against the target sandbox name, so probes for non-default sandboxes no longer accidentally inspect the default sandbox. +- The OpenClaw plugin tolerates an empty or malformed onboard `config.json` by falling back to default onboard status instead of failing during startup. +- Hermes messaging policies are scoped to Hermes-supported channel behavior, keeping unsupported OpenClaw-specific messaging access out of Hermes sandboxes. +- Onboard session snapshots persist machine-readable state for resume flows, which makes provider and policy decisions more durable across retries. +- DGX Spark GPU sandbox recreation restores the startup path for Hermes by patching Docker GPU state and preserving the marker files the Hermes entrypoint needs. +- Discord messaging routes REST and gateway traffic through the sandbox proxy path, including a loopback proxy for gateway traffic, so Discord channels work through the same policy-controlled egress model as other sandbox traffic. +- Sandbox base images now include Homebrew and a `python` to `python3` compatibility symlink, reducing first-run setup for package and script workflows inside the sandbox. +- The NemoClaw sandbox image includes a Docker health check so container runtimes can report whether the in-sandbox gateway is responding. +- Sandbox startup resolves workspace template files from the installed package when source-relative files are not available, which helps package installs seed a fresh workspace consistently. +- Installer checksum verification prefers `sha256sum` and falls back when needed, improving compatibility on Linux hosts where `shasum` is not installed. +- VM-driver snapshot health checks now use gateway metadata instead of stale local assumptions, so snapshot operations fail less often after gateway state changes. + +## v0.0.47 + +NemoClaw v0.0.47 focused on release hardening and validation coverage: + +- The scenario E2E framework gained baseline onboarding coverage for CLI setup, OpenShell gateway creation, sandbox state, inference routing, and smoke tests. +- Messaging provider scenarios now validate provider attachment, placeholder configuration, secret-leak prevention, bridge reachability, Discord gateway routing, Slack provider state, Telegram injection safety, and token-rotation isolation. +- CLI command registration was refactored so public display defaults stay consistent across sandbox channel, host, log, policy, skill, and snapshot commands. +- PR review advisor automation was added for maintainers, with deterministic GitHub context gathering and structured review comments. +- The release refreshed v0.0.46 documentation, generated user skills, navigation, and version metadata. + +## v0.0.46 + +NemoClaw v0.0.46 improves Windows setup, messaging channels, Hermes sandboxes, inference routing, and command compatibility: + +- Windows users can start from the bootstrap PowerShell script, and WSL installs can accept express install to use the Windows-host Ollama path automatically. +- Messaging channels add WhatsApp support. `channels add whatsapp` records the channel, rebuilds the sandbox, and then pairs through the agent-specific QR command inside the sandbox. +- `nemoclaw exec` runs non-interactive commands inside a running sandbox through OpenShell and exits with the remote command's status. +- Hermes sandboxes can use the managed tool gateway broker for supported tool routes, and Hermes startup recovers its readiness marker more reliably. +- Compatible Anthropic endpoint setup auto-detects Amazon Bedrock Runtime endpoints and starts the local adapter needed for OpenShell routing. +- Local Ollama setup on WSL native Docker now routes through NemoClaw's authenticated proxy, and subprocesses inherit the proxy bypass settings used by onboarding. +- Model Router setup probes supported host Python interpreters and falls back to the next usable one when virtual environment creation fails. +- The NemoClaw OpenClaw plugin registers the `/nemoclaw` command again after package metadata changes, and sandbox extension backups restore compatibility with current snapshots. +- Sandbox builds patch OpenClaw's tool catalog to reduce startup latency for Nemotron-focused sandboxes. +- `nemoclaw uninstall` docs now show how to pass flags through the hosted install script form. + +## v0.0.45 + +NemoClaw v0.0.45 improves onboarding recovery, local inference behavior, channel cleanup, sandbox sharing diagnostics, and uninstall cleanup: + +- `nemoclaw onboard` handles GPU setup failures more directly. It can replace a stale CPU-only gateway when doing so is safe, skips GPU advice when you explicitly pass `--no-gpu`, points working-driver hosts toward NVIDIA Container Toolkit setup, and enforces the 63-character sandbox name limit before names reach OpenShell. +- Preflight checks catch more host setup issues before the sandbox build starts. Container DNS probing uses a fresh `.invalid` lookup so cached DNS answers do not hide blocked resolver egress, and restrictive checkout file modes no longer make model-specific setup manifests unreadable inside the image. +- Local inference setup is more predictable. Managed vLLM accepts `NEMOCLAW_VLLM_MODEL` for supported registry slugs and checks Hugging Face tokens before pulling gated models. Ollama-backed sandboxes now enable streamed usage accounting so OpenClaw token counters update after each turn. +- Messaging channel removal is a clean inverse of channel add. `nemoclaw channels remove ` detaches live bridge providers before deleting them and un-applies the matching built-in network policy preset when it was active. +- `nemoclaw share mount` fails earlier with clearer guidance when the sandbox path cannot be verified or the host mount target is on a read-only filesystem. +- `nemoclaw uninstall` stops host `openshell-gateway` processes, and subprocesses add IPv6 loopback plus wildcard local bind addresses to `NO_PROXY` so local traffic stays off forwarded proxies. +- Diagnostics and internal command output redact more credential-shaped values and use private temporary directories for generated SSH and config files. + +## v0.0.44 + +NemoClaw v0.0.44 improves onboarding reliability, GPU sandbox networking, local inference verification, messaging recovery, and remote dashboard access: + +- `nemoclaw onboard` handles DGX Spark and Jetson hosts more conservatively. Unified-memory GPU detection works for Spark, Jetson defaults to CPU-only sandbox passthrough unless you opt in, and local Ollama validation tolerates slow unified-memory model loads that still fit host memory. +- Linux Docker-driver GPU sandboxes preserve `host.openshell.internal` during recreation and inject a reachable DNS resolver when the host uses a systemd-resolved loopback nameserver, which keeps local inference and external DNS working after GPU patching. +- Onboarding and sandbox builds fail less often on first run. Preflight can guide missing NVIDIA Container Toolkit setup, Docker builds force BuildKit for Dockerfile bind mounts, npm installs retry transient registry resets, and compatible-endpoint onboarding runs a final inference smoke check before reporting success. +- `nemoclaw connect` repairs stale `inference.local` routes before opening the shell, reports local Ollama backend and auth-proxy diagnostics when repair fails, and `--probe-only` keeps dashboard and process recovery from failing just because inference repair needs follow-up. +- `nemoclaw channels add ` applies the matching built-in network policy preset before rebuild, and rebuilds preserve paused channel state so stopped messaging channels stay disabled after destroy and recreate. +- Remote hosts can opt into dashboard forwarding on all interfaces with `NEMOCLAW_DASHBOARD_BIND=0.0.0.0`, and gateway drift checks now stop backup, status, rebuild, recover, and upgrade flows before they trust stale OpenShell state. +- Workspace restore uploads backed-up directories file by file, dashboard forwards retry while stopped ports are still releasing, and the in-sandbox OpenClaw gateway respawns after unexpected exits. + +## v0.0.43 + +NemoClaw v0.0.43 improves GPU onboarding and uninstall cleanup on Linux Docker-driver hosts: + +- The standard installer can repair missing NVIDIA CDI device specs before onboarding by enabling the NVIDIA CDI refresh service, then falling back to direct `nvidia-ctk` spec generation when needed. +- Linux Docker-driver GPU onboarding handles the Docker flags and sandbox policy needed for NVIDIA GPU proof writes to `/proc//task//comm`, which fixes DGX Spark installs that previously failed with a permission error during direct GPU proof. +- `nemoclaw uninstall` removes the Linux gateway state directory under `~/.local/state/nemoclaw`, including gateway PID, SQLite, audit log, and VM-driver state left by Docker-driver gateways. + +## v0.0.42 + +NemoClaw v0.0.42 improves onboarding, status diagnostics, local inference checks, and messaging setup: + +- `nemoclaw onboard` uses the Docker-driver OpenShell gateway path on macOS and no longer requires VM driver helper assets for standard macOS onboarding. +- Dashboard port selection probes occupied ports more thoroughly, including root-owned listeners on macOS, and rolls back a newly-created sandbox if the dashboard forward cannot start after the image build. +- `nemoclaw status` shows `Inference` and `Connected` fields for each listed sandbox, and cloudflared service output now distinguishes stopped, invalid PID file, and stale PID states with a `nemoclaw tunnel start` recovery hint. +- Local Ollama status and doctor checks now probe the authenticated proxy in addition to the backend, so a broken proxy is reported separately from a healthy `127.0.0.1:11434` backend. +- Compatible OpenAI endpoint validation retries reasoning-only smoke responses with a larger output budget before classifying the setup as a model output budget problem instead of a route failure. +- `channels add` and `channels remove` normalize channel names before saving or rebuilding, and `channels add` hints when a matching built-in policy preset exists but is not applied yet. +- GPU recovery and uninstall output now use registry-aware recovery commands and clearer gateway removal wording. +- Onboarding applies selected built-in policy presets in a single policy update when possible, while preserving the final live policy and registry state. +- The installer handles unchanged user-local CLI shims idempotently, avoiding duplicate shim-creation messages during install-plus-verify flows. + +## v0.0.41 + +NemoClaw v0.0.41 improves Docker-driver onboarding and release compatibility: + +- `nemoclaw onboard` can pin fresh OpenShell installs to a published release that fits the blueprint's tested version range, while retaining the installer fallback when release metadata is unavailable. +- Docker-driver gateway startup verifies that sandbox containers can reach `host.openshell.internal` before reporting the gateway healthy, and Linux firewall failures include a targeted `ufw` remediation. +- Local Ollama setup probes sandbox-to-proxy reachability before it commits the inference route, so blocked `11435` traffic stops onboarding with a rerun-safe fix instead of leaving a broken route. +- Linux Docker-driver GPU onboarding can recreate the OpenShell-managed sandbox container with NVIDIA GPU access and leaves diagnostics plus cleanup guidance when GPU readiness fails. +- `nemoclaw uninstall` removes all installer-managed OpenShell helper binaries unless you pass `--keep-openshell`. + +## v0.0.40 + +NemoClaw v0.0.40 improves onboarding reliability, local inference setup, and sandbox recovery: + +- `nemoclaw onboard` uses the Docker-driver OpenShell gateway path on macOS with OpenShell 0.0.37, repairs incomplete Docker-driver installs before startup, and installs the platform-specific gateway asset it needs. +- The Docker-driver gateway startup check waits for the gateway port to accept TCP connections before it reports the gateway as healthy, and startup failures now include child process exit details. +- Local Ollama setup requires the authenticated reverse proxy token on every native Ollama API route, including `GET /api/tags`. +- The Linux Ollama install path preflights `zstd` before running the official installer and explains why each sudo-backed setup step needs elevated privileges. +- The onboarding provider menu offers an already-running local vLLM server directly when `localhost:8000` responds. Managed vLLM install and start options now appear by default on DGX Spark and DGX Station, while generic Linux NVIDIA GPU hosts remain behind the experimental opt-in. +- Policy tier defaults are filtered by active agent support, so presets such as Brave Search are not reapplied to agents that do not support that integration. +- `nemoclaw connect` checks dashboard forward reachability with a TCP probe before it reports a forward as stale. +- Sandbox startup captures a known-good OpenClaw config baseline and restores it on restart if `/sandbox/.openclaw/openclaw.json` becomes empty. +- The NemoClaw OpenClaw plugin package declares compatibility metadata for OpenClaw package tooling. + +## v0.0.39 + +NemoClaw v0.0.39 improves several day-two workflows: + +- The installer checks Docker earlier on Linux, can install and start Docker when needed, and stops with `newgrp docker` guidance when the current shell has not picked up the `docker` group yet. +- DGX Spark and DGX Station users can accept an express install prompt that preselects the local inference path and suggested policy defaults. +- NemoClaw now creates GPU-capable OpenShell Docker sandboxes by default when an NVIDIA GPU is available, with explicit `--sandbox-gpu`, `--no-sandbox-gpu`, and `--sandbox-gpu-device` controls. +- `nemohermes` supports Hermes Provider onboarding and runtime model switches through `nemohermes inference set`. +- `nemoclaw hosts-add`, `hosts-list`, and `hosts-remove` manage sandbox host aliases for LAN-only services. +- `nemoclaw update` checks and runs the maintained installer flow, while `nemoclaw upgrade-sandboxes` remains responsible for rebuilding existing sandboxes. +- `nemoclaw destroy` preserves the shared gateway by default unless `--cleanup-gateway` is selected. +- `nemoclaw connect` repairs stale `inference.local` DNS proxy routes before opening the session. +- Windows-host Ollama onboarding relaunches the daemon with the reachable binding after install or restart. +- Local NVIDIA NIM onboarding passes `NGC_API_KEY` or `NVIDIA_API_KEY` into the managed container without putting the secret in process arguments, detects early container exits during health checks, and prints a per-GPU preflight breakdown on mixed-model hosts. +- The sandbox startup path strips additional Linux capabilities before and during privilege step-down. +- OpenClaw workspace template files are seeded when bootstrap is skipped and the workspace is still empty. +- Kimi K2.6 and related NVIDIA-hosted chat-completions paths include model-specific compatibility handling for reasoning output. + +## v0.0.38 + +NemoClaw v0.0.38 improves several day-two workflows: + +- `nemoclaw status` shows the gateway's active policy version in the displayed policy YAML when OpenShell reports one. +- `nemoclaw uninstall` stops matching Local Ollama auth proxy processes before it removes `~/.nemoclaw`, which prevents stale listeners from blocking a later reinstall. +- Local Ollama onboarding validates structured chat-completions tool calls and rejects models that leak tool-call payloads as plain text. +- Blueprint policy additions under `components.policy.additions` are validated, merged into the live policy, applied through OpenShell, and recorded in run metadata. +- Rebuild backups tolerate partial archive output when usable data was produced, then report only the manifest-defined paths that could not be archived. +- NemoHermes uninstall output uses NemoHermes-specific help, progress, and completion text. + +## v0.0.34 + +Starting with NemoClaw v0.0.34, the `curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash` installer pipeline no longer auto-accepts the third-party software notice when stdin is piped and `/dev/tty` is unavailable (for example, deeply detached SSH sessions or some container shells). +In environments without a TTY, accept upfront in the pipe: + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash +``` + +Or pass the flag through to the installer: + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software +``` + +Or re-run from a terminal with a controlling TTY: + +```console +$ bash <(curl -fsSL https://www.nvidia.com/nemoclaw.sh) +``` + +The installer error message in v0.0.35+ surfaces all three invocations directly so users can copy-paste a recovery without leaving the terminal. + +## Component Version Policy + +NemoClaw pins the OpenClaw version inside the sandbox at build time via `OPENCLAW_VERSION` in the NemoClaw Dockerfiles. +The `min_openclaw_version` field in `nemoclaw-blueprint/blueprint.yaml` is the compatibility floor for direct blueprint consumers and may be lower than the NemoClaw runtime target. +Existing sandboxes do not auto-upgrade. +Run `nemoclaw status` to see the OpenClaw version currently running in a sandbox, and `nemoclaw rebuild` to pick up a newer pin from a NemoClaw upgrade. +See Checking the OpenClaw version (use the `nemoclaw-user-reference` skill) for the full policy. diff --git a/skills/nemoclaw-user-reference/SKILL.md b/skills/nemoclaw-user-reference/SKILL.md new file mode 100644 index 00000000000..e118eba9333 --- /dev/null +++ b/skills/nemoclaw-user-reference/SKILL.md @@ -0,0 +1,14 @@ +--- +name: "nemoclaw-user-reference" +description: "Describes the NemoClaw plugin and blueprint architecture and how they orchestrate the OpenClaw sandbox. Use when looking up architecture, plugin structure, or blueprint design. Trigger keywords - nemoclaw architecture, nemoclaw plugin blueprint structure, nemoclaw vs openshell, which cli, nemoclaw cli, openshell cli, sandbox commands, nemoclaw cli commands, nemoclaw command reference, nemoclaw network policy, sandbox egress control operator approval, nemoclaw troubleshooting, nemoclaw debug sandbox issues." +license: "Apache-2.0" +--- +# Architecture Details + +## References + +- **Load [references/architecture.md](references/architecture.md)** when looking up architecture, plugin structure, or blueprint design. Describes the NemoClaw plugin and blueprint architecture and how they orchestrate the OpenClaw sandbox. +- **[references/cli-selection-guide.md](references/cli-selection-guide.md)** — Explains when to use `nemoclaw` versus `openshell` for NemoClaw-managed sandboxes, including lifecycle, inference, policy, monitoring, file transfer, and gateway operations. +- **Load [references/commands.md](references/commands.md)** when looking up a specific `nemoclaw` or `/nemoclaw` subcommand, flag, argument, or exit code. Includes the full CLI reference for slash commands and standalone NemoClaw commands. +- **Load [references/network-policies.md](references/network-policies.md)** when looking up a specific default endpoint, filesystem path, or the runtime approval sequence NemoClaw applies on blocked requests. Covers the baseline network policy, filesystem rules, and operator approval flow. +- **Load [references/troubleshooting.md](references/troubleshooting.md)** when diagnosing a reported NemoClaw error, a failed onboard, or unexpected sandbox behavior. Lists fixes for common installation, onboarding, and runtime issues. diff --git a/skills/nemoclaw-user-reference/evals/evals.json b/skills/nemoclaw-user-reference/evals/evals.json new file mode 100644 index 00000000000..9bed541fe47 --- /dev/null +++ b/skills/nemoclaw-user-reference/evals/evals.json @@ -0,0 +1,212 @@ +[ + { + "id": "docs-reference-architecture-001", + "question": "I'm using the architecture reference. Help me verify implementation and operations details so I can make changes or debug behavior from the right mental model.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user verify implementation and operations details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make changes or debug behavior from the right mental model.", + "expected_behavior": [ + "The output directly addresses the user's situation: using the architecture reference.", + "The AI coding assistant loads the expected_skill and references/architecture.md", + "The output helps the user verify implementation and operations details with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make changes or debug behavior from the right mental model.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." + ] + }, + { + "id": "docs-reference-architecture-002", + "question": "I'm locating the right layer for a change. Help me connect structure, lifecycle, and ownership so I can edit the plugin, blueprint, or sandbox layer intentionally.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user connect structure, lifecycle, and ownership and gives enough concrete guidance, decision criteria, verification steps, or risk framing to edit the plugin, blueprint, or sandbox layer intentionally.", + "expected_behavior": [ + "The output directly addresses the user's situation: locating the right layer for a change.", + "The AI coding assistant loads the expected_skill and references/architecture.md", + "The output helps the user connect structure, lifecycle, and ownership with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to edit the plugin, blueprint, or sandbox layer intentionally.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." + ] + }, + { + "id": "docs-reference-architecture-003", + "question": "I'm modifying architecture-sensitive files. Help me understand the invariants that must remain true so I can avoid breaking sandbox creation or operation.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand the invariants that must remain true and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid breaking sandbox creation or operation.", + "expected_behavior": [ + "The output directly addresses the user's situation: modifying architecture-sensitive files.", + "The AI coding assistant loads the expected_skill and references/architecture.md", + "The output helps the user understand the invariants that must remain true with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid breaking sandbox creation or operation.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." + ] + }, + { + "id": "docs-reference-cli-selection-guide-001", + "question": "I'm choosing between `nemoclaw` and `openshell`. Help me pick the command surface that owns my operation so I can complete the task without breaking NemoClaw management.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user pick the command surface that owns my operation and gives enough concrete guidance, decision criteria, verification steps, or risk framing to complete the task without breaking NemoClaw management.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing between `nemoclaw` and `openshell`.", + "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", + "The output helps the user pick the command surface that owns my operation with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to complete the task without breaking NemoClaw management.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." + ] + }, + { + "id": "docs-reference-cli-selection-guide-002", + "question": "I'm tempted to run a low-level OpenShell command. Help me understand when it bypasses NemoClaw lifecycle expectations so I can avoid unsupported or confusing states.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand when it bypasses NemoClaw lifecycle expectations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid unsupported or confusing states.", + "expected_behavior": [ + "The output directly addresses the user's situation: tempted to run a low-level OpenShell command.", + "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", + "The output helps the user understand when it bypasses NemoClaw lifecycle expectations with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid unsupported or confusing states.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." + ] + }, + { + "id": "docs-reference-cli-selection-guide-003", + "question": "I'm doing onboarding, policy, debugging, or low-level sandbox work. Help me apply a simple CLI selection rule so I can move quickly without memorizing every command boundary.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user apply a simple CLI selection rule and gives enough concrete guidance, decision criteria, verification steps, or risk framing to move quickly without memorizing every command boundary.", + "expected_behavior": [ + "The output directly addresses the user's situation: doing onboarding, policy, debugging, or low-level sandbox work.", + "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", + "The output helps the user apply a simple CLI selection rule with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to move quickly without memorizing every command boundary.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." + ] + }, + { + "id": "docs-reference-commands-001", + "question": "I'm opening the CLI command reference. Help me find the exact action, flag, or recovery path I need so I can run the right command without scanning source code.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user find the exact action, flag, or recovery path I need and gives enough concrete guidance, decision criteria, verification steps, or risk framing to run the right command without scanning source code.", + "expected_behavior": [ + "The output directly addresses the user's situation: opening the CLI command reference.", + "The AI coding assistant loads the expected_skill and references/commands.md", + "The output helps the user find the exact action, flag, or recovery path I need with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to run the right command without scanning source code.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." + ] + }, + { + "id": "docs-reference-commands-002", + "question": "I'm choosing among setup, lifecycle, policy, inference, and diagnostic commands. Help me see command groups and examples clearly so I can locate the right command faster.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user see command groups and examples clearly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to locate the right command faster.", + "expected_behavior": [ + "The output directly addresses the user's situation: choosing among setup, lifecycle, policy, inference, and diagnostic commands.", + "The AI coding assistant loads the expected_skill and references/commands.md", + "The output helps the user see command groups and examples clearly with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to locate the right command faster.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." + ] + }, + { + "id": "docs-reference-commands-003", + "question": "I'm using `nemoclaw` in scripts or CI. Help me understand example output and exit behavior so I can automate safely and handle failures correctly.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand example output and exit behavior and gives enough concrete guidance, decision criteria, verification steps, or risk framing to automate safely and handle failures correctly.", + "expected_behavior": [ + "The output directly addresses the user's situation: using `nemoclaw` in scripts or CI.", + "The AI coding assistant loads the expected_skill and references/commands.md", + "The output helps the user understand example output and exit behavior with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to automate safely and handle failures correctly.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." + ] + }, + { + "id": "docs-reference-network-policies-001", + "question": "I'm reading the network policy reference. Help me understand baseline access decisions so I can assess the sandbox's default exposure.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand baseline access decisions and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assess the sandbox's default exposure.", + "expected_behavior": [ + "The output directly addresses the user's situation: reading the network policy reference.", + "The AI coding assistant loads the expected_skill and references/network-policies.md", + "The output helps the user understand baseline access decisions with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assess the sandbox's default exposure.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." + ] + }, + { + "id": "docs-reference-network-policies-002", + "question": "I'm reviewing default rules and filesystem constraints. Help me know what is allowed before any customization so I can decide what needs to change for my environment.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user know what is allowed before any customization and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide what needs to change for my environment.", + "expected_behavior": [ + "The output directly addresses the user's situation: reviewing default rules and filesystem constraints.", + "The AI coding assistant loads the expected_skill and references/network-policies.md", + "The output helps the user know what is allowed before any customization with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide what needs to change for my environment.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." + ] + }, + { + "id": "docs-reference-network-policies-003", + "question": "I'm tracing a denied request. Help me understand how operator approval turns into policy so I can audit and reason about egress changes.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user understand how operator approval turns into policy and gives enough concrete guidance, decision criteria, verification steps, or risk framing to audit and reason about egress changes.", + "expected_behavior": [ + "The output directly addresses the user's situation: tracing a denied request.", + "The AI coding assistant loads the expected_skill and references/network-policies.md", + "The output helps the user understand how operator approval turns into policy with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to audit and reason about egress changes.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." + ] + }, + { + "id": "docs-reference-troubleshooting-001", + "question": "I'm troubleshooting a NemoClaw problem. Help me map my symptom to the fastest safe recovery step so I can get unstuck without making the environment worse.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user map my symptom to the fastest safe recovery step and gives enough concrete guidance, decision criteria, verification steps, or risk framing to get unstuck without making the environment worse.", + "expected_behavior": [ + "The output directly addresses the user's situation: troubleshooting a NemoClaw problem.", + "The AI coding assistant loads the expected_skill and references/troubleshooting.md", + "The output helps the user map my symptom to the fastest safe recovery step with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to get unstuck without making the environment worse.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." + ] + }, + { + "id": "docs-reference-troubleshooting-002", + "question": "I'm uncertain which subsystem failed. Help me run diagnostics that separate install, onboarding, runtime, policy, and inference issues so I can focus on the likely cause.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user run diagnostics that separate install, onboarding, runtime, policy, and inference issues and gives enough concrete guidance, decision criteria, verification steps, or risk framing to focus on the likely cause.", + "expected_behavior": [ + "The output directly addresses the user's situation: uncertain which subsystem failed.", + "The AI coding assistant loads the expected_skill and references/troubleshooting.md", + "The output helps the user run diagnostics that separate install, onboarding, runtime, policy, and inference issues with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to focus on the likely cause.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." + ] + }, + { + "id": "docs-reference-troubleshooting-003", + "question": "I'm asking the community or filing an issue. Help me collect the right logs, versions, and error details so I can give maintainers enough information to help.", + "expected_skill": "nemoclaw-user-reference", + "ground_truth": "A NemoClaw-specific answer that helps the user collect the right logs, versions, and error details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to give maintainers enough information to help.", + "expected_behavior": [ + "The output directly addresses the user's situation: asking the community or filing an issue.", + "The AI coding assistant loads the expected_skill and references/troubleshooting.md", + "The output helps the user collect the right logs, versions, and error details with NemoClaw-specific guidance rather than generic advice.", + "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to give maintainers enough information to help.", + "The output avoids inventing unsupported NemoClaw behavior.", + "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." + ] + } +] diff --git a/skills/nemoclaw-user-reference/references/architecture.md b/skills/nemoclaw-user-reference/references/architecture.md new file mode 100644 index 00000000000..cb1d4756d21 --- /dev/null +++ b/skills/nemoclaw-user-reference/references/architecture.md @@ -0,0 +1,258 @@ +# Architecture Details + +NemoClaw combines a host CLI, a TypeScript plugin that runs with OpenClaw inside the sandbox, and a versioned YAML blueprint that defines the sandbox image, policies, and inference profiles applied through OpenShell. + +## System Overview + +NVIDIA OpenShell is a general-purpose agent runtime. It provides sandbox containers, a credential-storing gateway, inference proxying, and policy enforcement, but has no opinions about what runs inside. NemoClaw is an opinionated reference stack built on OpenShell that handles what goes in the sandbox and makes the setup accessible. + +```mermaid +graph LR + classDef nemoclaw fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold + classDef openshell fill:#1a1a1a,stroke:#1a1a1a,color:#fff,stroke-width:2px,font-weight:bold + classDef sandbox fill:#444,stroke:#76b900,color:#fff,stroke-width:2px,font-weight:bold + classDef agent fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px + classDef external fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px + classDef user fill:#fff,stroke:#76b900,color:#1a1a1a,stroke-width:2px,font-weight:bold + + USER(["👤 User"]):::user + + subgraph EXTERNAL["External Services"] + INFERENCE["Inference Provider
NVIDIA Endpoints · OpenAI
Anthropic · Ollama · vLLM · Model Router
"]:::external + MSGAPI["Messaging Platforms
Telegram · Discord · Slack"]:::external + INTERNET["Internet
PyPI · npm · GitHub · APIs"]:::external + end + + subgraph HOST["Host Machine"] + + subgraph NEMOCLAW["NemoClaw"] + direction TB + NCLI["CLI + Onboarding
Guided setup · provider selection
credential validation · deploy
"]:::nemoclaw + BP["Blueprint
Hardened Dockerfile
Network policies · Presets
Security configuration
"]:::nemoclaw + MIGRATE["State Management
Migration snapshots
Credential stripping
Integrity verification
"]:::nemoclaw + end + + subgraph OPENSHELL["OpenShell"] + direction TB + GW["Gateway
Credential store
Inference proxy
Policy engine
Device auth
"]:::openshell + OSCLI["openshell CLI
provider · sandbox
gateway · policy
"]:::openshell + CHMSG["Channel messaging
OpenShell-managed
Telegram · Discord · Slack
"]:::openshell + + subgraph SANDBOX["Sandbox Container 🔒"] + direction TB + AGENT["Agent
OpenClaw or any
compatible agent
"]:::agent + PLUG["NemoClaw Plugin
Extends agent with
managed configuration
"]:::sandbox + end + end + end + + USER -->|"nemoclaw onboard
nemoclaw connect"| NCLI + USER -->|"Chat messages"| MSGAPI + + NCLI -->|"Orchestrates"| OSCLI + BP -->|"Defines sandbox
shape + policies"| SANDBOX + MIGRATE -->|"Safe state
transfer"| SANDBOX + + AGENT -->|"Inference requests
no credentials"| GW + GW -->|"Proxied with
credential injected"| INFERENCE + + MSGAPI -->|"Platform APIs"| CHMSG + CHMSG -->|"Deliver to agent"| AGENT + + AGENT -.->|"Policy-gated"| INTERNET + GW -.->|"Enforced by
gateway"| INTERNET +``` + +## Deployment Topology + +The logical diagram above shows how components relate. +This section shows what actually runs where on the host. +NemoClaw's default Docker-driver topology does not place the sandbox in an embedded k3s cluster. +On Linux and Apple Silicon macOS, NemoClaw starts the OpenShell Docker-driver gateway and creates the sandbox as a Docker container. +The gateway normally runs as a host process; Linux hosts that need the gateway compatibility patch may run the same gateway binary inside a small container. +In both Docker-driver modes, the sandbox is a Docker container, not a Kubernetes pod. +Legacy non-Docker-driver installs still use the k3s-based gateway path; the diagram below shows the standard Docker-driver topology. + +```mermaid +graph TB + classDef host fill:#fff,stroke:#76b900,stroke-width:2px,color:#1a1a1a,font-weight:bold + classDef cli fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold + classDef docker fill:#2496ed,stroke:#1577c2,color:#fff,stroke-width:2px,font-weight:bold + classDef gateway fill:#1a1a1a,stroke:#1a1a1a,color:#fff,stroke-width:2px,font-weight:bold + classDef sandbox fill:#444,stroke:#76b900,color:#fff,stroke-width:2px + classDef external fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px + + subgraph HOST["Host machine · Linux / Apple Silicon macOS / DGX Spark / DGX Station"] + direction TB + CLI["nemoclaw CLI
bin/nemoclaw.js → dist/
onboard · connect · status · logs
"]:::cli + GW["OpenShell gateway
host process by default
credential store · lifecycle · L7 proxy
"]:::gateway + + subgraph DOCKER["Docker daemon"] + direction TB + SANDBOX["Sandbox container 🔒
Landlock + seccomp + netns
OpenClaw agent + NemoClaw plugin
"]:::sandbox + end + end + + INFER["Inference provider
NVIDIA Endpoints · OpenAI
Anthropic · Ollama · vLLM · Model Router
"]:::external + + CLI -->|"openshell CLI
(orchestrates)"| GW + GW -->|"creates/recreates
Docker-driver sandbox"| SANDBOX + SANDBOX -->|"inference requests
placeholder credentials"| GW + GW -->|"egress with real credentials
injected at the L7 proxy"| INFER + + class HOST host + class DOCKER docker + class GW gateway + class SANDBOX sandbox +``` + +Layering from top to bottom: + +| Layer | Runs as | Role | +|---|---|---| +| Host CLI | Host process (`nemoclaw` on Node.js) | Orchestrates OpenShell via `openshell` CLI calls. | +| OpenShell gateway | Host process by default; optional Linux compatibility container when the gateway binary needs a newer host ABI | Hosts the credential store, owns sandbox lifecycle coordination, and provides the L7 proxy. | +| Docker daemon | Host service | Runs the Docker-driver sandbox container and, on affected Linux hosts, the optional gateway compatibility container. | +| Sandbox container | Docker container | Runs the OpenClaw agent and the NemoClaw plugin under Landlock + seccomp + netns. | +| OpenShell L7 proxy | Gateway process | Intercepts agent egress and rewrites `Authorization` headers (Bearer/Bot) and URL-path segments to inject the real credential at the network boundary. | + +NemoClaw never gives the sandbox a raw provider key. +At onboard time it registers credentials with OpenShell's provider/placeholder system, and the L7 proxy substitutes the real value into outbound requests at egress. +The CLI helper `isInferenceRouteReady` (in `src/lib/onboard.ts`) is a host-side readiness check used by the resume flow to decide whether the active route already covers the chosen provider and model — it is not a runtime component. + +For the DGX Spark-specific variant of this topology (cgroup v2, aarch64, unified memory), refer to the [NVIDIA Spark playbook](https://build.nvidia.com/spark/nemoclaw). + +## NemoClaw Plugin + +The plugin is a thin TypeScript package that registers an inference provider and the `/nemoclaw` slash command. +It runs in-process with the OpenClaw gateway inside the sandbox. +It also registers runtime hooks that keep the agent aware of its environment. +Before an agent turn starts, the plugin prepends a short context block with the active sandbox name, sandbox phase, network policy summary, and filesystem policy summary. +When the policy or phase changes during a session, the plugin sends a smaller update block instead of repeating the full context. + +```text +nemoclaw/ +├── src/ +│ ├── index.ts Plugin entry: registers all commands +│ ├── cli.ts Commander.js subcommand wiring +│ ├── runtime-context.ts Sandbox and policy context injection +│ ├── 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 +``` + +## NemoClaw Blueprint + +The blueprint is a versioned YAML package with its own release stream. +The runner resolves, verifies, and applies the blueprint through the OpenShell CLI. +The blueprint defines the sandbox shape, default policies, and inference profiles; the runner performs the OpenShell operations. + +```text +nemoclaw-blueprint/ +├── blueprint.yaml Manifest: version, profiles, compatibility +├── model-specific-setup/ Agent-scoped model/provider compatibility manifests +├── router/ Model Router config and routing engine +├── policies/ +│ └── openclaw-sandbox.yaml Default network + filesystem policy +``` + +The blueprint runtime (TypeScript) lives in the plugin source tree: + +```text +nemoclaw/src/blueprint/ +├── runner.ts CLI runner: plan / apply / status / rollback +├── ssrf.ts SSRF endpoint validation (IP + DNS checks) +├── snapshot.ts Migration snapshot / restore lifecycle +├── state.ts Persistent run state management +``` + +### Blueprint Lifecycle + +```mermaid +flowchart LR + A[resolve] --> B[verify digest] + B --> C[plan] + C --> D[apply] + D --> E[status] +``` + +1. Resolve. The plugin locates the blueprint artifact and checks the version against `min_openshell_version` and `min_openclaw_version` constraints in `blueprint.yaml`. +2. Verify. The plugin checks the artifact digest against the expected value. +3. Plan. The runner determines what OpenShell resources to create or update, such as the gateway, providers, sandbox, inference route, and policy. +4. Apply. The runner executes the plan by calling `openshell` CLI commands. +5. Status. The runner reports current state. + +## Sandbox Environment + +Normal NemoClaw onboarding builds from the +[`ghcr.io/nvidia/nemoclaw/sandbox-base`](https://github.com/NVIDIA/NemoClaw/pkgs/container/nemoclaw%2Fsandbox-base) +base image and layers the NemoClaw runtime Dockerfile on top. The direct blueprint +runner still carries a pinned OpenShell Community OpenClaw image for legacy +`openshell sandbox create --from` compatibility. Inside the sandbox: + +- OpenClaw runs with the NemoClaw plugin pre-installed. +- Inference calls are routed through OpenShell to the configured provider. +- Network egress is restricted by the baseline policy in `openclaw-sandbox.yaml`. +- Filesystem access is confined to `/sandbox` and `/tmp` for read-write access, with system paths read-only. +- The NemoClaw plugin injects sandbox and policy context into agent turns so the agent can report policy blocks accurately. +- The image exposes a Docker health check that probes the in-sandbox gateway, so container runtimes can report whether the agent service is responding. +- The image includes common runtime compatibility helpers such as Homebrew and a `python` to `python3` symlink for tools that still invoke `python`. + +## Inference Routing + +Inference requests from the agent never leave the sandbox directly. +OpenShell intercepts them and routes to the configured provider: + +```text +Agent (sandbox) ──▶ OpenShell gateway ──▶ NVIDIA Endpoint (build.nvidia.com) +``` + +When you select the Model Router provider, the OpenShell gateway routes to a host-side router process instead of a single upstream model. +The router selects from the configured pool, then calls the upstream NVIDIA endpoint with the credential held outside the sandbox. + +Some model and provider combinations need agent-specific compatibility setup. +NemoClaw keeps those declarations under `nemoclaw-blueprint/model-specific-setup//` so OpenClaw and Hermes fixes can be tested and reviewed independently. + +Refer to Inference Options (use the `nemoclaw-user-configure-inference` skill) for provider configuration details. + +## Provider Credential Storage + +Provider credentials live in the OpenShell gateway store, not on the host filesystem. +NemoClaw never writes them to host disk; the OpenShell L7 proxy injects values at egress. +See Credential Storage (use the `nemoclaw-user-configure-security` skill) for the inspection, rotation, and migration flow. + +## Host-Side State and Config + +NemoClaw keeps non-secret operator-facing state on the host rather than inside the sandbox. + +| Path | Purpose | +|---|---| +| `~/.nemoclaw/sandboxes.json` | Registered sandbox metadata, including the default sandbox selection. | +| `~/.openclaw/openclaw.json` | Host OpenClaw configuration that NemoClaw snapshots or restores during migration flows. | + +The following environment variables configure optional services and local access. + +| Variable | Purpose | +|---|---| +| `TELEGRAM_BOT_TOKEN` | Telegram bot token you provide before `nemoclaw onboard`. OpenShell stores it in a provider; the sandbox receives placeholders, not the raw secret. | +| `TELEGRAM_ALLOWED_IDS` | Comma-separated Telegram user or chat IDs for allowlists when onboarding applies channel restrictions. | +| `SLACK_BOT_TOKEN` | Slack bot token (`xoxb-...`) you provide before `nemoclaw onboard`. Stored as an OpenShell provider; never passed directly to the sandbox. | +| `SLACK_APP_TOKEN` | Slack app-level token (`xapp-...`) required for Socket Mode. Stored alongside `SLACK_BOT_TOKEN` during onboarding. | +| `SLACK_ALLOWED_USERS` | Comma-separated Slack member IDs for DM and channel `@mention` user allowlisting. | +| `SLACK_ALLOWED_CHANNELS` | Comma-separated Slack channel IDs where channel `@mention` events are enabled (e.g. `C012AB3CD,C987ZY6XW`). Baked into the sandbox image at build time. Combine with `SLACK_ALLOWED_USERS` to restrict both channel and member. | +| `CHAT_UI_URL` | URL for the optional chat UI endpoint. | +| `NEMOCLAW_DISABLE_DEVICE_AUTH` | Build-time-only toggle that disables gateway device pairing when set to `1` before the sandbox image is created. | + +For normal setup and reconfiguration, prefer `nemoclaw onboard` over editing these files by hand. +Do not treat `NEMOCLAW_DISABLE_DEVICE_AUTH` as a runtime setting for an already-created sandbox. diff --git a/skills/nemoclaw-user-reference/references/cli-selection-guide.md b/skills/nemoclaw-user-reference/references/cli-selection-guide.md new file mode 100644 index 00000000000..98e9812dfd3 --- /dev/null +++ b/skills/nemoclaw-user-reference/references/cli-selection-guide.md @@ -0,0 +1,203 @@ +# CLI Selection Guide + +NemoClaw uses two host-side CLIs. +Use `nemoclaw` for NemoClaw-managed workflows. +Use `openshell` when you need a lower-level OpenShell operation that NemoClaw intentionally exposes. + +## Rule of Thumb + +If the task changes how NemoClaw creates, rebuilds, preserves, or configures a sandbox, start with `nemoclaw`. + +If the task inspects or changes the live OpenShell gateway, TUI, raw policy, port forwarding, inference route, or sandbox file transfer, use `openshell`. + +Do not create or recreate NemoClaw-managed sandboxes directly with `openshell sandbox create` unless you intend to manage OpenShell yourself. +Run `nemoclaw onboard` afterward if you need to return to a NemoClaw-managed environment. + +## Use `nemoclaw` For NemoClaw Workflows + +Use `nemoclaw` for operations where NemoClaw adds product-specific state, safety checks, backup behavior, credential handling, or OpenClaw configuration. + +- Install, onboard, or recreate a NemoClaw sandbox: + + ```console + $ nemoclaw onboard + $ nemoclaw onboard --resume --recreate-sandbox + ``` + +- List, connect to, check, or delete NemoClaw-managed sandboxes: + + ```console + $ nemoclaw list + $ nemoclaw my-assistant connect + $ nemoclaw my-assistant status + $ nemoclaw my-assistant logs --follow + $ nemoclaw my-assistant destroy + ``` + +- Rebuild or upgrade while preserving workspace state: + + ```console + $ nemoclaw my-assistant rebuild + $ nemoclaw upgrade-sandboxes --check + ``` + +- Snapshot, restore, or mount sandbox state: + + ```console + $ nemoclaw my-assistant snapshot create --name before-change + $ nemoclaw my-assistant snapshot restore before-change + $ nemoclaw my-assistant share mount + ``` + +- Add or remove NemoClaw policy presets: + + ```console + $ nemoclaw my-assistant policy-add pypi --yes + $ nemoclaw my-assistant policy-list + $ nemoclaw my-assistant policy-remove pypi --yes + ``` + +- Manage NemoClaw messaging channels, credentials, diagnostics, and cleanup: + + ```console + $ nemoclaw my-assistant channels add slack + $ nemoclaw credentials list + $ nemoclaw credentials reset nvidia-prod + $ nemoclaw debug --sandbox my-assistant + $ nemoclaw gc --dry-run + ``` + +## Use `openshell` For OpenShell Operations + +Use `openshell` when the docs explicitly call for a live OpenShell gateway operation or when you need a lower-level view beneath the NemoClaw wrapper. + +- Open the OpenShell TUI for network approvals and live activity: + + ```console + $ openshell term + ``` + +- Manage dashboard or service port forwards: + + ```console + $ openshell forward start --background + $ openshell forward list + ``` + +- Inspect the underlying sandbox state: + + ```console + $ openshell sandbox list + $ openshell sandbox get + $ openshell logs -n 20 + $ openshell doctor check + ``` + +- Run one-off commands or move files without starting a NemoClaw chat session: + + ```console + $ openshell sandbox exec -n -- ls -la /sandbox + $ openshell sandbox upload ./local-file /sandbox/ + $ openshell sandbox download /sandbox/output ./output + ``` + +- Inspect or replace raw OpenShell policy: + + ```console + $ openshell policy get --full > live-policy.yaml + $ openshell policy update --add-endpoint api.example.com:443:read-only:rest:enforce + $ openshell policy set --policy live-policy.yaml + ``` + +`openshell policy update` merges specific endpoint and rule changes into the live sandbox policy. +`openshell policy set` replaces the live policy with the file you provide. +For normal NemoClaw network access changes, prefer `nemoclaw policy-add` so NemoClaw preserves presets and records the change for rebuilds. + +## Common Decisions + +This section covers common decisions when using the NemoClaw CLI and the OpenShell CLI. + +### First Setup or Full Recreate + +Use `nemoclaw onboard`. +It starts the OpenShell gateway when needed, registers providers, builds the OpenClaw sandbox image, applies NemoClaw policy choices, and creates the sandbox. + +Avoid running `openshell gateway start --recreate` or `openshell sandbox create` directly for NemoClaw-managed sandboxes. +Those commands do not update NemoClaw's registry, session metadata, workspace-preservation flow, or OpenClaw-specific configuration. + +### Connect to the Sandbox + +Use `nemoclaw connect` for an interactive NemoClaw sandbox shell. +It waits for readiness, handles stale SSH host keys after gateway restarts, and prints agent-specific hints. + +Use `openshell sandbox connect ` only when you intentionally want the raw OpenShell connection path. + +For a one-off command, use `openshell sandbox exec` instead of opening an interactive shell. + +```console +$ openshell sandbox exec -n my-assistant -- cat /tmp/gateway.log +``` + +### Check Health or Logs + +Use `nemoclaw status` and `nemoclaw logs` first. +They combine NemoClaw registry data, OpenShell state, OpenClaw process health, inference health, policy details, and messaging-channel warnings. + +Use `openshell sandbox list`, `openshell sandbox get`, `openshell logs -n 20`, or `openshell doctor check` when debugging lower-level OpenShell behavior. +When using `openshell logs` directly, `-n ` controls the line count; use `--tail` only when you want live OpenShell log streaming. + +### Approve Blocked Network Requests + +Use `openshell term`. +The OpenShell TUI owns live network activity and operator approval prompts. + +Approved endpoints are session-scoped unless you also add them to the policy through a NemoClaw preset or raw OpenShell policy update. + +### Change Models or Providers + +Use the NemoClaw commands for model or provider inspection and switches so the OpenShell route and the running agent config stay consistent: + +```console +$ nemoclaw inference get +$ nemoclaw inference set --provider nvidia-prod --model nvidia/nemotron-3-super-120b-a12b +``` + +For Hermes sandboxes, use the alias; it updates the route and `/sandbox/.hermes/config.yaml` without a rebuild or restart: + +```console +$ nemohermes inference set --provider hermes-provider --model openai/gpt-5.4-mini +``` + +For a build-time agent setting change, rerun onboarding so the sandbox configuration is recreated consistently: + +```console +$ nemoclaw onboard --resume --recreate-sandbox +``` + +Verify either path with: + +```console +$ nemoclaw status +``` + +### Update Network Policy + +Use `nemoclaw policy-add` or `policy-remove` for NemoClaw presets and custom preset files. +NemoClaw merges the new policy with the live policy and reapplies presets during rebuilds. + +Use `openshell policy update` for precise live endpoint or REST rule changes. +Use `openshell policy get --full` and `openshell policy set` only when you need to edit and replace the raw policy file. + +### Move Workspace Files + +Use `nemoclaw snapshot create`, `snapshot restore`, or `share mount` for normal workspace preservation and editing. + +Use `openshell sandbox upload` and `openshell sandbox download` for manual file copies when you need exact control over source and destination paths. + +## Related Topics + +- [Commands](commands.md) for the full NemoClaw command reference. +- Manage Sandbox Lifecycle (use the `nemoclaw-user-manage-sandboxes` skill) for day-two operations. +- Switch Inference Models (use the `nemoclaw-user-configure-inference` skill) for inference route examples. +- Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for persistent network access changes. +- Approve or Deny Network Requests (use the `nemoclaw-user-manage-policy` skill) for the OpenShell TUI approval flow. diff --git a/skills/nemoclaw-user-reference/references/commands.md b/skills/nemoclaw-user-reference/references/commands.md new file mode 100644 index 00000000000..ec171a20351 --- /dev/null +++ b/skills/nemoclaw-user-reference/references/commands.md @@ -0,0 +1,1379 @@ +# NemoClaw CLI Commands Reference + +The `nemoclaw` CLI is the primary interface for managing NemoClaw sandboxes. +It is installed automatically by the installer (`curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash`). +For guidance on when to use `nemoclaw` versus the underlying `openshell` CLI, see [CLI Selection Guide](cli-selection-guide.md). + +## `/nemoclaw` Slash Command + +The `/nemoclaw` slash command is available inside the OpenClaw chat interface for quick actions: + +| Subcommand | Description | +|---|---| +| `/nemoclaw` | Show slash-command help and host CLI pointers | +| `/nemoclaw status` | Show sandbox and inference state | +| `/nemoclaw onboard` | Show onboarding status and reconfiguration guidance | +| `/nemoclaw eject` | Show rollback instructions for returning to the host installation | + +## Standalone Host Commands + +The `nemoclaw` binary handles host-side operations that run outside the OpenClaw plugin context. + +### `nemoclaw help`, `nemoclaw --help`, `nemoclaw -h` + +Show the top-level usage summary and command groups. +Running `nemoclaw` with no arguments shows the same help output. + +```console +$ nemoclaw help +``` + +### `nemoclaw --version`, `nemoclaw -v` + +Print the installed NemoClaw CLI version. + +```console +$ nemoclaw --version +``` + +### `nemoclaw resources` + +Display host hardware inventory and configured sandbox resource profiles. +Use `--json` for machine-readable CPU, memory, GPU, Kubernetes allocatable-capacity, and profile data. + +```console +$ nemoclaw resources [--json] +``` + +If the gateway is not running, Kubernetes allocatable fields are omitted and host CPU/RAM totals are still shown. + +### `nemoclaw onboard` + +Run the interactive setup wizard (recommended for new installs). +The wizard creates an OpenShell gateway, registers inference providers, builds the sandbox image, and creates the sandbox. +Use this command for new installs and for recreating a sandbox after changes to policy or configuration. + +```console +$ nemoclaw onboard [--non-interactive] [--resume | --fresh] [--recreate-sandbox] [--gpu | --no-gpu] [--from ] [--name ] [--sandbox-gpu | --no-sandbox-gpu] [--sandbox-gpu-device ] [--agent ] [--control-ui-port ] [--yes | -y] [--no-ollama-autostart] [--yes-i-accept-third-party-software] +``` + +**Warning:** + +For NemoClaw-managed environments, use `nemoclaw onboard` when you need to create or recreate the OpenShell gateway or sandbox. +Avoid `openshell self-update`, `npm update -g openshell`, `openshell gateway start --recreate`, or `openshell sandbox create` directly unless you intend to manage OpenShell separately and then rerun `nemoclaw onboard`. + +The installer detects existing sandbox sessions before onboarding and prints a warning if any are found. +To make the installer abort instead of continuing, set `NEMOCLAW_SINGLE_SESSION=1`: + +```console +$ NEMOCLAW_SINGLE_SESSION=1 curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +When existing sandboxes were created with OpenShell earlier than `0.0.37`, the installer prompts before running the new automatic gateway upgrade path. +For scripted installs, set `NEMOCLAW_ACCEPT_EXPERIMENTAL_OPENSHELL_UPGRADE=1` to allow the installer to back up registered sandbox state, retire the old gateway, install the current supported OpenShell release, and restore state during onboarding. +The automatic path is disabled if the existing `nemoclaw` CLI does not advertise `backup-all`; preserve sandbox state manually before retiring the old gateway in that case. +To perform those steps manually, run `nemoclaw backup-all`, retire the old gateway with `openshell gateway destroy -g nemoclaw || openshell gateway destroy`, then rerun the installer as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_OPENSHELL_UPGRADE_PREPARED=1 bash`. + +The wizard prompts for a provider first, then collects the provider credential if needed. +Supported non-experimental choices include NVIDIA Endpoints, OpenAI, Anthropic, Google Gemini, and compatible OpenAI or Anthropic endpoints. +Credentials are registered with the OpenShell gateway and never persisted to host disk. See Credential Storage (use the `nemoclaw-user-configure-security` skill) for details on inspection, rotation, and migration from earlier releases. +The legacy `nemoclaw setup` command is deprecated; use `nemoclaw onboard` instead. + +After provider selection, the wizard prompts for a **policy tier** that controls the default set of network policy presets applied to the sandbox. +Three tiers are available: + +| Tier | Description | +|------|-------------| +| Restricted | Base sandbox only. No third-party network access beyond inference and core agent tooling. | +| Balanced (default) | Full dev tooling and web search when the active agent supports web search. Package installs, model downloads, and inference. No messaging platform access. | +| Open | Broad access across third-party services including messaging and productivity. Agent-specific unsupported presets are filtered out. | + +After selecting a tier, the wizard shows a combined preset and access-mode screen where you can include or exclude individual presets and toggle each between read and read-write access. +For details on tiers and the presets each includes, see [Network Policies](network-policies.md#policy-tiers). + +In non-interactive mode, set the tier with `NEMOCLAW_POLICY_TIER` (default: `balanced`): + +```console +$ NEMOCLAW_POLICY_TIER=restricted nemoclaw onboard --non-interactive --yes-i-accept-third-party-software +``` + +`NEMOCLAW_POLICY_MODE` controls how non-interactive onboarding reconciles the tier-derived suggestions against the sandbox's currently-applied presets. +The default is `suggested`, which is *additive*. +Onboarding applies tier defaults and preserves any presets you previously added with [`nemoclaw policy-add`](#nemoclaw-name-policy-add) across re-onboards. +Use `custom` with `NEMOCLAW_POLICY_PRESETS` when you want the explicit list to be authoritative. +Onboarding removes any preset that is not in the list. +`skip` leaves the applied set untouched and does not apply tier defaults. +NemoClaw filters tier suggestions and resume selections by active agent support, so unsupported presets such as Brave Search are not reapplied to agents that do not support them. + +| Value | Behaviour | +|-------|-----------| +| `suggested` (default) | Apply tier defaults and preserve any extra presets already applied. Aliases: `default`, `auto`. | +| `custom` | Apply exactly `NEMOCLAW_POLICY_PRESETS`. Previously-applied presets not in the list are removed. Alias: `list`. | +| `skip` | Skip the policy step entirely. Aliases: `none`, `no`. | + +If you enable Brave Search during onboarding, NemoClaw registers a Brave Search OpenShell provider and keeps `openclaw.json` on an OpenShell credential placeholder. +At egress, OpenShell rewrites Brave's `X-Subscription-Token` header with the real `BRAVE_API_KEY`. +Treat Brave Search as an explicit opt-in and use a dedicated low-privilege Brave key. + +For non-interactive onboarding, you must explicitly accept the third-party software notice: + +```console +$ nemoclaw onboard --non-interactive --yes-i-accept-third-party-software +``` + +or: + +```console +$ NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 nemoclaw onboard --non-interactive +``` + +For scripted installer runs, pass explicit acceptance to the `bash` side of the installer pipe: + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_NON_INTERACTIVE=1 NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash +``` + +If the installer cannot prompt for the notice in a terminal and no explicit acceptance is set, it exits before installing Node.js or the NemoClaw CLI. + +To enable Brave Search in non-interactive mode, set: + +```console +$ BRAVE_API_KEY=... \ + nemoclaw onboard --non-interactive +``` + +`BRAVE_API_KEY` enables Brave Search in non-interactive mode and also enables `web_fetch`. +If Brave Search key validation fails in non-interactive mode, onboarding prints a warning, skips web search setup, and continues with the rest of the sandbox setup. +After fixing the key, re-enable web search with `nemoclaw config web-search`. + +The wizard prompts for a sandbox name. +Names must be 1 to 63 characters, lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. +Uppercase letters are automatically lowercased. +Names that match global CLI commands (`status`, `list`, `debug`, etc.) are rejected to avoid routing conflicts. +Use `--agent ` to target a specific installed agent profile during onboarding. + +Use `--control-ui-port ` to choose the host dashboard port for a sandbox. +The value must be an integer from `1024` through `65535`. +This flag takes precedence over `CHAT_UI_URL`, `NEMOCLAW_DASHBOARD_PORT`, the previous registry value, and the default port. + +If you enable Slack during onboarding, the wizard collects both the Bot Token (`SLACK_BOT_TOKEN`) and the App-Level Token (`SLACK_APP_TOKEN`). +Socket Mode requires both tokens. +The app-level token is stored in a dedicated `slack-app` OpenShell provider and forwarded to the sandbox alongside the bot token. +The wizard also accepts optional `SLACK_ALLOWED_USERS` and `SLACK_ALLOWED_CHANNELS` values so you can restrict Slack DMs, channel `@mention` users, and channel IDs before the sandbox image is built. + +If you enable Discord during onboarding, the wizard can also prompt for a Discord Server ID, whether the bot should reply only to `@mentions` or to all messages in that server, and an optional Discord User ID. +NemoClaw bakes those values into the sandbox image as Discord guild workspace config so the bot can respond in the selected server, not just in DMs. +If you leave the Discord User ID blank, the guild config omits the user allowlist and any member of the configured server can message the bot. +Guild responses remain mention-gated by default unless you opt into all-message replies. + +If you enable Telegram during onboarding, the wizard can also prompt for whether group chats should reply only to `@mentions` or to all group messages. +Set `TELEGRAM_REQUIRE_MENTION=1` for non-interactive onboarding when you want mention-only group replies. +Pairing and `TELEGRAM_ALLOWED_IDS` still govern direct messages. + +If you run onboarding again with the same sandbox name and choose a different inference provider or model, NemoClaw detects the drift and recreates the sandbox so the running OpenClaw UI matches your selection. +In interactive mode, the wizard asks for confirmation before delete and recreate. +In non-interactive mode, NemoClaw recreates automatically when the stored selection is readable and differs; if NemoClaw cannot read the stored selection, NemoClaw reuses by default. +Set `NEMOCLAW_RECREATE_SANDBOX=1` to force recreation even when no drift is detected. + +Before deleting an existing sandbox during recreation, NemoClaw backs up the workspace state (agents, extensions, workspace, skills, hooks, identity, devices, canvas, cron, memory, telegram, wechat, credentials) and restores it into the new sandbox once it is live. +This applies whether the existing sandbox is ready or marked not-ready, so cross-version upgrades that pass `NEMOCLAW_RECREATE_SANDBOX=1` no longer drop user files under `/sandbox/.openclaw/workspace/`. +The behaviour matches `nemoclaw rebuild --force`. +NemoClaw aborts the recreate when the backup cannot complete in full — including when individual state directories or files fail mid-backup — so failed entries are not silently dropped on delete. +Set `NEMOCLAW_RECREATE_WITHOUT_BACKUP=1` to skip the pre-recreate backup. +The destination sandbox starts with a fresh workspace. + +Before creating the gateway, the wizard runs preflight checks. +It verifies that Docker is reachable, warns on untested runtimes such as Podman, and prints host remediation guidance when prerequisites are missing. +The preflight also enforces the OpenShell version range declared in the blueprint (`min_openshell_version` and `max_openshell_version`). +If the installed OpenShell version falls outside this range, onboarding exits with an actionable error and a link to compatible releases. +For fresh OpenShell installs, NemoClaw queries published OpenShell releases and asks the installer to use a release that fits the blueprint range. +If release metadata is unavailable, the installer uses its bundled fallback pin and the post-install version gate still enforces the range. + +When NemoClaw finds an existing gateway to reuse, it probes the host gateway HTTP endpoint before declaring the gateway reusable. +If the container is running but the upstream is still warming up (for example, immediately after a Docker daemon restart), NemoClaw rebuilds the gateway instead of trusting stale metadata. +On the Docker-driver gateway path, preflight stays read-only when it detects a stale gateway (for example, a Docker-driver runtime env hash drift). +It prints a `⚠ Gateway will be recreated when sandbox creation starts` notice and defers the actual teardown to step `[2/8] Starting OpenShell gateway`. +This means pressing `Ctrl+C` between preflight and step `[2/8]` leaves the running gateway and existing sandbox containers untouched, so `nemoclaw onboard` is safe to run just to check preflight output. +For Linux Docker-driver gateways, onboarding also checks that a helper container on the OpenShell Docker network can reach `host.openshell.internal:`. +If a host firewall blocks that sandbox path, onboarding exits with a `sudo ufw allow from to any port proto tcp` command before it reports the gateway healthy. +Tune the wait via `NEMOCLAW_REUSE_HEALTH_POLL_COUNT` (default `6`) and `NEMOCLAW_REUSE_HEALTH_POLL_INTERVAL` (default `5` seconds). +The poll count is clamped to a minimum of `1` so the probe always runs at least once, and the interval is clamped to a minimum of `0` (no sleep between attempts). + +#### `--from ` + +Build the sandbox image from a custom Dockerfile instead of the stock NemoClaw image. +The entire parent directory of the specified file is used as the Docker build context, so any files your Dockerfile references (scripts, config, etc.) must live alongside it. +Onboarding skips common large directories (`node_modules`, `.git`, `.venv`, and `__pycache__`) while staging this context. +It also skips credential-style files and directories such as `.env*`, `.ssh/`, `.aws/`, `.netrc`, `.npmrc`, `secrets/`, `*.pem`, and `*.key`. +Other build outputs such as `dist/`, `target/`, or `build/` are still included. +If the staged context is larger than 100 MB, onboarding prints a warning before the Docker build starts. +If the directory contains unreadable files (for example, Windows system files visible in WSL), onboarding exits with an error suggesting you move the Dockerfile to a dedicated directory. + +```console +$ nemoclaw onboard --from path/to/Dockerfile +``` + +The Dockerfile path must exist. +Missing paths fail during command parsing before preflight, gateway setup, inference setup, or sandbox creation starts. + +The file can have any name; if it is not already named `Dockerfile`, onboard copies it to `Dockerfile` inside the staged build context automatically. +To create an isolated build context, create a dedicated directory that contains only the Dockerfile and the files it needs: + +```text +build-dir/ +├── Dockerfile +└── files-used-by-COPY/ +``` + +All NemoClaw build arguments (`NEMOCLAW_MODEL`, `NEMOCLAW_PROVIDER_KEY`, `NEMOCLAW_INFERENCE_BASE_URL`, etc.) are injected as `ARG` overrides at build time, so declare them in your Dockerfile if you need to reference them. + +In non-interactive mode, the path can also be supplied via the `NEMOCLAW_FROM_DOCKERFILE` environment variable. +You must also supply a sandbox name via `--name ` or `NEMOCLAW_SANDBOX_NAME` so a `--from` build cannot silently clobber the default `my-assistant` sandbox. + +```console +$ NEMOCLAW_NON_INTERACTIVE=1 NEMOCLAW_FROM_DOCKERFILE=path/to/Dockerfile NEMOCLAW_SANDBOX_NAME=my-build nemoclaw onboard +``` + +If a `--resume` is attempted with a different `--from` path than the original session, onboarding exits with a conflict error rather than silently building from the wrong image. + +#### `--name ` + +Set the sandbox name without going through the interactive prompt. +The same name format and reserved-name rules that the wizard enforces apply here too. Names must be 1 to 63 characters, lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. +Names that match a NemoClaw CLI command (`status`, `list`, `debug`, etc.) are rejected up front. + +```console +$ nemoclaw onboard --non-interactive --name my-build --from path/to/Dockerfile +``` + +The flag wins over `NEMOCLAW_SANDBOX_NAME`. +When prompting is possible, `NEMOCLAW_SANDBOX_NAME` fills the interactive default so you can press Enter to accept it. +When prompting is impossible (no TTY or `--non-interactive`), the env var is also honoured so existing CI scripts keep working. +Combining `--from ` with non-interactive onboarding requires one of `--name` or `NEMOCLAW_SANDBOX_NAME`; otherwise onboarding exits rather than silently defaulting to `my-assistant` and clobbering the default sandbox. + +### `nemoclaw onboard --from` + +Use a custom Dockerfile for the sandbox image. +This variant of `nemoclaw onboard` accepts a `--from ` argument to build the sandbox from a user-supplied Dockerfile instead of the default NemoClaw image. + +```console +$ nemoclaw onboard --from ./Dockerfile.custom +``` + +### GPU passthrough + +When `nemoclaw onboard` detects an NVIDIA GPU on the host (`nvidia-smi` succeeds), it enables OpenShell GPU passthrough at both the gateway and sandbox level by default. +Use `--no-gpu` to opt out when you want host-side inference providers only and do not need direct GPU access inside the sandbox. +Use `--gpu` to require GPU passthrough and fail fast if an NVIDIA GPU is not detected. +Use `--sandbox-gpu` or `--no-sandbox-gpu` to control only direct NVIDIA GPU access inside the sandbox. +Use `--sandbox-gpu --sandbox-gpu-device ` to pass a specific OpenShell GPU device selector to `openshell sandbox create`; device selectors require explicit sandbox GPU enablement. +On Linux Docker-driver gateways, NemoClaw can create the sandbox first and then recreate the OpenShell-managed Docker container with NVIDIA GPU access when that compatibility path is needed. +If the patch fails, onboarding keeps diagnostics and prints a manual cleanup command rather than deleting the failed sandbox automatically. + +Prerequisites: + +- NVIDIA GPU drivers installed and working (`nvidia-smi` must succeed). +- NVIDIA Container Toolkit configured for Docker. + +When GPU passthrough is enabled and a gateway already exists without it, onboarding first checks whether replacing the CPU-only gateway is safe. +If no other registered sandbox depends on that gateway, or if `--recreate-sandbox` is recreating the only registered sandbox with the same name, onboarding cleans up the stale gateway and continues. +If other sandboxes depend on the gateway or Docker state is unclear, onboarding exits without cleanup and prints targeted destroy or gateway-removal guidance. +To add GPU to an existing sandbox, rerun with `--recreate-sandbox`. +Set `NEMOCLAW_DOCKER_GPU_PATCH=0` only when you need to bypass the Linux Docker-driver compatibility patch during troubleshooting. + +### `nemoclaw list` + +List all registered sandboxes with their model, provider, and policy presets. +Pass `--json` for machine-readable output that includes a `schemaVersion`, the default sandbox, recovery metadata, and the sandbox inventory. +Sandboxes with an active SSH session are marked with a `●` indicator so you can tell at a glance which sandbox you are already connected to in another terminal. +When a sandbox has a recorded dashboard port, the output includes its local dashboard URL. + +```console +$ nemoclaw list [--json] +$ nemoclaw list --json +``` + +### `nemoclaw deploy` + +**Warning:** + +The `nemoclaw deploy` command is deprecated. +Prefer provisioning the remote host separately, then running the standard NemoClaw installer and `nemoclaw onboard` on that host. + +Deploy NemoClaw to a remote GPU instance through [Brev](https://brev.nvidia.com). +This command remains as a compatibility wrapper for the older Brev-specific bootstrap flow. +The Brev instance name is the positional argument. +The sandbox name comes from `NEMOCLAW_SANDBOX_NAME` and defaults to `my-assistant`; invalid sandbox names fail before Brev provisioning starts. + +```console +$ nemoclaw deploy +``` + +### `nemoclaw connect` + +Connect to a sandbox by name. +If the sandbox is not yet in the `Ready` phase, `connect` polls `openshell sandbox list` every few seconds and prints the current phase. This gives you progress output right after onboarding, when the 2.4 GB image is still pulling, instead of a silent hang. +Control the wait budget with `NEMOCLAW_CONNECT_TIMEOUT` (integer seconds, default `120`). When the deadline expires, `connect` exits non-zero with the last-seen phase. + +On a TTY, a one-shot hint prints before dropping into the sandbox shell. +The hint is agent-aware. It names the correct TUI command for the sandbox's agent and reminds you to use `/exit` to leave the chat before `exit` returns you to the host shell. +Set `NEMOCLAW_NO_CONNECT_HINT=1` to suppress the hint in scripted workflows. +If the sandbox is running an outdated agent version, a non-blocking warning prints before connecting with a `nemoclaw rebuild` hint. +If another terminal is already connected to the sandbox, `connect` prints a note with the number of existing sessions before proceeding. Multiple concurrent sessions are allowed. + +After a host reboot, the OpenShell gateway rotates its SSH host keys. +`connect` detects the resulting identity drift, prunes stale `openshell-*` entries from `~/.ssh/known_hosts`, and retries automatically. +You no longer need to re-run `nemoclaw onboard` after a reboot in this case. + +```console +$ nemoclaw my-assistant connect [--probe-only] +``` + +The `--probe-only` flag verifies the sandbox is reachable over SSH and exits without opening a shell. +Use it for health checks and scripted readiness probes. + +### `nemoclaw exec` + +Run a single command non-interactively in a running sandbox via the OpenShell exec endpoint. +The command runs as the sandbox user with `HOME=/sandbox`, so in-sandbox tooling resolves NemoClaw-provisioned config under `/sandbox/.openclaw` the same way it does for `connect` and `openshell sandbox connect`. +This is the supported substitute for `docker exec` on the sandbox container; raw `docker exec` runs as root and lands on `HOME=/root`, where the agent config is not present and `openclaw agent` falls back to its built-in defaults. + +```console +$ nemoclaw my-assistant exec -- openclaw agent -m "What is 2+2?" +$ nemoclaw my-assistant exec --workdir /sandbox/workspace -- ls -la +``` + +Everything after `--` is forwarded verbatim to the sandbox command, including flags the inner command needs. +The exit code is the remote command's exit code. + +| Flag | Description | +|------|-------------| +| `--workdir

` | Working directory inside the sandbox | +| `--tty` / `--no-tty` | Allocate a pseudo-terminal; defaults to auto-detection (on when stdin and stdout are terminals) | +| `--timeout ` | Timeout in seconds (`0` means no timeout) | + +### `nemoclaw recover` + +Restart the in-sandbox gateway and re-establish the host-side dashboard port-forward without opening an SSH session. +Use this after a sandbox pod restart, a sandbox crash, or whenever `nemoclaw status` reports the gateway is not running but the sandbox is alive. + +`recover` runs the same recovery the `connect` command performs as a side effect, but without dropping into a shell, so it is safe to call from scripts and automation. +It is idempotent. +If the gateway is already running, the command exits zero with a probe message and makes no changes. + +```console +$ nemoclaw my-assistant recover +``` + +### `nemoclaw status` + +Show sandbox status, health, and inference configuration. + +The command probes every inference provider and reports one of three states on the `Inference` line: + +| State | Meaning | +|-------|---------| +| `healthy` | The provider endpoint returned a reachable response. | +| `unreachable` | The probe failed. The output includes the endpoint URL and a remediation hint. | +| `not probed` | The endpoint URL is not known (for example, `compatible-*` providers). | +| `not verified` | NemoClaw could not verify the sandbox or gateway state, so it skips inference probing. | + +Local providers (Ollama, vLLM) probe the host-side health endpoint. +Remote providers (NVIDIA Endpoints, OpenAI, Anthropic, Gemini) use a lightweight reachability check; any HTTP response, including `401` or `403`, counts as reachable. +No API keys are sent. + +For Local Ollama, the command also probes the authenticated proxy and prints an `Inference (auth proxy)` line when a proxy token is available. +Use that line to distinguish a healthy backend from a broken proxy path that the sandbox uses for inference. + +For cloud-only providers, the output omits the NIM status line unless a NIM container is registered or an unexpected NIM container is running. + +If the sandbox or gateway cannot be verified, the command exits non-zero instead of reporting healthy inference from stale registry state. +Gateway and dashboard health checks treat HTTP `401` from device auth as a live service, not as an offline gateway. + +A `Connected` line reports whether the sandbox has any active SSH sessions and, if so, how many. +The sandbox list in the status output includes the dashboard port suffix for sandboxes with a recorded dashboard port. + +The Policy section displays the live enforced policy (fetched via `openshell policy get --full`), which reflects presets added or removed after sandbox creation. +When OpenShell reports an active policy version, the displayed YAML `version` line uses that active version instead of the static schema version. +If the sandbox is running an outdated agent version, the output includes an `Update` line with the available version and a `nemoclaw rebuild` hint. + +When other sandboxes have the same messaging channel enabled (Telegram, Discord, or Slack) with the same bot token, the output includes a cross-sandbox overlap warning so you can resolve the conflict before messages start dropping. +The command also tails `/tmp/gateway.log` inside the default sandbox and flags Telegram `409 Conflict` errors that indicate a duplicate consumer for the bot token. + +```console +$ nemoclaw my-assistant status +``` + +#### Checking the OpenClaw version + +NemoClaw pins the OpenClaw version inside the sandbox at build time, not at runtime. +The NemoClaw runtime build target is declared by `OPENCLAW_VERSION` in the NemoClaw Dockerfiles. +The `min_openclaw_version` field in `nemoclaw-blueprint/blueprint.yaml` remains the compatibility floor for direct blueprint consumers, so it can be lower than the Dockerfile target. +Existing sandboxes do not auto-upgrade when a newer NemoClaw release ships a newer pin — you upgrade by rebuilding the sandbox. + +`nemoclaw status` prints the running OpenClaw version on the `Agent` line: + +```console +$ nemoclaw my-assistant status +... + Agent: OpenClaw v2026.5.22 +... +``` + +If the sandbox is running an OpenClaw older than the version this NemoClaw release pins, `status` and `connect` add an `Update` line pointing at `nemoclaw rebuild` to pick up the newer version. +The rebuild reuses the existing sandbox name and persisted credentials, so messaging tokens and provider keys carry over. + +### `nemoclaw doctor` + +Run a focused health check for one sandbox and the host services it depends on. +The command checks the local CLI build, Docker daemon, OpenShell CLI, NemoClaw gateway container, gateway port mapping, live sandbox state, inference route, provider reachability, messaging channel conflicts, Ollama reachability, and the cloudflared tunnel state. + +Warnings do not make the command fail. +Failed checks exit non-zero so scripts can use `doctor` as a readiness gate. +Use `--json` for machine-readable output. + +```console +$ nemoclaw my-assistant doctor [--json] +``` + +### `nemoclaw logs` + +View sandbox logs. +Use `--follow` to stream output in real time. +Use `--tail ` or `-n ` to limit the number of returned lines. +Use `--since ` to show recent logs only, such as `5m`, `1h`, or `30s`. +The command reads both OpenClaw gateway output and OpenShell audit events, so policy denials appear alongside the gateway log stream. +If one log source is unavailable, NemoClaw prints a warning and keeps reading the remaining source. +NemoClaw's `--tail ` flag is a line-count flag; the lower-level `openshell logs --tail` flag means follow live output, so use `openshell logs -n ` when running OpenShell directly for a fixed line count. + +```console +$ nemoclaw my-assistant logs [--follow] [--tail |-n ] [--since ] +``` + +### `nemoclaw dashboard-url` + +Print the authenticated OpenClaw dashboard URL for a running sandbox. +Use this when you are on a remote machine, using an SSH or reverse tunnel, or need a complete URL for a browser session. + +```console +$ nemoclaw my-assistant dashboard-url +$ nemoclaw my-assistant dashboard-url --quiet +``` + +The default output includes a label and a warning. +Pass `--quiet` or `-q` to print only the URL to stdout so scripts can capture it: + +```console +$ URL=$(nemoclaw my-assistant dashboard-url --quiet) +``` + +**Warning:** + +Treat the authenticated dashboard URL like a password. +Do not log it, share it, or commit it to version control. + +### `nemoclaw gateway-token` + +Print the OpenClaw gateway auth token for a running sandbox to stdout. +The token is required by `openclaw tui` and the OpenClaw dashboard URL. +Use `dashboard-url` for browser access; use `gateway-token` only when automation needs the raw token. +Pipe it into automation or capture it into an environment variable: + +```console +$ TOKEN=$(nemoclaw my-assistant gateway-token --quiet) +$ export OPENCLAW_GATEWAY_TOKEN="$TOKEN" +``` + +The token is written to stdout with no surrounding text. +A one-line security warning is written to stderr; pass `--quiet` (or `-q`) to suppress it. +The command exits non-zero with a diagnostic on stderr when the sandbox is not registered or when the token cannot be retrieved (for example, if the sandbox is not running). + +**Warning:** + +Treat the gateway token like a password. +Do not log it, share it, or commit it to version control. + +### `nemoclaw destroy` + +Stop the NIM container, remove the host-side Docker image built during onboard, and delete the sandbox. +This removes the sandbox from the registry. +For Ollama-backed sandboxes, `destroy` also asks Ollama to unload currently loaded models and clears stale auth proxy state on a best-effort basis. + +**Warning:** + +This command permanently deletes the sandbox **and its persistent volume**. +All workspace files (use the `nemoclaw-user-manage-sandboxes` skill) (SOUL.md, USER.md, IDENTITY.md, AGENTS.md, MEMORY.md, and daily memory notes) are lost. +Back up your workspace first with `nemoclaw snapshot create` or see Backup and Restore (use the `nemoclaw-user-manage-sandboxes` skill). +If you want to upgrade the sandbox while preserving state, use `nemoclaw rebuild` instead. + +If another terminal has an active SSH session to the sandbox, `destroy` prints an active-session warning and requires a second confirmation before it proceeds. +Pass `--yes`, `-y`, or `--force` to skip the prompt in scripted workflows. +By default, `destroy` preserves the shared NemoClaw gateway. +Pass `--cleanup-gateway` to remove the shared gateway when destroying the last sandbox, or `--no-cleanup-gateway` to force preservation when environment defaults request cleanup. + +```console +$ nemoclaw my-assistant destroy [--yes|-y|--force] [--cleanup-gateway|--no-cleanup-gateway] +``` + +### `nemoclaw policy-add` + +Add a policy preset to a sandbox. +Presets extend the baseline network policy with additional endpoints. +Before applying, the command shows which endpoints the preset would open and prompts for confirmation. + +```console +$ nemoclaw my-assistant policy-add +``` + +To apply a specific preset without the interactive picker, pass its name as a positional argument: + +```console +$ nemoclaw my-assistant policy-add pypi --yes +``` + +The positional form is required in scripted workflows. +Set `NEMOCLAW_NON_INTERACTIVE=1` instead of `--yes` if you want the same behavior from an environment variable. +If the preset name is unknown or already applied, the command exits non-zero with a clear error. +Custom preset files are tracked with the sandbox that applied them. +`policy-list`, `policy-add`, and `policy-remove` compare the local registry and live gateway state using that sandbox-scoped preset metadata, so custom presets do not appear missing just because they are not part of the built-in preset catalog. + +| Flag | Description | +|------|-------------| +| `--from-file ` | Apply a custom preset YAML file instead of a built-in preset | +| `--from-dir ` | Apply every custom preset YAML file in a directory in lexicographic order | +| `--yes`, `--force` | Skip the confirmation prompt (requires a preset name, `--from-file`, or `--from-dir`) | +| `--dry-run` | Preview the endpoints a preset would open without applying changes | + +Use `--dry-run` to audit a preset before applying it: + +```console +$ nemoclaw my-assistant policy-add --dry-run +``` + +Apply a custom preset file when you need to grant access to an endpoint that is not covered by a built-in preset: + +```console +$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml +``` + +For batch workflows, apply all preset files from a directory: + +```console +$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes +``` + +Review every host in custom preset files before applying them. +Custom presets bypass the built-in preset review process and can widen sandbox egress. + +### `nemoclaw policy-list` + +List available policy presets and show which ones are applied to the sandbox. +The command cross-references the local registry against the live gateway state (via `openshell policy get`), so it flags presets that are applied in one place but not the other. +This catches desync caused by external edits to the gateway policy or stale registry entries after a manual rollback. + +```console +$ nemoclaw my-assistant policy-list +``` + +### `nemoclaw policy-remove` + +Remove a previously applied policy preset from a sandbox. +The command lists only the presets currently applied, prompts you to select one, shows the endpoints that would be removed, and asks for confirmation before narrowing egress. + +```console +$ nemoclaw my-assistant policy-remove +``` + +To remove a specific preset non-interactively, pass its name as a positional argument: + +```console +$ nemoclaw my-assistant policy-remove pypi --yes +``` + +Set `NEMOCLAW_NON_INTERACTIVE=1` as an alternative to `--yes`. +If the preset is unknown or not currently applied, the command exits non-zero with a clear error. + +| Flag | Description | +|------|-------------| +| `--yes`, `--force` | Skip the confirmation prompt (requires a preset name) | +| `--dry-run` | Preview which endpoints would be removed without applying changes | + +Unchecking a preset in the onboard TUI checkbox also removes it from the sandbox. + +### `nemoclaw hosts-add` + +Add a host alias to the sandbox pod template. +Use this when a sandbox needs a stable LAN-only name, such as a local SearXNG or internal model endpoint, without dropping to `docker exec` and `kubectl patch`. + +```console +$ nemoclaw my-assistant hosts-add searxng.local 192.168.1.105 +``` + +The command validates the hostname and IP address, rejects duplicate hostnames, and patches `spec.podTemplate.spec.hostAliases` on the sandbox resource. + +| Flag | Description | +|------|-------------| +| `--dry-run` | Print the JSON patch for the resulting `hostAliases` list without applying it | + +### `nemoclaw hosts-list` + +List host aliases configured on the sandbox resource. + +```console +$ nemoclaw my-assistant hosts-list +``` + +### `nemoclaw hosts-remove` + +Remove a hostname from the sandbox `hostAliases` list. + +```console +$ nemoclaw my-assistant hosts-remove searxng.local +``` + +| Flag | Description | +|------|-------------| +| `--dry-run` | Print the JSON patch for the resulting `hostAliases` list without applying it | + +### `nemoclaw channels list` + +List the messaging channels NemoClaw knows about (`telegram`, `discord`, `slack`, `wechat`, `whatsapp`) with a short description. +The command is a static reference; it does not consult credentials or the running sandbox. +WeChat and WhatsApp are experimental. + +```console +$ nemoclaw my-assistant channels list +``` + +### `nemoclaw channels add ` + +Register a messaging channel with the sandbox and rebuild so the image picks up the new channel. +Channels fall into three login modes: + +- **Token paste** (`telegram`, `discord`, `slack`): the command prompts for any missing token and registers it with the OpenShell gateway. +- **Host-side QR** (`wechat`, experimental): the command renders an iLink QR code on the host and you scan it from WeChat on your phone. + On confirm, NemoClaw captures the bot token, registers it with the OpenShell gateway, and stores non-secret per-account metadata (`WECHAT_ACCOUNT_ID`, `WECHAT_BASE_URL`, `WECHAT_USER_ID`) for the in-sandbox bridge. + NemoClaw automatically adds the scanning operator's WeChat user ID to `WECHAT_ALLOWED_IDS`. + Supply additional comma-separated IDs to authorize more DM senders. + NemoClaw advertises WeChat for both OpenClaw (the `@tencent-weixin/openclaw-weixin` plugin) and Hermes (the built-in iLink WeChat adapter). +- **In-sandbox QR** (`whatsapp`, experimental): the command records the channel without a host-side token or OpenShell credential provider. + NemoClaw advertises WhatsApp for OpenClaw and Hermes sandboxes; after rebuild, run `openclaw channels login --channel whatsapp` for OpenClaw or `hermes whatsapp` for Hermes. + This intentionally leaves QR-created mutable session state in the sandbox until you unpair it or clear the durable agent state. + +After registering the channel, NemoClaw asks whether to rebuild immediately. +Running `add` for an already-configured channel simply overwrites the stored credentials where applicable — the operation is idempotent. +Channel names are trimmed and lowercased before NemoClaw stores credentials, names bridge providers, or prints rebuild messages. +If a matching built-in network policy preset exists, NemoClaw applies it to the sandbox before the rebuild so the bridge has egress to its upstream API; if applying the preset fails, NemoClaw warns and tells you to re-apply manually with `nemoclaw policy-add `. + +```console +$ nemoclaw my-assistant channels add telegram +``` + +| Flag | Description | +|------|-------------| +| `--dry-run` | Validate the channel and token inputs without saving credentials or rebuilding | + +Slack requires both `SLACK_BOT_TOKEN` (bot user OAuth) and `SLACK_APP_TOKEN` (app-level Socket Mode token); the command prompts for each in turn. +Optional Slack allowlists come from `SLACK_ALLOWED_USERS` and `SLACK_ALLOWED_CHANNELS` at rebuild time. +When `NEMOCLAW_NON_INTERACTIVE=1` is set, any missing token fails fast and no rebuild prompt is shown — instead, the change is queued and you are told to run `nemoclaw rebuild` manually. +If you omit the required `` argument, the CLI prints the `channels add ` usage with the supported channel list instead of falling back to top-level help. + +### `nemoclaw channels remove ` + +Clear the stored credentials for a messaging channel and rebuild the sandbox so the image drops the channel. +Running `remove` for a channel that was never configured is a no-op against the credentials file and still triggers the rebuild prompt. +When the bridge provider is attached to a live sandbox, NemoClaw detaches it before deleting the provider from the OpenShell gateway. +If the matching built-in policy preset is applied, such as `telegram`, `discord`, `slack`, `wechat`, or `whatsapp`, NemoClaw also removes that preset so the upstream API is no longer allow-listed after the channel is gone. +NemoClaw also strips the channel from `session.policyPresets` so a subsequent `onboard --resume` does not re-apply the preset on the next rebuild. + +For QR-paired channels (today: WhatsApp), NemoClaw destructively clears the in-sandbox session directory before the rebuild so the `state_dirs` backup does not restore the auth blob and let the channel reconnect: + +- OpenClaw: `/sandbox/.openclaw//` (for example `/sandbox/.openclaw/whatsapp/`). +- Hermes: `/sandbox/.hermes/platforms//` (for example `/sandbox/.hermes/platforms/whatsapp/`). + +The cleanup tries `openshell sandbox exec` first and falls back to SSH if the exec wrapper does not return the success sentinel. If both transports fail (the sandbox is stopped, the gateway is down, or SSH cannot reach it) the command refuses to proceed to the rebuild and asks you to start the sandbox and re-run, so a half-removed state cannot leave stale Baileys auth files behind for the next rebuild to restore. + +```console +$ nemoclaw my-assistant channels remove telegram +``` + +| Flag | Description | +|------|-------------| +| `--dry-run` | Report the channel that would be removed without clearing credentials or rebuilding | + +As with `channels add`, `NEMOCLAW_NON_INTERACTIVE=1` skips the rebuild prompt and queues the change for a manual `nemoclaw rebuild`. +If you omit the required `` argument, the CLI prints the `channels remove ` usage with the supported channel list. + +Host-side removal is the supported path because agent channel config is baked into the container image at build time (`/sandbox/.openclaw/openclaw.json` for OpenClaw and `/sandbox/.hermes/.env` for Hermes); agent-specific channel removals inside the sandbox would modify the running config but not persist changes across rebuilds. + +### `nemoclaw channels stop ` + +Pause a single messaging bridge (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`) without clearing its credentials. +The channel is marked disabled in the per-sandbox registry, and the sandbox is rebuilt so the onboard step skips registering the bridge with the gateway. +The provider stays registered with the OpenShell gateway, so a later `channels start` brings the bridge back without re-entering tokens. + +```console +$ nemoclaw my-assistant channels stop telegram +``` + +| Flag | Description | +|------|-------------| +| `--dry-run` | Report the channel that would be disabled without updating the registry or rebuilding | + +Use `channels stop` instead of `channels remove` when you want to pause a bridge temporarily. `channels remove` is destructive to credentials; `channels stop` is not. + +### `nemoclaw channels start ` + +Re-enable a channel previously paused with `channels stop`. The channel is removed from the disabled list, the sandbox is rebuilt, and the bridge registers with the gateway again using the stored credentials. + +```console +$ nemoclaw my-assistant channels start telegram +``` + +| Flag | Description | +|------|-------------| +| `--dry-run` | Report the channel that would be re-enabled without updating the registry or rebuilding | + +### `nemoclaw skill install ` + +Deploy a skill directory to a running sandbox. +The command validates the `SKILL.md` frontmatter (a `name` field is required), uploads all non-dot files preserving subdirectory structure, and performs agent-specific post-install steps. + +```console +$ nemoclaw my-assistant skill install ./my-skill/ +``` + +The skill directory must contain a `SKILL.md` file with YAML frontmatter that includes a `name` field. +Skill names must contain only alphanumeric characters, dots, hyphens, and underscores. +OpenClaw plugins are a different kind of extension. To install an OpenClaw plugin, see Install OpenClaw Plugins (use the `nemoclaw-user-deploy-remote` skill). +Run `nemoclaw skill install --help` to print usage for this subcommand. +If you pass a plugin-shaped directory to `skill install`, the CLI prints a plugin-specific hint instead of treating it as a missing skill file. + +Files with names starting with `.` (dotfiles) are skipped and listed in the output. +Files with unsafe path characters are rejected to prevent shell injection. + +If the skill already exists on the sandbox, the command updates it in place and preserves chat history. +For new installs, the agent session index is refreshed so the agent discovers the skill on the next session. + +### `nemoclaw rebuild` + +Upgrade a sandbox to the current agent version while preserving workspace state. +The command backs up workspace state, destroys the old sandbox (including its host-side Docker image), recreates it with the current image via `onboard --resume`, and restores workspace state into the new sandbox. +Credentials are stripped from backups before storage. +Policy presets applied to the old sandbox are reapplied to the new one so your egress rules survive the rebuild. + +```console +$ nemoclaw my-assistant rebuild [--yes|-y|--force] [--verbose|-v] +``` + +| Flag | Description | +|------|-------------| +| `--yes`, `-y`, `--force` | Skip the confirmation prompt | +| `--verbose`, `-v` | Log SSH commands, exit codes, and session state (also enabled by `NEMOCLAW_REBUILD_VERBOSE=1`) | + +If another terminal has an active SSH session to the sandbox, `rebuild` prints an active-session warning and requires confirmation before destroying the sandbox. +Pass `--yes`, `-y`, or `--force` to skip the prompt in scripted workflows. + +The sandbox must be running for the backup step to succeed. +If an archive command reports partial output while still producing usable data, `rebuild` keeps the captured backup entries and reports only the manifest-defined paths that could not be archived. +If any required state path still cannot be backed up, `rebuild` exits before destroying the original sandbox. +After restore, the command runs `openclaw doctor --fix` for cross-version structure repair. + +### `nemoclaw update` + +Check for a NemoClaw CLI update and, when requested, run the maintained installer flow. +This command is a discoverable CLI wrapper around the supported installer path: + +```console +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +```console +$ nemoclaw update [--check] [--yes|-y] +``` + +| Flag | Description | +|------|-------------| +| `--check` | Show the current version, latest maintained version, install type, and maintained update command without changing anything | +| `--yes`, `-y` | Skip the confirmation prompt and run the maintained installer flow | + +`nemoclaw update` updates the host-side NemoClaw installation. +It does not replace `nemoclaw upgrade-sandboxes`; use that command to inspect or rebuild existing sandboxes after the CLI has been updated. +When the command is running from a source checkout, it reports that state and does not replace the checkout with a global package install. + +### `nemoclaw upgrade-sandboxes` + +Rebuild sandboxes whose base image is older than the one currently pinned by NemoClaw. +NemoClaw resolves the digest of `ghcr.io/nvidia/nemoclaw/sandbox-base:latest` from the registry, then compares it against the digest each sandbox was created with. +Sandboxes that match the current digest are left alone. + +```console +$ nemoclaw upgrade-sandboxes [--check] [--auto] [--yes|-y] +``` + +| Flag | Description | +|------|-------------| +| `--check` | List stale sandboxes without rebuilding any of them. Exits non-zero if any are stale. | +| `--auto` | Rebuild every stale sandbox without prompting. Used by the installer to upgrade in place. | +| `--yes`, `-y` | Skip the confirmation prompt for the rebuild plan. | + +Each rebuild reuses the same workspace backup-and-restore flow as `nemoclaw rebuild`, so workspace files survive the upgrade. +If the registry is unreachable (offline or firewalled hosts), NemoClaw falls back to the unpinned `:latest` tag and reports that the digest could not be resolved instead of failing. + +### `nemoclaw backup-all` + +Back up all registered running sandboxes to `~/.nemoclaw/rebuild-backups/`. +Sandboxes that are not running are skipped. + +```console +$ nemoclaw backup-all +``` + +The installer calls `backup-all` automatically before onboarding to protect against data loss during OpenShell upgrades. + +### `nemoclaw snapshot create` + +Create a timestamped snapshot of sandbox state. +Snapshots are stored in `~/.nemoclaw/rebuild-backups//`. + +```console +$ nemoclaw my-assistant snapshot create +``` + +| Flag | Description | +|------|-------------| +| `--name + +## Policy Tiers + +During onboarding, the wizard prompts for a policy tier that determines the default set of presets applied on top of the baseline policy. +The baseline policy is always applied regardless of the selected tier. + +| Tier | Presets included | Description | +|------|------------------|-------------| +| Restricted | None | Base sandbox only. No third-party network access beyond inference and core agent tooling. | +| Balanced (default) | `npm`, `pypi`, `huggingface`, `brew`, `brave when supported` | Full dev tooling and web search for agents that support web search. No messaging platform access. | +| Open | `npm`, `pypi`, `huggingface`, `brew`, `brave when supported`, `slack`, `discord`, `telegram`, `wechat` (experimental), `whatsapp` (experimental), `jira`, `outlook` | Broad access across third-party services including messaging and productivity. | + +After selecting a tier, a combined preset and access-mode screen lets you include or exclude individual presets and toggle each between read (GET only) and read-write (GET + POST/PUT/PATCH) access. +Tier-default presets are pre-selected; additional presets can be added from the full list. +NemoClaw filters tier defaults by the active agent's supported integrations. +For example, Hermes onboarding omits the Brave Search preset because Hermes does not use NemoClaw's OpenClaw web-search configuration. + +Tier definitions are stored in `nemoclaw-blueprint/policies/tiers.yaml`. + +In non-interactive mode, set the tier with `NEMOCLAW_POLICY_TIER`: + +```console +$ NEMOCLAW_POLICY_TIER=open nemoclaw onboard --non-interactive --yes-i-accept-third-party-software +``` + +If the value does not match a known tier, onboarding exits with an error listing the valid options. + +### Inference + +The baseline policy allows only the `local` inference route. External inference +providers are reached through the OpenShell gateway, not by direct sandbox egress. + +## Operator Approval Flow + +When the agent attempts to reach an endpoint not listed in the policy, OpenShell intercepts the request and presents it in the TUI for operator review: + +1. The agent makes a network request to an unlisted host. +2. OpenShell blocks the connection and logs the attempt. +3. The TUI command `openshell term` displays the blocked request with host, port, and requesting binary. +4. The operator approves or denies the request. +5. If approved, the endpoint is added to the running policy for the session. + +To try this, run the walkthrough: + +```console +$ ./scripts/walkthrough.sh +``` + +This opens a split tmux session with the TUI on the left and the agent on the right. + +## Modifying the Policy + +### Static Changes + +Edit `nemoclaw-blueprint/policies/openclaw-sandbox.yaml` and re-run the onboard wizard: + +```console +$ nemoclaw onboard +``` + +### Dynamic Changes + +Apply policy updates to a running sandbox without restarting: + +```console +$ openshell policy update --add-endpoint api.example.com:443:read-only:rest:enforce +``` + +To replace the live policy with a complete raw policy file, use `openshell policy set`: + +```console +$ openshell policy set --policy +``` diff --git a/skills/nemoclaw-user-reference/references/troubleshooting.md b/skills/nemoclaw-user-reference/references/troubleshooting.md new file mode 100644 index 00000000000..41063844c00 --- /dev/null +++ b/skills/nemoclaw-user-reference/references/troubleshooting.md @@ -0,0 +1,1419 @@ +# Troubleshooting + +This page covers common issues you may encounter when installing, onboarding, or running NemoClaw, along with their resolution steps. + +**Get Help:** + +If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new). + +## Installation + +### `nemoclaw` not found after install + +If you use nvm or fnm to manage Node.js, the installer may not update your current shell's PATH. +The `nemoclaw` binary is installed but the shell session does not know where to find it. + +Run `source ~/.bashrc` (or `source ~/.zshrc` for zsh), or open a new terminal window. + +When installing from a source checkout with `npm install`, NemoClaw first tries `npm link`. +If the global npm prefix is not writable, it writes a managed shim to `~/.local/bin/nemoclaw` instead. +Add `~/.local/bin` to your `PATH` if the command is still not found. +Source-checkout installs also bootstrap OpenShell when it is missing before running preflight. +If a source install still reports that `openshell` is not available, re-run the installer from the repository root and check that `~/.local/bin` is on your `PATH`. + +### Installer fails on unsupported platform + +The installer checks for a supported OS and architecture before proceeding. +If you see an unsupported platform error, verify that you are running on a tested platform listed in the Container Runtimes table in the quickstart guide. + +### Node.js version is too old + +NemoClaw requires Node.js 22.16 or later. +If the installer exits with a Node.js version error, check your current version: + +```console +$ node --version +``` + +If the version is below 22.16, install a supported release. +If you use nvm, run: + +```console +$ nvm install 22 +$ nvm use 22 +``` + +Then re-run the installer. + +### Image push fails with out-of-memory errors + +The sandbox image is approximately 2.4 GB compressed. During image push, the Docker daemon, k3s, and the OpenShell gateway run alongside the export pipeline, which buffers decompressed layers in memory. On machines with less than 8 GB of RAM, this combined usage can trigger the OOM killer. + +If you cannot add memory, configure at least 8 GB of swap to work around the issue at the cost of slower performance. + +### Docker is not running + +The installer and onboard wizard require Docker to be running. +If you see a Docker connection error, start the Docker daemon: + +```console +$ sudo systemctl start docker +``` + +On macOS with Docker Desktop, open the Docker Desktop application and wait for it to finish starting before retrying. + +### Docker permission denied on Linux + +On Linux, if the Docker daemon is running but you see "permission denied" errors, your user may not be in the `docker` group. +The installer can add your user to the group, but Linux does not activate that membership in the current shell automatically. +Add your user and activate the group in the current shell: + +**Docker group access:** + +NemoClaw needs Docker access. +On personal Linux development machines, adding your user to the `docker` group is the standard way to run Docker without sudo. +Members of the `docker` group can control the daemon with root-level impact, so grant this access only to trusted local accounts; on shared or managed systems, use your organization's approved Docker access path. +For background, review Docker's [daemon attack surface guidance](https://docs.docker.com/engine/security/#docker-daemon-attack-surface). + +```console +$ sudo usermod -aG docker $USER +$ newgrp docker +``` + +Then retry `nemoclaw onboard`. +If the installer stopped after printing `newgrp docker`, run that command and then re-run the installer: + +```console +$ newgrp docker +$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash +``` + +### macOS first-run failures + +The two most common first-run failures on macOS are missing developer tools and Docker connection errors. + +To avoid these issues, install the prerequisites in the following order before running the NemoClaw installer: + +1. Install Xcode Command Line Tools (`xcode-select --install`). These are needed by the installer and Node.js toolchain. +2. Install and start a supported container runtime (Docker Desktop or Colima). Without a running runtime, the installer cannot connect to Docker. + +### Permission errors during installation + +The NemoClaw installer does not require `sudo` or root. +It installs Node.js via nvm and NemoClaw via npm, both into user-local directories. +The installer also handles OpenShell installation automatically using a pinned release. + +If you see permission errors during installation, they typically come from Docker, not the NemoClaw installer itself. +Docker must be installed and running before you run the installer, and installing Docker may require elevated privileges on Linux. + +### npm install fails with permission errors + +If `npm install` fails with an `EACCES` permission error, do not run npm with `sudo`. +Instead, configure npm to use a directory you own: + +```console +$ mkdir -p ~/.npm-global +$ npm config set prefix ~/.npm-global +$ export PATH=~/.npm-global/bin:$PATH +``` + +Add the `export` line to your `~/.bashrc` or `~/.zshrc` to make it permanent, then re-run the installer. + +### Installer fails on NVIDIA Jetson + +The installer auto-detects NVIDIA Jetson devices (Orin and Thor) and applies required host configuration before the normal install flow. +If the Jetson setup step fails, verify that you have `sudo` access and that Docker is installed and running. + +For JetPack 6 (L4T 36.x), the setup switches iptables to legacy mode and adjusts the Docker daemon configuration. +For JetPack 7 (L4T 38.x / Thor), only bridge netfilter and sysctl settings are applied. +For JetPack 7 (L4T 39.x), bridge netfilter is loaded only when the host is missing it. Some R39 images already ship with `br_netfilter` configured and are left untouched. On affected R39 hosts, the installer prints `loading br_netfilter (required by k3s inside the OpenShell gateway)`. Without this fix, sandbox pods fail DNS resolution against the in-cluster service and the onboard `Setting up OpenClaw inside sandbox` step times out. + +If the L4T version is not recognized, the setup step is skipped and the installer continues normally. + +### DNS resolution from inside docker fails (corporate firewall) + +Some corporate networks block outbound UDP port 53 to public DNS servers and force all host name resolution through DNS over TLS on TCP port 853. Containers do not inherit the host's DNS-over-TLS configuration, so the sandbox build's `npm ci` step times out trying to resolve `registry.npmjs.org` against `1.1.1.1` or `8.8.8.8`. + +NemoClaw's preflight runs a short `docker run --rm busybox nslookup nemoclaw-dns-probe-.invalid` probe before starting the sandbox build. The fresh `.invalid` name should return NXDOMAIN through a working resolver, so cached answers cannot hide blocked DNS egress. When the probe confirms a DNS failure, onboarding stops with platform-specific remediation instead of hanging for ~15 minutes and printing a cryptic `Exit handler never called`. + +The fix depends on your platform and runtime. Pick the matching path from the preflight output, apply it, then re-run `nemoclaw onboard`. + +- **Linux with systemd-resolved.** Add a `DNSStubListenerExtra` drop-in pointing at the docker bridge gateway IP (the preflight prints the detected IP), then add the same IP to `/etc/docker/daemon.json` under `dns`. Restart `systemd-resolved` and `docker`. +- **macOS with Colima.** Restart Colima with the corporate DNS address, for example `colima stop && colima start --dns `. +- **macOS with Docker Desktop.** Add the corporate DNS address to `~/.docker/daemon.json` under `dns`, then restart Docker Desktop. +- **Windows or WSL.** Configure DNS in the Docker Desktop settings GUI, or apply the Linux fix above when running native docker inside WSL. + +Verify the fix worked: + +```console +$ docker run --rm busybox nslookup example.com +``` + +When the lookup returns an answer, retry onboarding. + +### Port already in use + +The NemoClaw dashboard uses port `18789` by default and the gateway uses port `8080`. +If another sandbox already owns the dashboard port, onboarding scans ports `18789` through `18799` and uses the next free port. +If all ports in that range are occupied, the error lists the owner for each port and suggests using `--control-ui-port` with a port outside the range. + +On macOS, the port check also tries a privileged `lsof` probe without prompting for a password so root-owned listeners are detected before the sandbox build starts. +If a port becomes occupied after preflight but before `openshell forward start` runs, onboarding deletes the just-created sandbox and exits with a retry message instead of leaving a sandbox with an unreachable dashboard URL. + +When a previous onboard, upgrade, or sandbox crash leaves a stale `openclaw-gateway` host process holding the dashboard port, `nemoclaw onboard --fresh`, `nemoclaw destroy` (when destroying the last sandbox), and `nemoclaw uninstall` automatically sweep the dashboard port range and signal `SIGTERM` then `SIGKILL` to recover. +The sweep only targets processes owned by the current user whose command line matches `openclaw-gateway` or `openshell forward` markers, and skips dashboard ports owned by other live sandboxes. + +If a non-NemoClaw process is already bound to the dashboard port or the gateway port, identify the conflicting process, verify it is safe to stop, and terminate it: + +```console +$ sudo lsof -i :18789 +$ kill +``` + +If the process does not exit, use `kill -9 ` to force-terminate it. +Then retry onboarding. + +Alternatively, override the conflicting port instead of stopping the other process. +Pass `--control-ui-port` with the desired dashboard port: + +```console +$ nemoclaw onboard --control-ui-port 19000 +``` + +You can also set `CHAT_UI_URL` with the desired port: + +```console +$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard +``` + +Or set the port directly: + +```console +$ NEMOCLAW_DASHBOARD_PORT=19000 nemoclaw onboard +``` + +For an OpenShell gateway port conflict, set `NEMOCLAW_GATEWAY_PORT` to a free +non-privileged port that does not overlap NemoClaw's dashboard, vLLM, Ollama, +or Ollama proxy ports: + +```console +$ NEMOCLAW_GATEWAY_PORT=8990 nemoclaw onboard +``` + +Remote/headless hosts can bind the OpenShell gateway to all IPv4 interfaces: + +```console +$ NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0 NEMOCLAW_GATEWAY_PORT=8990 nemoclaw onboard +``` + +Use `NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0` only when other hosts on the +network should be able to reach the gateway. + +See [Environment Variables](commands.md#environment-variables) for the full list of port overrides. + +### Running multiple sandboxes simultaneously + +Each sandbox requires its own dashboard port. +If you onboard a second sandbox without overriding the port, onboarding uses the next free port in the `18789` to `18799` range. +`onboard` checks `openshell forward list` before starting a new forward, so a second onboard cannot silently take over the first sandbox's port. + +Assign a distinct port only when you want a specific value: + +```console +$ nemoclaw onboard # first sandbox uses default 18789 +$ nemoclaw onboard # second sandbox uses the next free port +$ nemoclaw onboard --control-ui-port 19000 # explicit port override +``` + +Each sandbox then has its own SSH tunnel and its own dashboard URL: + +```text +http://localhost:18789 ← first sandbox +http://localhost:19000 ← second sandbox +``` + +You can verify which tunnel belongs to which sandbox with: + +```console +$ openshell forward list +$ nemoclaw list +``` + +`nemoclaw list` prints the recorded dashboard URL for each sandbox. + +## Onboarding + +### Cgroup v2 errors during onboard + +Older NemoClaw releases relied on a Docker cgroup workaround on Ubuntu 24.04, DGX Spark, and WSL2. +Current OpenShell releases handle that behavior themselves, so NemoClaw no longer requires a Spark-specific setup step. + +If onboarding reports that Docker is missing or unreachable, fix Docker first and retry onboarding: + +```console +$ nemoclaw onboard +``` + +Podman is not a tested runtime. +If onboarding or sandbox lifecycle fails, switch to a tested runtime (Docker Desktop, Colima, or Docker Engine) and rerun onboarding. + +### Cluster fails with `overlayfs snapshotter cannot be enabled` on Docker 26+ + +Docker Engine 26 and later default fresh installations to the [containerd image store](https://docs.docker.com/engine/storage/containerd/), which exposes its layers via the `overlayfs` snapshotter rather than the legacy `overlay2` graph driver. +The k3s server inside the OpenShell cluster image needs to mount its own overlay filesystem on top, and the kernel rejects nesting two non-trivial overlay mounts. +The cluster container then loops with: + +```text +"overlayfs" snapshotter cannot be enabled for "/var/lib/rancher/k3s/agent/containerd", +try using "fuse-overlayfs" or "native": +failed to mount overlay: ... err: invalid argument +``` + +This is a Docker default-driver change, not a NemoClaw or OpenShell regression. +The same hardware running Docker 25 or earlier — or any Docker version with the containerd image store disabled — uses the legacy `overlay2` driver and is unaffected. + +NemoClaw detects the Docker 26+ containerd-snapshotter overlayfs configuration during onboarding and transparently builds a small drop-in replacement for the cluster image on the local Docker engine. +The patched image installs `fuse-overlayfs` and selects it as the k3s snapshotter, bypassing the kernel-level nested-overlay limitation. +No host configuration changes, sudo, or Docker restart required. + +The auto-fix runs once per OpenShell version on the affected host. +Subsequent onboarding runs reuse the cached patched image. +Hosts without the conflict (`Driver: overlay2` in `docker info`, macOS Docker Desktop, or Linux installations that disable the containerd image store) see no change in behavior. + +Override knobs: + +- `NEMOCLAW_DISABLE_OVERLAY_FIX=1` — skip the auto-fix and run against the unmodified upstream cluster image. + Useful for diagnosis or when you have already applied the manual workaround below. +- `NEMOCLAW_OVERLAY_SNAPSHOTTER=native` — build the patched image with k3s's `native` snapshotter instead of `fuse-overlayfs`. + The `native` snapshotter copies image layers instead of overlaying them, so it uses more disk but does not depend on FUSE. + Default is `fuse-overlayfs`. + +If you prefer to disable the new Docker storage driver instead of running the patched image, edit `/etc/docker/daemon.json`: + +```json +{ + "storage-driver": "overlay2", + "features": { "containerd-snapshotter": false } +} +``` + +Then restart Docker (`sudo systemctl restart docker`) and re-run `nemoclaw onboard`. +This restores the legacy `overlay2` driver host-wide, which kills any other running containers — prefer the auto-fix unless you need the change for unrelated reasons. +Switching storage drivers also rebuilds the entire local image graph: previously-pulled images become unusable and Docker re-pulls them on first reference, so expect a cold cache and additional disk usage right after the restart. + +### OpenShell version above maximum + +Each NemoClaw release validates against a range of tested OpenShell versions. +If the installed OpenShell version exceeds the configured maximum, `nemoclaw onboard` exits with an error: + +```text +✗ openshell is above the maximum supported by this NemoClaw release. + blueprint.yaml max_openshell_version: +``` + +Upgrade NemoClaw to a version that supports your OpenShell release, or install a supported OpenShell version from the [OpenShell releases page](https://github.com/NVIDIA/OpenShell/releases). + +For fresh installs, NemoClaw passes the blueprint range to `install-openshell.sh` and resolves a compatible published OpenShell release before downloading. +If GitHub release metadata is unavailable, the script uses its bundled fallback pin and the post-install gate still enforces the configured range. + +### Sandbox containers cannot reach the gateway + +On native Linux Docker-driver hosts, `nemoclaw onboard` verifies the route that sandbox containers use to reach the OpenShell gateway. +If a host firewall blocks that path, onboarding exits with output like: + +```text +✗ Sandbox containers cannot reach the gateway at host.openshell.internal:8080. + A host firewall may be blocking traffic from the OpenShell Docker bridge. +``` + +Apply the `ufw` command printed by onboarding, then rerun onboarding. +If the message does not include a subnet, derive it from the OpenShell Docker network: + +```console +$ SUBNET=$(docker network inspect openshell-docker --format '{{(index .IPAM.Config 0).Subnet}}') +$ sudo ufw allow from "$SUBNET" to any port 8080 proto tcp +$ nemoclaw onboard +``` + +### `connect` exits because the gateway is down + +`nemoclaw connect` checks the OpenShell gateway before it tries dashboard forwarding, SSH, or inference repair. +If the gateway is not reachable, the command exits early and prints recovery guidance. + +Start the gateway or resume onboarding, then retry: + +```console +$ openshell gateway start --name nemoclaw +$ nemoclaw onboard --resume +$ nemoclaw connect +``` + +Run `nemoclaw status` for a broader gateway health report. + +### Invalid sandbox name + +Sandbox names must be lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. +Uppercase letters are automatically lowercased. + +Names that collide with global CLI commands are also rejected. +Reserved names include `onboard`, `list`, `deploy`, `setup`, `start`, `stop`, `status`, `debug`, `uninstall`, `credentials`, and `help`. +Using a reserved name would cause the CLI to route to the global command instead of the sandbox. + +If the name does not match these rules or is reserved, the wizard exits with an error. +Choose a name such as `my-assistant` or `dev1`. + +### Sandbox creation fails on DGX + +On DGX machines, sandbox creation can fail if the gateway's DNS has not finished propagating or if a stale port forward from a previous onboard run is still active. + +Run `nemoclaw onboard` to retry. +The wizard cleans up stale port forwards and waits for gateway readiness automatically. + +### GPU setup fails with a placeholder GPU name + +On Windows or WSL hosts, some systems report a placeholder display adapter name even when no NVIDIA GPU firmware is present. +NVIDIA NIM and GPU-backed sandbox setup require a real NVIDIA GPU. +If NemoClaw rejects the detected GPU name during preflight, select a CPU or remote inference provider, or move the setup to a host with a supported NVIDIA GPU and current drivers. + +Jetson hosts can still run NemoClaw, but sandbox GPU passthrough is not supported there. +If onboarding reports that sandbox GPU passthrough is unavailable on Jetson, rerun onboarding without `--sandbox-gpu`. + +### Colima socket not detected (macOS) + +Newer Colima versions use the XDG base directory (`~/.config/colima/default/docker.sock`) instead of the legacy path (`~/.colima/default/docker.sock`). +Some installations expose a top-level Colima socket at `~/.colima/docker.sock`. +NemoClaw checks all three paths. +If neither is found, verify that Colima is running: + +```console +$ colima status +``` + +### Sandbox build is slow or hangs (under-provisioned container runtime) + +Default Colima ships with 2 vCPU and 2 GiB of memory, which is not enough headroom for the BuildKit-driven sandbox image build. +On macOS Apple Silicon, the build can stall part-way through with no progress and no error, leaving the wizard waiting indefinitely. + +Preflight inspects `docker info` for `NCPU` and `MemTotal` and prints a warning when the runtime falls below 4 vCPU or 8 GiB. +In interactive onboarding, the warning prompt defaults to abort, so pressing Enter stops the run before the sandbox build reaches the likely stall point. +Type `y` only when you intentionally want to continue on the smaller runtime. +Non-interactive onboarding prints the warning and continues. +On Colima, raise the resources before re-running onboard: + +```console +$ colima stop +$ colima start --cpu 6 --memory 12 --disk 100 +``` + +On Docker Desktop, raise CPU and memory limits in *Settings → Resources*, then apply and restart. + +To silence the warning when the host is intentionally small, set `NEMOCLAW_IGNORE_RUNTIME_RESOURCES=1` before running `nemoclaw onboard`. + +### Re-onboard fails because port 18789 is held by SSH + +After destroying a sandbox and gateway, the SSH port-forward process for the +dashboard can be left running. +Re-running onboard then fails preflight with `Port 18789 is not available. +Blocked by: ssh`. + +Current NemoClaw detects this case and kills the orphaned SSH process +automatically before retrying the port check. +If you see the error on an older release, identify the SSH process and +terminate it manually: + +```console +$ sudo lsof -i :18789 +$ kill +``` + +Then re-run `nemoclaw onboard`. + +### Updated messaging token is not picked up + +Re-running `nemoclaw onboard --non-interactive` with a new +`TELEGRAM_BOT_TOKEN`, `DISCORD_BOT_TOKEN`, or `SLACK_BOT_TOKEN` previously +reported success while the sandbox kept polling with the old credential. +Current NemoClaw stores SHA-256 hashes of messaging credentials in the +sandbox registry at creation time and detects when a token has changed. +When rotation is detected, NemoClaw automatically backs up workspace state, +deletes the sandbox, recreates it with the new credential, and restores the +backup. + +If you suspect a sandbox is still using a stale token, re-run onboarding so +the credential check runs: + +```console +$ nemoclaw onboard --non-interactive +``` + +### Sandbox creation killed by OOM (exit 137) + +On systems with 8 GB RAM or less and no swap configured, the sandbox image push can exhaust available memory and get killed by the Linux OOM killer (exit code 137). + +NemoClaw automatically detects low memory during onboarding and prompts to create a 4 GB swap file. +If this automatic step fails or you are using a custom setup flow, create swap manually before running `nemoclaw onboard`: + +```console +$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=none +$ sudo chmod 600 /swapfile +$ sudo mkswap /swapfile +$ sudo swapon /swapfile +$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab +$ nemoclaw onboard +``` + +### Previous onboarding session failed + +If a previous `nemoclaw onboard` attempt fails partway through (for example, a provider or inference-setup step reporting an error), NemoClaw records the failure in `~/.nemoclaw/onboard-session.json`. + +When you re-run the installer, it detects the failed session and does not silently retry it. +Silent retry would loop on the same failure if your original choice, such as an unreachable provider, was the cause. + +- In an interactive terminal, the installer prompts whether to resume the failed session or start fresh. + Press `R` (or Enter) to retry the same session, or `f` to discard it and make fresh choices. +- In non-interactive mode (piped `curl | bash` with `NEMOCLAW_NON_INTERACTIVE=1`, CI, scripts), the installer refuses and exits with a non-zero status so a scripted re-run cannot loop. + You must opt in to one of two paths explicitly: + + Start over with new choices (discards the recorded session and provider/model selection): + + ```console + $ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --fresh + ``` + + Or equivalently, via env var. + The variable must be set on the `bash` side of the pipe, not on `curl`, since only the right-hand process inherits it: + + ```console + $ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_FRESH=1 bash + ``` + + Retry the same session without re-prompting. + This is only useful if the original failure was transient, for example a network blip or a stopped Docker daemon, and not a wrong provider choice: + + ```console + $ nemoclaw onboard --resume + ``` + +As a last resort, you can also delete the session file directly and re-run the installer: + +```console +$ rm ~/.nemoclaw/onboard-session.json +``` + +## Runtime + +### Reconnect after a host reboot + +After a host reboot, the container runtime, OpenShell gateway, and sandbox may not be running. +Follow these steps to reconnect. + +1. Start the container runtime. + + - **Linux:** start Docker if it is not already running (`sudo systemctl start docker`) + - **macOS:** open Docker Desktop or start Colima (`colima start`) + +1. Check sandbox state. + + ```console + $ openshell sandbox list + ``` + + If the sandbox shows `Ready`, skip to step 4. + +1. Restart the gateway (if needed). + + If the sandbox is not listed or the command fails, restart the OpenShell gateway: + + ```console + $ openshell gateway start --name nemoclaw + ``` + + Wait a few seconds, then re-check with `openshell sandbox list`. + +1. Reconnect. + + ```console + $ nemoclaw connect + ``` + + The gateway usually rotates its SSH host keys across a reboot. + `connect` detects the resulting identity drift, prunes the stale `openshell-*` entries from `~/.ssh/known_hosts`, and retries automatically. + You do not need to edit `known_hosts` by hand or re-run `nemoclaw onboard` in this case. + +1. Start host auxiliary services (if needed). + + If you use the cloudflared tunnel started by `nemoclaw tunnel start`, start it again: + + ```console + $ nemoclaw tunnel start + ``` + + OpenShell-managed channel messaging handles Telegram, Discord, Slack, WeChat, and WhatsApp at onboarding, not through a separate bridge process from `nemoclaw tunnel start`. + WeChat and WhatsApp are experimental. + To pause a single bridge without destroying the sandbox, use `nemoclaw channels stop `. + +**If the sandbox does not recover:** + +If the sandbox remains missing after restarting the gateway, run `nemoclaw onboard` to recreate it. +The wizard prompts for confirmation before destroying an existing sandbox. If you confirm, it **destroys and recreates** the sandbox. Workspace files (SOUL.md, USER.md, IDENTITY.md, AGENTS.md, MEMORY.md, and daily memory notes) are lost. +Back up your workspace first by following the instructions at Back Up and Restore (use the `nemoclaw-user-manage-sandboxes` skill). + +### Sandbox is running an outdated agent version + +After upgrading NemoClaw, `nemoclaw connect` and `nemoclaw status` warn if the sandbox is running an older agent version than the current image. + +To upgrade the sandbox while preserving workspace state, run: + +```console +$ nemoclaw rebuild +``` + +The rebuild command backs up state, destroys the old sandbox, recreates it with the current image, and restores state. +Create a snapshot before rebuilding if you want an additional safety net: + +```console +$ nemoclaw snapshot create +$ nemoclaw rebuild +``` + +### Sandbox shows as stopped + +The sandbox may have been stopped or deleted. +Run `nemoclaw onboard` to recreate the sandbox from the same blueprint and policy definitions. + +### Status shows "not running" inside the sandbox + +This is expected behavior. +When checking status inside an active sandbox, host-side sandbox state and inference configuration are not inspectable. +The status command detects the sandbox context and reports "active (inside sandbox)" instead. + +Run `openshell sandbox list` on the host to check the underlying sandbox state. + +### Git clone fails with a certificate verification error + +In networks that inspect TLS, OpenShell injects a proxy CA bundle into the sandbox. +Current NemoClaw exports that bundle as `GIT_SSL_CAINFO` during sandbox startup and persists it for `nemoclaw connect` sessions, so Git can trust the proxy CA. +It also forwards standard CA bundle variables for subprocesses, including `GIT_SSL_CAPATH`, `CURL_CA_BUNDLE`, and `REQUESTS_CA_BUNDLE`. + +If Git still reports `server certificate verification failed`, reconnect to the sandbox and check that the CA variables are present: + +```console +$ env | grep -E 'SSL_CERT_FILE|GIT_SSL_CAINFO|CURL_CA_BUNDLE|REQUESTS_CA_BUNDLE' +``` + +If they are missing on an older sandbox, upgrade NemoClaw and run: + +```console +$ nemoclaw rebuild +``` + +### Sandbox creation reports a TLS certificate mismatch + +If sandbox creation reports a TLS or certificate mismatch, the OpenShell gateway certificate may have changed since the CLI last trusted it. +Refresh the gateway trust and then resume onboarding: + +```console +$ openshell gateway trust -g nemoclaw +$ nemoclaw onboard --resume +``` + +### `openclaw update` hangs or times out inside the sandbox + +This is expected for the current NemoClaw deployment model. +NemoClaw installs `openclaw` into the sandbox image at build time, so the CLI is image-pinned rather than updated in place inside a running sandbox. + +Do not run `openclaw update` inside the sandbox. +Instead: + +1. Upgrade to a NemoClaw release that includes the newer `openclaw` version. +2. If you build NemoClaw from source, bump the pinned `openclaw` version in `Dockerfile.base` and rebuild the sandbox base image. +3. Run `nemoclaw rebuild` to recreate the sandbox with the updated image. The rebuild command automatically backs up workspace state before destroying the old sandbox and restores it afterward. + +### Inference requests time out + +Verify that the inference provider endpoint is reachable from the host. +Check the active provider and endpoint: + +```console +$ nemoclaw status +``` + +For local Ollama and local vLLM, `nemoclaw status` also prints an `Inference` line that probes the host-side health endpoint directly. +If that line shows `unreachable`, start the local backend first and then retry the request. +For Local Ollama, current releases also print `Inference (auth proxy)` when a proxy token is available. +If the backend is healthy but the auth proxy is `unauthorized` or `unreachable`, re-run onboarding so NemoClaw can recreate the proxy token, restart the proxy, and refresh the route. + +If the endpoint is correct but requests still fail, check for network policy rules that may block the connection. +Then verify the credential and base URL for the provider you selected during onboarding. + +If you entered an AWS Bedrock Runtime URL such as `https://bedrock-runtime.us-east-1.amazonaws.com` in the **Other Anthropic-compatible endpoint** flow, NemoClaw auto-detects it and routes sandbox traffic through a host-local adapter. +Use the raw Bedrock Runtime host, not an Anthropic `/v1/messages` path, and verify that the model ID or inference profile ID is valid for that region. +For auth, export `AWS_BEARER_TOKEN_BEDROCK`, `AWS_PROFILE`, or standard IAM environment credentials before onboarding; if you paste a key at the `COMPATIBLE_ANTHROPIC_API_KEY` prompt, NemoClaw uses it only as the adapter's Bedrock bearer token. +Region errors usually mean the pasted endpoint region, `AWS_REGION`, `AWS_DEFAULT_REGION`, or the model/inference profile ID do not match. + +For Ollama, vLLM, NIM, and compatible-endpoint setup, the default timeout is 180 seconds. +If large prompts still cause timeouts, increase it with `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` before re-running onboard: + +```console +$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 +$ nemoclaw onboard +``` + +For local Ollama and vLLM, onboarding retries the container reachability check and can fall back to the host-side health check when the local backend is healthy. +If all attempts fail, the error includes container reachability diagnostics such as HTTP status and host gateway resolution. + +`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` only covers the inference-server validation probe. +The post-create readiness wait has its own budget (`NEMOCLAW_SANDBOX_READY_TIMEOUT`); see [Sandbox onboard times out with "did not become ready within Ns"](#sandbox-onboard-times-out-with-did-not-become-ready-within-ns) for the readiness path. + +### Sandbox onboard times out with "did not become ready within Ns" + +Onboarding ends with: + +```text + Sandbox 'my-assistant' was created but did not become ready within 180s. + The orphaned sandbox has been removed — you can safely retry. +``` + +This is a separate budget from `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` — it covers the readiness wait that follows sandbox creation (in-sandbox boot, OpenClaw start, policy load), not the inference probe. +The 180-second default fits typical workstations but can be exceeded when: + +- The host is building or uploading the sandbox image for the first time (cold caches, slow link). +- The selected model is large (70B+ parameters or 4-bit/8-bit quantisations that take time to memory-map). +- Onboarding runs on a remote VM where image upload to the gateway streams over the network (for example DGX Station first-run installer). + +Raise the budget before re-running onboard: + +```console +$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 +$ nemoclaw onboard +``` + +The variable accepts seconds and applies to the readiness wait only. +When the deadline expires, NemoClaw deletes the partially-created sandbox before printing the retry hint, so the next `nemoclaw onboard` starts from a clean state. +If readiness still fails after the extended budget, inspect the gateway and sandbox status: + +```console +$ openshell sandbox list +$ nemoclaw status +``` + +### Agent fails at runtime after onboarding succeeds with a compatible endpoint + +Some OpenAI-compatible servers (such as SGLang) expose `/v1/responses` but their +streaming mode is incomplete. +OpenClaw requires granular streaming events like `response.output_text.delta` +that these backends do not emit. + +For the compatible-endpoint provider, NemoClaw now defaults to +`/v1/chat/completions` and skips the Responses API probe entirely unless you +opt in. +If you onboarded an older release that selected `/v1/responses`, re-run +onboarding so the wizard rebuilds the image with chat completions: + +```console +$ nemoclaw onboard +``` + +If you previously set `NEMOCLAW_PREFERRED_API=openai-responses` to force the +Responses API, unset it before re-running onboard. + +When you enable Telegram messaging with an OpenAI-compatible endpoint, onboarding also checks `inference.local` from inside the sandbox. +If that smoke check fails, fix the compatible-endpoint base URL, credentials, model, or network route before testing the Telegram bot again. + +Do not rely on `NEMOCLAW_INFERENCE_API_OVERRIDE` alone — it patches the config +at container startup but does not update the Dockerfile ARG baked into the +image. +A fresh `nemoclaw onboard` is the reliable fix. + +### `NEMOCLAW_DISABLE_DEVICE_AUTH=1` does not change an existing sandbox + +This is expected behavior. +`NEMOCLAW_DISABLE_DEVICE_AUTH` is a build-time setting used when NemoClaw creates the sandbox image. +Changing or exporting it later does not rewrite the baked `openclaw.json` inside an existing sandbox. + +If you need a different device-auth setting, rerun onboarding so NemoClaw rebuilds the sandbox image with the desired configuration. +For the security trade-offs, refer to Security Best Practices (use the `nemoclaw-user-configure-security` skill). + +### `openclaw.json` is empty after changing inference + +Some runtime inference changes can leave `/sandbox/.openclaw/openclaw.json` empty if the write fails partway through. +When that happens, OpenClaw commands may report that the config is empty instead of showing a raw JSON parse error. + +Current NemoClaw sandboxes capture a known-good config baseline after a successful startup. +On the next sandbox startup, NemoClaw restores `openclaw.json` from OpenClaw's last-good copy when available, or from the NemoClaw baseline. +If the sandbox still cannot start or reports that no baseline is available, rebuild it from the host: + +```console +$ nemoclaw rebuild +``` + +### `openclaw channels add` or `remove` is blocked inside the sandbox + +This is expected. +The messaging channel list is frozen into the sandbox's container image when the image is built during `nemoclaw onboard` or `nemoclaw rebuild` (the selected channel names are passed to the `docker build` as `NEMOCLAW_MESSAGING_CHANNELS_B64` and written into agent config such as `/sandbox/.openclaw/openclaw.json` for OpenClaw or `/sandbox/.hermes/.env` for Hermes). +Changes made inside the running sandbox do not persist across rebuilds, so `openclaw channels` commands that mutate the config are intercepted. +NemoClaw's sandbox entrypoint installs a guard that intercepts `openclaw channels ` and prints an actionable error pointing at the host-side commands below, instead of letting the call fail deep in the binary with a raw `EACCES` trace. + +Run the equivalent host-side command instead: + +```console +$ nemoclaw channels list +$ nemoclaw channels add +$ nemoclaw channels remove +``` + +`channels add` registers credentials with the OpenShell gateway and `channels remove` clears them. +Both offer to rebuild the sandbox so the image reflects the new channel set. +In non-interactive mode (`NEMOCLAW_NON_INTERACTIVE=1`), the commands stage the change and leave the rebuild to a follow-up `nemoclaw rebuild`. +WeChat and WhatsApp are experimental. +Review Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) before enabling them. + +WeChat captures its bot token through a host-side QR scan during `nemoclaw onboard` or `channels add wechat`. +You scan the iLink QR from WeChat on your phone and NemoClaw registers the captured token with the OpenShell gateway. + +WhatsApp pairs entirely inside the sandbox. +NemoClaw advertises WhatsApp for OpenClaw and Hermes sandboxes after you add the channel on the host. +Run `openclaw channels login --channel whatsapp` inside OpenClaw sandboxes, or run `hermes whatsapp` inside Hermes sandboxes. + +### `scripts/rcf_patch.py` is missing from the blueprint + +`scripts/rcf_patch.py` is intentionally absent from current NemoClaw blueprints. +Older QA plans used that helper for a Dockerfile "Patch-4" test that corrupted the build-time `replaceConfigFile` monkey-patch and expected `ERROR: Patch 4 (replaceConfigFile EACCES) not applied`. +The old Patch-4 fail-closed test no longer applies because NemoClaw no longer patches OpenClaw's compiled `replaceConfigFile` source at image build time. + +Current sandboxes use a mutable-default config model instead. +Before a reviewed host-side lockdown, `/sandbox/.openclaw/openclaw.json` is group-writable by the sandbox and gateway users, so OpenClaw config mutations should write normally rather than requiring an EACCES swallow. +After lockdown, runtime config mutations should fail cleanly or route users to the supported host-side NemoClaw command. + +To validate this area now, use the config lifecycle tests instead of looking for `rcf_patch.py`: + +```console +$ npm run build:cli +$ npm test -- test/repro-2681-group-writable.test.ts +``` + +### `openclaw config set` or `unset` is blocked inside the sandbox + +This is expected. +NemoClaw builds the sandbox's OpenClaw configuration (`/sandbox/.openclaw/openclaw.json`) from host-side onboarding, rebuild, inference, policy, and messaging inputs. +Fresh sandboxes keep that file writable by default so the agent can manage runtime state, but direct in-sandbox edits are not the supported or durable path for NemoClaw-managed settings. +NemoClaw's sandbox entrypoint installs a guard that intercepts `openclaw config set` and `openclaw config unset` and prints an actionable error, because changes made inside the running sandbox do not persist across rebuilds. + +For most configuration changes, exit the sandbox and rerun onboarding: + +```console +$ nemoclaw onboard +``` + +If NemoClaw reports a resumable failed onboarding session, run `nemoclaw onboard --resume` instead. +This rebuilds the sandbox with your updated settings. + +For advanced live edits, use the host-side config command instead of running `openclaw config set` inside the sandbox: + +```console +$ nemoclaw config set --key --value '' --restart +``` + +Host-side `config set` validates any HTTP or HTTPS URLs in the new value, including URLs nested inside JSON objects or arrays. NemoClaw rejects loopback, private, reserved, and internal hosts; DNS names must resolve successfully and must not resolve to private/internal addresses. HTTP URLs are written with the validated IP address pinned to reduce DNS-rebinding risk. Avoid putting credentials in config values; rotate provider credentials with the credential-management commands instead. + +### `openclaw doctor --fix` cannot repair Discord channel config inside the sandbox + +This is expected in NemoClaw-managed sandboxes. +NemoClaw bakes channel entries into `/sandbox/.openclaw/openclaw.json` at image build time. + +As a result, commands that try to rewrite the baked config from inside the sandbox, including `openclaw doctor --fix`, cannot repair Discord, Telegram, or Slack channel entries in place. + +If your Discord channel config is wrong, rerun onboarding so NemoClaw rebuilds the sandbox image with the correct messaging selection. +Do not treat a failed `doctor --fix` run as proof that the Discord gateway path itself is broken. + +If `openclaw doctor` reports that it moved Telegram single-account values under `channels.telegram.accounts.default`, rerun onboarding and rebuild the sandbox rather than trying to patch `openclaw.json` in place. +Current NemoClaw rebuilds bake Telegram in the account-based layout and set Telegram group chats to `groupPolicy: open`, which avoids the empty `groupAllowFrom` warning path for default group-chat access. + +### Discord bot logs in, but the channel still does not work + +Separate the problem into two parts: + +1. Baked config and provider wiring + + Check that onboarding selected Discord and that the sandbox was created with the Discord messaging provider attached. + If Discord was skipped during onboarding, rerun onboarding and select Discord again. + +1. Native Discord gateway path + + Successful login alone does not prove that Discord works end to end. + Discord also needs a working gateway connection to `gateway.discord.gg`. + If logs show errors such as `getaddrinfo EAI_AGAIN gateway.discord.gg`, repeated reconnect loops, or a `400` response while probing the gateway path, the problem is usually in the native gateway/proxy path rather than in the baked config. + +Common signs of a native gateway-path failure: + +- REST calls to `discord.com` succeed, but the Discord channel never becomes healthy +- `gateway.discord.gg` fails with DNS resolution errors +- the WebSocket path returns `400` instead of opening a tunnel +- native command deployment fails even though the bot token itself is valid + +In that case: + +- keep the Discord policy preset applied +- verify the sandbox was created with the Discord provider attached +- inspect gateway logs and blocked requests with `openshell term` +- treat the failure as a native Discord gateway problem, not as a bridge startup problem + +### Discord preset validation behind a proxy + +The built-in Discord policy preset intentionally allows the Node binaries used by the messaging runtime and does not allow `curl`. +As a result, `curl -s https://discord.com` failing, hanging, or printing no output is not proof that the Discord preset is broken. + +Behind the OpenShell proxy, direct DNS-only checks can also be the wrong signal. +For example, `dns.resolve("gateway.discord.gg")` can fail even when HTTPS requests routed through the proxy are healthy. + +Use Node HTTPS as the manual REST probe: + +```console +$ node - <<'NODE' +const https = require("node:https"); + +https + .get("https://discord.com/api/v10/gateway", (res) => { + console.log(`${res.statusCode} ${res.statusMessage || ""}`.trim()); + res.resume(); + }) + .on("error", (err) => { + console.error(err.message); + process.exitCode = 1; + }); +NODE +``` + +To check Discord CDN egress, use the same Node HTTPS path: + +```console +$ node - <<'NODE' +const https = require("node:https"); + +https + .get("https://cdn.discordapp.com/", (res) => { + console.log(`${res.statusCode} ${res.statusMessage || ""}`.trim()); + res.resume(); + }) + .on("error", (err) => { + console.error(err.message); + process.exitCode = 1; + }); +NODE +``` + +Any HTTP status from these probes means the Node process reached the endpoint; the exact status can vary by unauthenticated path. +If the Node REST probe works but the Discord channel is still unhealthy, investigate the native gateway path instead of widening the preset. +Check the gateway logs and blocked-request output with `openshell term`, and look for `gateway.discord.gg` connection or WebSocket upgrade failures. + +### Messaging bridge appears running but no messages arrive + +Bot tokens for Telegram (`getUpdates`), Discord (gateway), and Slack (Socket Mode) only allow one active consumer per token. If two NemoClaw sandboxes are configured with the same bot token, each one kicks the other off its polling connection and neither delivers messages. `nemoclaw status` still reports the bridge as running because the gateway process itself is alive. + +For Telegram group chats, first check BotFather privacy mode. +New Telegram bots default to privacy mode enabled, which prevents group messages from reaching `getUpdates` even when the user mentions the bot. +In @BotFather, run `/setprivacy`, choose the bot, and choose **Disable**. +Then remove the bot from the affected group and add it back; Telegram applies the privacy-mode change to group delivery only after the bot rejoins. + +To diagnose, open a shell in the sandbox and inspect the gateway log: + +```console +$ nemoclaw connect +$ tail -f /tmp/gateway.log +``` + +A repeating line like the following confirms the conflict: + +```text +[telegram] getUpdates conflict: 409: Conflict: terminated by other getUpdates request; retrying in 30s. +``` + +To fix, run `nemoclaw destroy` on whichever sandbox should stop polling, or rerun onboarding on it with the channel disabled. Current NemoClaw warns at `nemoclaw onboard` time when another sandbox already has the same channel enabled, but sandboxes created before that check was added may still be in a conflict loop. + +### Landlock filesystem restrictions silently degraded + +After sandbox creation, NemoClaw checks whether the host kernel supports Landlock (Linux 5.13+). +If the kernel is too old or you are running on macOS (where the Docker VM kernel may lack Landlock), a warning prints: + +```text +⚠ Landlock: Docker VM kernel does not support Landlock (requires ≥5.13). + Sandbox filesystem restrictions will silently degrade (best_effort mode). +``` + +This warning is informational and does not block sandbox creation. +The sandbox runs without kernel-level filesystem restrictions, relying on container mount configuration instead. +For full filesystem enforcement, run on a Linux kernel 5.13 or later (Ubuntu 22.04 LTS and later include Landlock support). + +### Sandbox lost after gateway restart + +Sandboxes created with OpenShell versions older than 0.0.24 can become unreachable after a gateway restart because SSH secrets were not persisted. +Running `nemoclaw onboard` automatically upgrades OpenShell to 0.0.24 or later during the preflight check. +After the upgrade, recreate the sandbox with `nemoclaw onboard`. + +### Agent cannot reach external hosts through a proxy + +NemoClaw uses a default proxy address of `10.200.0.1:3128` (the OpenShell-injected gateway). +If your environment uses a different proxy, set `NEMOCLAW_PROXY_HOST` and `NEMOCLAW_PROXY_PORT` before onboarding: + +```console +$ export NEMOCLAW_PROXY_HOST=proxy.example.com +$ export NEMOCLAW_PROXY_PORT=8080 +$ nemoclaw onboard +``` + +These are build-time settings baked into the sandbox image. +Changing them after onboarding requires re-running `nemoclaw onboard` to rebuild the image. + +When `HTTP_PROXY` or `HTTPS_PROXY` is set on the host, NemoClaw adds `localhost` and `127.0.0.1` to `NO_PROXY` for managed subprocesses. +This keeps local Ollama health checks and model pulls from being routed through a corporate or desktop proxy while preserving the proxy for external hosts. + +### Agent cannot reach a host-side HTTP service + +When a sandbox needs to call an HTTP service running on the host, use the normal OpenShell network policy path. +Expose the service on a host IP address that the OpenShell gateway can reach, create a custom NemoClaw policy preset for that IP and port, and apply it with `nemoclaw policy-add --from-file`. +The sandbox request then flows through the OpenShell proxy while NemoClaw preserves the existing live policy entries. + +Do not rely on `host.docker.internal` or `host.openshell.internal` as a general-purpose host-service path. +Those names may appear in the sandbox's `/etc/hosts`, but in OpenShell's sandbox network they are not guaranteed to point at a reachable host gateway. +Bypassing the proxy with `--noproxy '*'` also bypasses network policy enforcement and audit. + +First, make sure the host-side service listens on a non-loopback address. +For example, a health endpoint on port `50001` should be reachable from the host IP, not only from `127.0.0.1`: + +```console +$ curl -s http://10.0.0.5:50001/health +{"status":"ok"} +``` + +Then create a custom NemoClaw preset for the host-side service. +Replace `10.0.0.5`, `50001`, paths, methods, and binaries with the service you want the sandbox to reach: + +```yaml +preset: + name: host-memory-api + description: "Host memory API" +network_policies: + host_memory_api: + name: host_memory_api + endpoints: + - host: 10.0.0.5 + port: 50001 + protocol: rest + enforcement: enforce + rules: + - allow: { method: GET, path: "/health" } + binaries: + - { path: /usr/bin/curl } +``` + +Apply the preset to the running sandbox with the NemoClaw CLI: + +```console +$ nemoclaw my-assistant policy-add --from-file ./host-memory-api.yaml +``` + +After you apply the policy, retry the request from inside the sandbox without disabling the proxy: + +```console +$ curl -s http://10.0.0.5:50001/health +{"status":"ok"} +``` + +If the request is still denied, check the blocked request in `openshell term`. +The policy `binaries` list must include the executable path that actually made the request. +If the response changes from `policy_denied` to `upstream_unreachable`, the policy matched, but the OpenShell gateway could not reach the host IP and port. + +### Agent cannot reach an external host + +OpenShell blocks outbound connections to hosts not listed in the network policy. +Open the TUI to see blocked requests and approve them: + +```console +$ openshell term +``` + +To permanently allow an endpoint, add it to the network policy. +Refer to Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for details. + +### Dashboard not reachable after setting a custom port + +If you ran `nemoclaw onboard` with a custom dashboard port and onboarding completed +but the dashboard URL is unreachable (browser shows connection refused or the page fails +to load), the sandbox was most likely created with an older NemoClaw version that did not +pass the dashboard port into the sandbox at startup. The gateway inside the sandbox +continued listening on the default port 18789 while the SSH tunnel forwarded the custom +port — leaving nothing at the other end of the tunnel. + +Re-run onboarding on the current NemoClaw release with the desired port. Current versions +derive the dashboard port from `CHAT_UI_URL` automatically and inject it into the sandbox: + +```console +$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard +``` + +If you need to run multiple sandboxes at different ports at the same time, see +[Running multiple sandboxes simultaneously](#running-multiple-sandboxes-simultaneously). + +### Ollama auth proxy did not start + +NemoClaw keeps Ollama bound to `127.0.0.1:11434` and starts a token-gated +reverse proxy on `0.0.0.0:11435` so the sandbox can reach Ollama without +exposing it to the local network. +If the proxy fails to start, onboarding exits before configuring inference. + +Check whether the proxy port is occupied by another process: + +```console +$ sudo lsof -i :11435 +``` + +Stop the conflicting process and re-run `nemoclaw onboard`. +The wizard cleans up stale proxy processes from previous runs automatically, +so most failures resolve by retrying. + +The proxy token is persisted to `~/.nemoclaw/ollama-proxy-token` with `0600` +permissions. +If the file is missing or unreadable after a host reboot, re-running +`nemoclaw onboard` regenerates it. + +### Ollama auth proxy is unreachable from the sandbox + +On native Linux Docker-driver hosts, a host firewall can allow the host proxy check but block sandbox traffic to the Ollama auth proxy. +When that happens, onboarding exits before it saves the inference route and prints output like: + +```text +✗ Sandbox containers cannot reach the Ollama auth proxy at host.openshell.internal:11435. + A host firewall may be blocking traffic from the OpenShell Docker bridge. +``` + +Apply the `ufw` command printed by onboarding, then rerun onboarding. +If the message does not include a subnet, derive it from the OpenShell Docker network: + +```console +$ SUBNET=$(docker network inspect openshell-docker --format '{{(index .IPAM.Config 0).Subnet}}') +$ sudo ufw allow from "$SUBNET" to any port 11435 proto tcp +$ nemoclaw onboard +``` + +Docker Desktop, WSL, and hosts without the OpenShell Docker network use different routing models. +In those cases NemoClaw treats an unavailable sandbox-side probe as non-blocking and relies on the regular proxy health check. + +### `host.docker.internal` does not reliably reach the host from the sandbox + +Configuring an inference provider with a base URL like +`http://host.docker.internal:11434/v1` does not reliably reach a host Ollama +service from inside the OpenShell sandbox. +OpenShell runs sandboxes inside a k3s network, where `host.docker.internal` is +not a portable host-service route. Depending on the platform, it may fail DNS +resolution or resolve to an internal gateway/bridge address where the host's +port `11434` is not forwarded. The sandbox then sees a DNS failure or +`connection refused`: + +```console +$ getent hosts host.docker.internal +172.17.0.1 host.docker.internal host.openshell.internal +$ no_proxy=host.docker.internal curl -v http://host.docker.internal:11434/api/tags +* connect to 172.17.0.1 port 11434 failed: Connection refused +``` + +For local Ollama, use the auth-proxy URL that NemoClaw's "Local Ollama" onboard +option configures automatically: + +```text +http://host.openshell.internal:11435/v1 +``` + +`host.openshell.internal` resolves to the same gateway IP, and the +[token-gated Ollama auth proxy](#ollama-auth-proxy-did-not-start) binds port +`11435` there and forwards requests to `127.0.0.1:11434` on the host. +If you need a different host service exposed to the sandbox, route it through +the OpenShell gateway rather than relying on `host.docker.internal`. +See issue [#3136](https://github.com/NVIDIA/NemoClaw/issues/3136). + +### Local inference health check resolves to IPv6 + +Local inference health checks now use `127.0.0.1` instead of `localhost`. +On systems where `localhost` resolves to `::1` first, older NemoClaw releases +could probe the wrong address and report the local backend as unreachable +even when it was running. +If you see this on a current NemoClaw release, verify that the local backend +binds an IPv4 address and not only `::1`. + +### Blueprint run failed + +View the error output for the failed blueprint run: + +```console +$ nemoclaw logs +``` + +Use `--follow` to stream logs in real time while debugging. + + + +## DGX Spark + +For an end-to-end Ollama walkthrough on DGX Spark, refer to the [NVIDIA Spark playbook](https://build.nvidia.com/spark/nemoclaw). + +### CoreDNS CrashLoop after onboarding + +If CoreDNS in the embedded k3s cluster crashes shortly after setup, it is usually because it resolves against `127.0.0.11`, which does not route inside the gateway container. +Run `fix-coredns.sh` to point CoreDNS at the container gateway IP instead, then recreate the sandbox. + +### `k3s` cannot find a freshly built image + +After building a new sandbox image, `k3s` inside the gateway container sometimes fails to pull it even though the image exists on the host. +Destroy and restart the gateway, then re-run setup. + +```console +$ openshell gateway destroy +$ openshell gateway start +``` + +### GPU passthrough on Spark + +GPU passthrough is not CI-tested on DGX Spark. +It is expected to work when you pass `--gpu` and the NVIDIA Container Toolkit is configured. +Verify the toolkit is configured by running `docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.8.0-base-ubuntu24.04 nvidia-smi` from the host. +If `nvidia-smi` works on the host but onboarding says GPU passthrough was not enabled, install or repair the NVIDIA Container Toolkit, then run `sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker`. +If a reusable gateway was previously started without GPU passthrough, NemoClaw replaces it automatically only when no other registered sandboxes depend on it, or when `--recreate-sandbox` is recreating the only registered sandbox with the same name. +When shared gateway cleanup would be unsafe, follow the targeted destroy or gateway-removal commands printed by onboarding. + +### `unresolvable CDI devices nvidia.com/gpu=all` during gateway start + +Recent NVIDIA Container Toolkit installs configure the Docker daemon for Container Device Interface (CDI) device injection, which OpenShell's `gateway start --gpu` then auto-selects. +If no `nvidia.com/gpu` CDI spec has been generated on the host yet, gateway start fails with `Docker responded with status code 500: CDI device injection failed: unresolvable CDI devices nvidia.com/gpu=all`. +The standard NemoClaw installer detects this gap before onboarding, first tries to enable the NVIDIA CDI refresh systemd units, and falls back to generating the spec directly with `nvidia-ctk`. +If you run `nemoclaw onboard` directly, preflight prints the manual remediation instead. +The native Linux fix is the same on Docker hosts whose `docker info` advertises a non-empty `CDISpecDirs`. +On WSL with Docker Desktop, Docker may advertise CDI directories even though `--device nvidia.com/gpu=all` is not usable from the WSL distro. +For that runtime, NemoClaw skips Linux CDI repair and uses Docker's `--gpus` compatibility path for sandbox GPU access. +This compatibility path can be retired once Docker Desktop exposes usable `nvidia.com/gpu` CDI specs inside WSL, or once OpenShell no longer requires host-visible CDI specs for Docker Desktop WSL GPU passthrough. + +Enable the refresh units, verify they list `nvidia.com/gpu` entries, then rerun onboarding: + +```console +$ sudo systemctl enable --now nvidia-cdi-refresh.path nvidia-cdi-refresh.service +$ nvidia-ctk cdi list +$ nemoclaw onboard +``` + +If the refresh units are unavailable or do not generate CDI devices, generate the spec directly: + +```console +$ sudo mkdir -p /etc/cdi +$ sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml +$ nvidia-ctk cdi list +``` + +On WSL with Docker Desktop, confirm Docker Desktop WSL integration is enabled for your distro and verify Docker GPU access from WSL: + +```console +$ docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark +``` + +If GPU passthrough is not required on this host, rerun onboarding with `--no-gpu` instead. + +### Docker GPU patch failed during sandbox create + +On Linux Docker-driver gateways, NemoClaw may create the sandbox first and then recreate the OpenShell-managed Docker container with NVIDIA GPU flags. +If that compatibility patch fails, onboarding leaves the failed sandbox and diagnostic bundle in place so you can inspect the OpenShell and Docker state. + +**Note:** + +Starting with NemoClaw v0.0.43, the standard installer handles the `/proc//task//comm` permission case during this patch path. +If an older release fails direct GPU proof with that path and `Permission denied`, upgrade NemoClaw and rerun onboarding. + +The output includes a cleanup command such as: + +```console +$ openshell sandbox delete +``` + +Fix the NVIDIA Container Toolkit or CDI configuration reported in the diagnostics, clean up the failed sandbox, then rerun onboarding. +If you do not need GPU access inside the sandbox, rerun with `--no-sandbox-gpu`. +Set `NEMOCLAW_DOCKER_GPU_PATCH=0` only when you need to bypass this compatibility path during troubleshooting. + +### `pip install` fails with a system-packages error + +Recent Ubuntu releases (including DGX Spark's Ubuntu 24.04) mark the system Python install as externally managed, so `pip install` without a virtual environment fails. +Use a venv instead. +Avoid `--break-system-packages` unless you understand the risk, since it can break host tooling. + +```console +$ python3 -m venv ~/.venvs/nemoclaw +$ source ~/.venvs/nemoclaw/bin/activate +$ pip install ... +``` + +### Port 3000 conflict with AI Workbench + +NVIDIA AI Workbench's Traefik proxy binds ports 3000 and 10000. +If you run other services on Spark that expect port 3000, bind them to a different port. + + + +## Windows Subsystem for Linux + +For environment setup steps, see Windows Prerequisites (use the `nemoclaw-user-get-started` skill). + +### `wsl --install --no-distribution` returns Forbidden (403) + +Check your network connectivity. +If you are behind a VPN, try reconnecting or switching to a different network. + +### `wsl -d Ubuntu` says "There is no distribution with the supplied name" + +The Ubuntu package was installed with `--no-launch` but never registered. +Run `ubuntu.exe install --root` from PowerShell to register it, or reinstall without `--no-launch`: + +```console +$ wsl --unregister Ubuntu +$ wsl --install -d Ubuntu +``` + +### `docker info` fails inside WSL + +Confirm that Docker Desktop is running and that WSL integration is enabled for Ubuntu (Settings > Resources > WSL integration). +Then restart WSL: + +```console +$ wsl --shutdown +$ wsl -d Ubuntu +$ docker info +``` + +### Windows-host Ollama is installed but not shown during onboarding + +When NemoClaw runs inside WSL, it checks both the Windows-host Ollama HTTP endpoint and the Windows `ollama.exe` process. +If Ollama is installed but the daemon is not reachable through `host.docker.internal:11434`, the wizard should still offer a start or restart action. + +If the Windows-host option does not appear, confirm that PowerShell interop is enabled in WSL and that Windows can locate Ollama: + +```console +$ powershell.exe -NoProfile -Command "Get-Process ollama -ErrorAction SilentlyContinue" +``` + +If the process is missing, start Ollama from Windows and rerun onboarding. +If the process exists but the endpoint is unreachable, use the restart action when the wizard offers it, or restart Ollama from Windows with `OLLAMA_HOST=0.0.0.0:11434`. + +### Ollama inference fails or hangs in WSL + +Ollama configures context length based on your hardware. +On some GPUs (for example RTX 3500), the default context length is not sufficient for OpenClaw. +Force a larger context length: + +```console +$ pkill -f 'ollama serve' +$ OLLAMA_CONTEXT_LENGTH=16384 ollama serve +``` + +Verify that Ollama inference works: + +```console +$ echo "Hello" | ollama run +``` + +Replace `` with the model you selected during onboarding (for example `qwen3.5:4b`). + +If `ollama serve` fails with `Error: listen tcp 127.0.0.1:11434: bind: address already in use`, check whether Ollama is configured for automatic startup: + +```console +$ sudo systemctl status ollama +``` + +If it is active, stop it first, then start with the custom context length: + +```console +$ sudo systemctl stop ollama +$ OLLAMA_CONTEXT_LENGTH=16384 ollama serve +``` + +For additional troubleshooting, see the Quickstart (use the `nemoclaw-user-get-started` skill) and Windows Setup (use the `nemoclaw-user-get-started` skill) pages. + +## Podman + +Podman is not a tested runtime. +OpenShell officially documents Docker-based runtimes only. +If you encounter issues with Podman, switch to a tested runtime (Docker Engine, Docker Desktop, or Colima) and rerun onboarding. + +## Brev + +For Brev setup instructions, refer to Brev Web UI (use the `nemoclaw-user-deploy-remote` skill). + +### Most OpenClaw skills show as blocked + +After deploying NemoClaw on Brev, the Skills page in the OpenClaw gateway dashboard shows most bundled skills with a `blocked` status. +Only three skills are available by default: `healthcheck`, `skill-creator`, and `weather`. + +Skills are blocked for one of three reasons. + +- The skill requires a macOS-only binary (`memo`, `remindctl`, `grizzly`, and similar) that is not available on the Linux (GCP) instance Brev provisions. +- The skill requires a CLI binary that is not pre-installed in the sandbox image, such as `gh` for the GitHub skill. +- The skill requires API credentials that have not been configured, such as a Notion API key or Discord bot token. + +Skills that require macOS-only binaries cannot be enabled on Brev. +Skills that require additional CLI binaries require a custom sandbox image rebuild. + +For credentials, use the supported host-side setup flow. +Re-run onboarding for inference or Brave Search credentials, or use `nemoclaw channels add ` for messaging channels. +To add a binary to the sandbox image, update the sandbox `Dockerfile.base` to install the required package, then rebuild: + +```console +$ nemoclaw rebuild +``` + +After the rebuild completes, return to the Skills page to confirm the skill status has changed from `blocked` to `ready`. + +### `openclaw config set` fails with a permission error on Brev + +When the sandbox config has been locked from the host, `openclaw.json` is owned by root and mounted read-only inside the sandbox. +Running `openclaw config set` inside the sandbox then returns: + +```text +EACCES: permission denied, open '/sandbox/.openclaw/openclaw.json' +``` + +In the default sandbox state, `openclaw.json` is writable by the sandbox user. +If you see this error, use the host-side config command instead: + +```console +$ nemoclaw config set --key --value '' --restart +``` + +Refer to [Commands](commands.md) for the full list of supported configuration keys. + +### OpenClaw dashboard is unreachable after extended uptime on Brev + +After leaving NemoClaw running for an extended period on Brev, the OpenClaw dashboard may return `ERR_CONNECTION_RESET` or fail to load in the browser. +The agent may still respond on messaging channels such as Telegram or Slack while the dashboard is unreachable. + +**Back up your workspace first:** + +Take a snapshot before running onboard to protect your workspace files. + +```console +$ nemoclaw snapshot create +``` + +Re-run onboarding to restore dashboard connectivity: + +```console +$ nemoclaw onboard +``` + +Depending on current sandbox state, onboarding may prompt before recreating resources. + +### Skill install buttons do not work on Brev + +Clicking **Install** on a skill in the OpenClaw gateway dashboard on Brev shows no response or fails silently. + +Skill installation runs against the sandbox environment. +Installing packages on the Brev host does not make them available inside the sandbox. +To install a skill dependency, add it to the sandbox image and rebuild: + +```console +$ nemoclaw rebuild +``` + +After the rebuild completes, return to the Skills page to confirm the skill is ready. From 16b2533aad15782ff3e1df660f22e325a27c0c89 Mon Sep 17 00:00:00 2001 From: Julie Yaunches Date: Thu, 28 May 2026 15:11:38 -0400 Subject: [PATCH 7/8] Revert "chore: regenerate catalog skills export" This reverts commit 4c3d19a1859b67c4925b8509bc9022f6702eea17. --- skills/catalog-metadata.json | 6 +- .../evals/evals.json | 30 +- .../SKILL.md | 281 ---- .../evals/evals.json | 212 --- .../references/inference-options.md | 140 -- .../references/set-up-sub-agent.md | 118 -- .../references/switch-inference-providers.md | 205 --- .../references/tool-calling-reliability.md | 162 -- .../references/use-local-inference-details.md | 149 -- .../nemoclaw-user-configure-security/SKILL.md | 12 - .../evals/evals.json | 128 -- .../references/best-practices.md | 509 ------ .../references/credential-storage.md | 108 -- .../references/openclaw-controls.md | 119 -- skills/nemoclaw-user-deploy-remote/SKILL.md | 173 -- .../evals/evals.json | 170 -- .../references/brev-web-ui.md | 153 -- .../references/install-openclaw-plugins.md | 91 -- .../references/sandbox-hardening.md | 125 -- .../evals/evals.json | 120 +- skills/nemoclaw-user-manage-policy/SKILL.md | 292 ---- .../evals/evals.json | 128 -- .../references/approve-network-requests.md | 62 - .../customize-network-policy-details.md | 11 - .../references/integration-policy-examples.md | 334 ---- .../nemoclaw-user-manage-sandboxes/SKILL.md | 262 --- .../evals/evals.json | 212 --- .../references/backup-restore.md | 164 -- .../references/lifecycle-details.md | 24 - .../references/messaging-channels.md | 279 ---- .../references/runtime-controls.md | 39 - .../references/workspace-files.md | 103 -- skills/nemoclaw-user-monitor-sandbox/SKILL.md | 89 -- .../evals/evals.json | 44 - skills/nemoclaw-user-overview/SKILL.md | 13 - .../nemoclaw-user-overview/evals/evals.json | 212 --- .../references/ecosystem.md | 92 -- .../references/how-it-works.md | 102 -- .../nemoclaw-highlevel-component-diagram.png | Bin 880587 -> 0 bytes .../references/overview.md | 61 - .../references/release-notes.md | 242 --- skills/nemoclaw-user-reference/SKILL.md | 14 - .../nemoclaw-user-reference/evals/evals.json | 212 --- .../references/architecture.md | 258 --- .../references/cli-selection-guide.md | 203 --- .../references/commands.md | 1379 ---------------- .../references/network-policies.md | 123 -- .../references/troubleshooting.md | 1419 ----------------- 48 files changed, 18 insertions(+), 9366 deletions(-) delete mode 100644 skills/nemoclaw-user-configure-inference/SKILL.md delete mode 100644 skills/nemoclaw-user-configure-inference/evals/evals.json delete mode 100644 skills/nemoclaw-user-configure-inference/references/inference-options.md delete mode 100644 skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md delete mode 100644 skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md delete mode 100644 skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md delete mode 100644 skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md delete mode 100644 skills/nemoclaw-user-configure-security/SKILL.md delete mode 100644 skills/nemoclaw-user-configure-security/evals/evals.json delete mode 100644 skills/nemoclaw-user-configure-security/references/best-practices.md delete mode 100644 skills/nemoclaw-user-configure-security/references/credential-storage.md delete mode 100644 skills/nemoclaw-user-configure-security/references/openclaw-controls.md delete mode 100644 skills/nemoclaw-user-deploy-remote/SKILL.md delete mode 100644 skills/nemoclaw-user-deploy-remote/evals/evals.json delete mode 100644 skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md delete mode 100644 skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md delete mode 100644 skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md delete mode 100644 skills/nemoclaw-user-manage-policy/SKILL.md delete mode 100644 skills/nemoclaw-user-manage-policy/evals/evals.json delete mode 100644 skills/nemoclaw-user-manage-policy/references/approve-network-requests.md delete mode 100644 skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md delete mode 100644 skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/SKILL.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/evals/evals.json delete mode 100644 skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md delete mode 100644 skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md delete mode 100644 skills/nemoclaw-user-monitor-sandbox/SKILL.md delete mode 100644 skills/nemoclaw-user-monitor-sandbox/evals/evals.json delete mode 100644 skills/nemoclaw-user-overview/SKILL.md delete mode 100644 skills/nemoclaw-user-overview/evals/evals.json delete mode 100644 skills/nemoclaw-user-overview/references/ecosystem.md delete mode 100644 skills/nemoclaw-user-overview/references/how-it-works.md delete mode 100644 skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png delete mode 100644 skills/nemoclaw-user-overview/references/overview.md delete mode 100644 skills/nemoclaw-user-overview/references/release-notes.md delete mode 100644 skills/nemoclaw-user-reference/SKILL.md delete mode 100644 skills/nemoclaw-user-reference/evals/evals.json delete mode 100644 skills/nemoclaw-user-reference/references/architecture.md delete mode 100644 skills/nemoclaw-user-reference/references/cli-selection-guide.md delete mode 100644 skills/nemoclaw-user-reference/references/commands.md delete mode 100644 skills/nemoclaw-user-reference/references/network-policies.md delete mode 100644 skills/nemoclaw-user-reference/references/troubleshooting.md diff --git a/skills/catalog-metadata.json b/skills/catalog-metadata.json index 5ece7367655..e3fdd6b58d3 100644 --- a/skills/catalog-metadata.json +++ b/skills/catalog-metadata.json @@ -1,5 +1,5 @@ { - "exportContentSha256": "8ae01b8a0a5d6b0db85c94517331524be577bc79dfd0a95674c78cc45bad97f6", + "exportContentSha256": "9b48c35ea9a9c79fd1c8bfc6503da54cd5aab5b14fefde400feed023cb6309b1", "generatedBy": "scripts/export-catalog-skills.py", "metadata": { "minNemoClawVersion": "0.1.0", @@ -19,6 +19,6 @@ "nemoclaw-user-reference" ], "source": ".agents/skills", - "sourceCommit": "78394db5c5308f3741032ca53c8a0fb215376244", - "sourceContentSha256": "7c608d871da3af3abd3a6853a25cd2339045de11163eae90d74e6bba17e4dacf" + "sourceCommit": "3f4ec9de1be3f24c08fd4de37adf465d7927b871", + "sourceContentSha256": "2b762b00d861677b434a673f72d013f1183d4a42adfd6a0563406f820e6383b3" } diff --git a/skills/nemoclaw-user-agent-skills/evals/evals.json b/skills/nemoclaw-user-agent-skills/evals/evals.json index 5cb9c25f141..6109419721d 100644 --- a/skills/nemoclaw-user-agent-skills/evals/evals.json +++ b/skills/nemoclaw-user-agent-skills/evals/evals.json @@ -3,42 +3,18 @@ "id": "docs-resources-agent-skills-001", "question": "I'm looking at NemoClaw agent skills. Help me find a skill that can guide installation, policy, inference, or operations so I can delegate the right workflow to my AI coding assistant.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant.", - "expected_behavior": [ - "The output directly addresses the user's situation: looking at NemoClaw agent skills.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user find a skill that can guide installation, policy, inference, or operations with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to delegate the right workflow to the AI coding assistant.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user find a skill that can guide installation, policy, inference, or operations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to delegate the right workflow to my AI coding assistant." }, { "id": "docs-resources-agent-skills-002", "question": "I'm choosing among multiple NemoClaw skills. Help me understand what each skill is designed to do so I can avoid using a broad assistant when a targeted skill exists.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing among multiple NemoClaw skills.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user understand what each skill is designed to do with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid using a broad assistant when a targeted skill exists.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand what each skill is designed to do and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid using a broad assistant when a targeted skill exists." }, { "id": "docs-resources-agent-skills-003", "question": "I'm letting an agent follow NemoClaw-specific instructions. Help me see why the skill guidance is trustworthy and scoped so I can use agent assistance without losing operational control.", "expected_skill": "nemoclaw-user-agent-skills", - "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control.", - "expected_behavior": [ - "The output directly addresses the user's situation: letting an agent follow NemoClaw-specific instructions.", - "The AI coding assistant loads the expected_skill and references/agent-skills.md", - "The output helps the user see why the skill guidance is trustworthy and scoped with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to use agent assistance without losing operational control.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/agent-skills.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user see why the skill guidance is trustworthy and scoped and gives enough concrete guidance, decision criteria, verification steps, or risk framing to use agent assistance without losing operational control." } ] diff --git a/skills/nemoclaw-user-configure-inference/SKILL.md b/skills/nemoclaw-user-configure-inference/SKILL.md deleted file mode 100644 index 8237a5860fd..00000000000 --- a/skills/nemoclaw-user-configure-inference/SKILL.md +++ /dev/null @@ -1,281 +0,0 @@ ---- -name: "nemoclaw-user-configure-inference" -description: "Connects NemoClaw to a local inference server. Use when setting up Ollama, vLLM, TensorRT-LLM, NIM, or any OpenAI-compatible local model server with NemoClaw. Trigger keywords - nemoclaw local inference, ollama nemoclaw, vllm nemoclaw, local model server, openai compatible endpoint, switch nemoclaw inference model, change inference runtime, nemoclaw additional model, nemoclaw sub-agent model, openclaw sub-agent, agents.list, sessions_spawn, vlm-demo, nemoclaw tool calling, ollama tool calls, vllm tool-call-parser, raw json in tui, nemoclaw inference options, nemoclaw onboarding providers, nemoclaw inference routing." -license: "Apache-2.0" ---- -# Use a Local Inference Server - -## Gotchas - -- Ollama is convenient for local chat, but some model/template combinations can return tool calls as plain text under realistic agent load. - -## Prerequisites - -- NemoClaw installed. -- A local model server running, or a supported Ollama, vLLM, or NIM setup that the NemoClaw onboard wizard can use, start, or install. - -NemoClaw can route inference to a model server running on your machine instead of a cloud API. -This page covers Ollama, compatible-endpoint paths for other servers, and experimental managed options for vLLM and NVIDIA NIM. - -All approaches use the same `inference.local` routing model. -The agent inside the sandbox never connects to your model server directly. -OpenShell intercepts inference traffic and forwards it to the local endpoint you configure. - -## Ollama - -Ollama is the default local inference option. -The onboard wizard detects Ollama automatically when it is installed or running on the host. - -If Ollama is installed but not running, NemoClaw starts it for you. -On macOS and Linux, the wizard can also offer to install Ollama when it is not present. -When the host Ollama is below the minimum version NemoClaw expects for its starter models (currently `0.7.0`), the wizard surfaces an explicit **Upgrade Ollama** entry in the provider menu instead of silently reusing the older daemon, and the express setup path resolves to that entry. -The wizard inspects both the CLI binary (`ollama --version`) and the locally running daemon (`/api/version` on `:11434`) so the upgrade entry still appears when only one side is stale, for example a fresh user-local binary paired with the original system daemon. -The gate skips Windows-host Ollama reached from WSL via `host.docker.internal`; the separate **Use / Start / Install Ollama on Windows host** entries handle that case and run their own actions on the Windows side. -On macOS, the wizard runs the platform install or upgrade path with `brew upgrade ollama`. -On Linux, the wizard runs the official `https://ollama.com/install.sh` path. -Upgrades on Linux always take the sudo-driven system path because the sudo-free user-local fallback would leave the existing system daemon on `:11434` serving the stale binary. -If sudo is not available in a non-interactive run, NemoClaw refuses to silently downgrade the path and asks you to rerun interactively or upgrade Ollama manually. -After an upgrade finishes, NemoClaw re-probes the running daemon's `/api/version` and fails the run if the daemon still reports below the minimum. -Fresh installs skip this re-probe because the bundled installers ship a daemon at or above the minimum. -On WSL, the wizard can use, start, restart, or install Ollama on the Windows host through PowerShell interop. - -### Linux Install Modes - -On native Linux, the install path picks between a system install (under `/usr/local`, via the official `https://ollama.com/install.sh`) and a sudo-free user-local install (under `${HOME}/.local`). -NemoClaw selects the mode automatically: - -- Running as root or with passwordless sudo (`sudo -n true` returns 0) selects the system install. -- A non-interactive run (`NEMOCLAW_NON_INTERACTIVE=1` or no TTY on stdin) without passwordless sudo selects the user-local install. - This is the path that lets headless hosts complete onboarding without prompting for a sudo password. -- An interactive shell without passwordless sudo selects the system install and lets the official installer prompt for the password as usual. - -Override the detection with `NEMOCLAW_OLLAMA_INSTALL_MODE=system` or `NEMOCLAW_OLLAMA_INSTALL_MODE=user`. - -The user-local install replicates only the binary extraction step of the official installer. -It downloads the release tarball, extracts it to `${HOME}/.local`, and launches `${HOME}/.local/bin/ollama serve` once. -It does not configure a systemd service, does not create the `ollama` system user, and does not install CUDA drivers, so the daemon must be relaunched manually after a reboot. -NemoClaw also prints a one-line `PATH` hint if `${HOME}/.local/bin` is not already on your `PATH`; you can add `export PATH="${HOME}/.local/bin:$PATH"` to your shell profile to invoke `ollama` directly. - -Both modes rely on `zstd` for archive extraction. On Debian and Ubuntu, the system path uses `sudo apt-get` to install `zstd` automatically and explains the prompt before continuing. -The user-local path cannot bootstrap system packages without elevation, so if `zstd` is missing it prints per-distro install hints and exits — install `zstd` manually, then rerun onboarding. - -Run the onboard wizard. - -```console -$ nemoclaw onboard -``` - -Select **Local Ollama** from the provider list. -NemoClaw lists installed models or offers starter models if none are installed. -On hosts where the larger starter models fit the currently available GPU memory, the starter list includes `qwen3.6:35b` and selects it by default. -When another GPU workload is using most of the memory at onboard time, NemoClaw downgrades the menu to the largest model that still fits. -It pulls the selected model, loads it into memory, and validates it before continuing. -When Ollama reports a loaded-model context length, NemoClaw uses that value for the `contextWindow` baked into `openclaw.json` unless you set `NEMOCLAW_CONTEXT_WINDOW` yourself. -If the selected model declares that it does not support tool calling, onboarding stops with guidance to choose a model whose `ollama show ` capabilities include `tools`. -The validation also requires structured chat-completions tool calls. -If the model leaks tool-call JSON as plain message text, onboarding stops so you can choose a model that returns tool calls in the expected response field. -On WSL, if you choose the Windows-host Ollama path, NemoClaw uses `host.docker.internal:11434` and pulls missing models through the Ollama HTTP API instead of requiring the `ollama` CLI inside WSL. - -### WSL with Windows-Host Ollama - -When NemoClaw runs inside WSL, the provider menu can include Windows-host Ollama actions: - -- Use Ollama on Windows host when the Windows daemon is already reachable. -- Restart Ollama on Windows host when the daemon is installed but only bound to Windows loopback. -- Start Ollama on Windows host when Ollama is installed but not running. -- Install Ollama on Windows host when Windows does not have Ollama installed. - -The install and restart paths set `OLLAMA_HOST=0.0.0.0:11434` on the Windows side so Docker and WSL can reach the daemon through `host.docker.internal`. -After an install or restart action, NemoClaw relaunches Ollama from the detected Windows tray app or verified `ollama.exe` path and waits until `host.docker.internal:11434` responds. - -If the HTTP endpoint is not reachable yet, NemoClaw also checks for the Windows `ollama.exe` process through PowerShell interop so it can offer a start or restart action instead of hiding the Windows-host path. -If the daemon does not become reachable, onboarding prints PowerShell commands you can run to inspect the Windows-side process and port state. Use one Ollama instance on port `11434` at a time. -If both WSL and Windows-host Ollama are running, pick the intended menu entry during onboarding so NemoClaw validates and pulls models against the right daemon. - -**Warning:** - -Ollama is convenient for local chat, but some model/template combinations can -return tool calls as plain text under realistic agent load. If the TUI shows raw -JSON such as `{"name":"memory_search","arguments":{...}}` instead of running a -tool, switch to vLLM with `--enable-auto-tool-choice` and the correct -`--tool-call-parser`. See [Tool-Calling Reliability](references/tool-calling-reliability.md). - -### Authenticated Reverse Proxy - -On non-WSL hosts, NemoClaw keeps Ollama bound to `127.0.0.1:11434` and starts a token-gated reverse proxy on `0.0.0.0:11435`. -The native install/start paths also reset NemoClaw-managed systemd launches to the loopback binding. -Containers and other hosts on the local network reach Ollama only through the -proxy, which validates a Bearer token before forwarding requests. -On that native path, NemoClaw never exposes Ollama without authentication. - -WSL Ollama paths do not use this proxy. -Windows-host Ollama uses the Windows daemon through `host.docker.internal`. - -For non-WSL Ollama setups, the onboard wizard manages the proxy automatically: - -- Generates a random 24-byte token on first run and stores it in - `~/.nemoclaw/ollama-proxy-token` with `0600` permissions. -- Starts the proxy after Ollama and verifies it before continuing. -- Cleans up stale proxy processes from previous runs. -- Probes the sandbox Docker network path to the proxy before committing the inference route. -- Stops matching proxy processes during uninstall before deleting NemoClaw state. -- Reuses the persisted token after a host reboot so you do not need to re-run - onboard. - -On native Linux hosts, a firewall can allow the host proxy health check while still blocking sandbox containers on the OpenShell Docker bridge. -When the sandbox-side proxy probe fails with a TCP error, onboarding exits before it saves the inference route and prints a command like: - -```console -$ sudo ufw allow from to any port 11435 proto tcp -$ nemoclaw onboard -``` - -If the probe cannot run, for example because Docker Desktop or WSL uses a different host routing model, onboarding continues and relies on the regular proxy health check. - -The sandbox provider is configured to use proxy port `11435` with the generated -token as its `OPENAI_API_KEY` credential. -OpenShell's L7 proxy injects the token at egress, so the agent inside the -sandbox never sees the token directly. - -All proxy endpoints require the Bearer token, including `GET /api/tags`. -Internal health and reachability checks run via the proxy treat any HTTP -response (including `401`) as proof the proxy is alive — they only fail -when nothing answers at all. - -If Ollama is already running on a non-loopback address when you start onboard, -the wizard restarts it on `127.0.0.1:11434` so the proxy is the only network -path to the model server. - -### GPU Memory Cleanup - -When you switch away from Ollama, stop host services, or destroy an Ollama-backed sandbox, NemoClaw asks Ollama to unload currently loaded models from GPU memory. -The cleanup sends `keep_alive: 0` for each model reported by Ollama and runs on a best-effort basis, so shutdown continues if Ollama is already stopped. -This does not delete downloaded model files. - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup. - -## OpenAI-Compatible Server - -This option works with any server that implements `/v1/chat/completions`, including vLLM, TensorRT-LLM, llama.cpp, LocalAI, and others. -For compatible endpoints, NemoClaw uses `/v1/chat/completions` by default. -This avoids a class of failures where local backends accept `/v1/responses` requests but silently drop the system prompt and tool definitions. -To opt in to `/v1/responses`, set `NEMOCLAW_PREFERRED_API=openai-responses` before running onboard. - -Start your model server. -The examples below use vLLM, but any OpenAI-compatible server works. - -```console -$ vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000 -``` - -Run the onboard wizard. - -```console -$ nemoclaw onboard -``` - -When the wizard asks you to choose an inference provider, select **Other OpenAI-compatible endpoint**. -Enter the base URL of your local server, for example `http://localhost:8000/v1`. - -The wizard prompts for an API key. -If your server does not require authentication, enter any non-empty string (for example, `dummy`). - -NemoClaw validates the endpoint by sending a test inference request before continuing. -The wizard probes `/v1/chat/completions` by default for the compatible-endpoint provider. -If you set `NEMOCLAW_PREFERRED_API=openai-responses`, NemoClaw probes `/v1/responses` instead and only selects it when the response includes the streaming events OpenClaw requires. -If a reasoning model returns only reasoning content before producing a final answer, NemoClaw retries the smoke request with a larger response budget. -Route, configuration, and authentication failures still fail immediately. - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup, Selecting the API Path. - -## Anthropic-Compatible Server - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. - -## vLLM - -When vLLM is already running on `localhost:8000`, NemoClaw can detect it automatically and query the `/v1/models` endpoint to determine the loaded model. -On supported Linux hosts with NVIDIA GPUs, the onboard wizard can also install or start a managed vLLM container for you. - -For an already-running vLLM server, run `nemoclaw onboard` and select **Local vLLM [experimental]** from the provider list. - -```console -$ nemoclaw onboard -``` - -If vLLM is already running, NemoClaw detects the running model and validates the endpoint. -If vLLM is not running and your host matches a DGX Spark or DGX Station managed profile, NemoClaw shows the **Install vLLM** or **Start vLLM** entry by default. -Generic Linux NVIDIA GPU hosts still require `NEMOCLAW_EXPERIMENTAL=1` or `NEMOCLAW_PROVIDER=install-vllm` before the managed entry appears. -NemoClaw pulls the vLLM image, downloads model weights into `~/.cache/huggingface`, starts the `nemoclaw-vllm` container on `localhost:8000`, and prints progress markers while the model loads. -The first run can take 10 to 30 minutes. -Later runs reuse the cached image and model weights. - -Managed vLLM uses these profiles: - -| Host profile | Default model | -|---|---| -| DGX Spark | `Qwen/Qwen3.6-27B-FP8` | -| DGX Station | `Qwen/Qwen3.6-27B-FP8` | -| Linux with an NVIDIA GPU | `nvidia/NVIDIA-Nemotron-3-Nano-4B-FP8` | - -**Note:** - -NemoClaw forces the `chat/completions` API path for vLLM. -The vLLM `/v1/responses` endpoint does not run the `--tool-call-parser`, so tool calls arrive as raw text. - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup, Override the Managed-vLLM Model. - -## NVIDIA NIM (Experimental) - -NemoClaw can pull, start, and manage a NIM container on hosts with a NIM-capable NVIDIA GPU. - -Set the experimental flag and run onboard. - -```console -$ NEMOCLAW_EXPERIMENTAL=1 nemoclaw onboard -``` - -Select **Local NVIDIA NIM [experimental]** from the provider list. -NemoClaw filters available models by GPU VRAM, pulls the NIM container image, starts it, and waits for it to become healthy before continuing. -On hosts with mixed NVIDIA GPU models, the preflight summary shows each detected GPU model and the total VRAM so you can confirm which device class the model selection used. - -NIM container images are hosted on `nvcr.io` and require NGC registry authentication before `docker pull` succeeds. -If Docker is not already logged in to `nvcr.io`, onboard prompts for an [NGC API key](https://org.ngc.nvidia.com/setup/api-key) and runs `docker login nvcr.io` over `--password-stdin` so the key is never written to disk or shell history. -The prompt masks the key during input and retries once on a bad key before failing. -In non-interactive mode, onboard exits with login instructions if Docker is not already authenticated; run `docker login nvcr.io` yourself, then re-run `nemoclaw onboard --non-interactive`. -If `NGC_API_KEY` or `NVIDIA_API_KEY` is already exported, NemoClaw passes it into the managed NIM container through the process environment instead of command-line arguments. -If the NIM container exits before the health endpoint becomes ready, onboarding stops early and prints the last container log lines. - -**Note:** - -NIM uses vLLM internally. -The same `chat/completions` API path restriction applies. - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps on Non-Interactive Setup. - -## Timeout Configuration - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. - -## Verify the Configuration - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. - -## Switch Models at Runtime - -Load [references/use-local-inference-details.md](references/use-local-inference-details.md) for detailed steps. - -## References - -- **Load [references/switch-inference-providers.md](references/switch-inference-providers.md)** when switching inference providers, changing the model runtime, or reconfiguring inference routing. Changes the active inference model without restarting the sandbox. -- **Load [references/set-up-sub-agent.md](references/set-up-sub-agent.md)** when users ask how to add a second model, configure a sub-agent model, use Omni for vision tasks, configure agents.list, or use sessions_spawn in NemoClaw. Shows the NemoClaw-specific file paths and update flow for adding an auxiliary OpenClaw sub-agent model. -- **[references/tool-calling-reliability.md](references/tool-calling-reliability.md)** — Explains Ollama tool-call leak symptoms, when vLLM with a tool-call parser is recommended, and how to repoint NemoClaw to a parser-aware local endpoint. -- **Load [references/inference-options.md](references/inference-options.md)** when explaining which providers are available, what the onboard wizard presents, or how inference routing works. Lists all inference providers offered during NemoClaw onboarding. -- **Load [references/use-local-inference-details.md](references/use-local-inference-details.md)** when you need detailed steps for Non-Interactive Setup, Selecting the API Path, Anthropic-Compatible Server, and related details. - -## Related Skills - -- [Inference Options](references/inference-options.md) for the full list of providers available during onboarding. -- [Tool-Calling Reliability](references/tool-calling-reliability.md) for diagnosing raw JSON tool-call output with local models. -- [Switch Inference Models](references/switch-inference-providers.md) for runtime model switching. -- `nemoclaw-user-get-started` — Quickstart (use the `nemoclaw-user-get-started` skill) for first-time installation diff --git a/skills/nemoclaw-user-configure-inference/evals/evals.json b/skills/nemoclaw-user-configure-inference/evals/evals.json deleted file mode 100644 index f041d18a7bd..00000000000 --- a/skills/nemoclaw-user-configure-inference/evals/evals.json +++ /dev/null @@ -1,212 +0,0 @@ -[ - { - "id": "docs-inference-inference-options-001", - "question": "I'm choosing an inference option during onboarding. Help me compare hosted providers, local servers, and compatible endpoints so I can select a model path that fits my privacy, cost, and reliability needs.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user compare hosted providers, local servers, and compatible endpoints and gives enough concrete guidance, decision criteria, verification steps, or risk framing to select a model path that fits my privacy, cost, and reliability needs.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing an inference option during onboarding.", - "The AI coding assistant loads the expected_skill and references/inference-options.md", - "The output helps the user compare hosted providers, local servers, and compatible endpoints with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to select a model path that fits my privacy, cost, and reliability needs.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." - ] - }, - { - "id": "docs-inference-inference-options-002", - "question": "I'm preparing provider credentials. Help me know which provider capabilities and secrets onboarding requires so I can complete setup without avoidable credential errors.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user know which provider capabilities and secrets onboarding requires and gives enough concrete guidance, decision criteria, verification steps, or risk framing to complete setup without avoidable credential errors.", - "expected_behavior": [ - "The output directly addresses the user's situation: preparing provider credentials.", - "The AI coding assistant loads the expected_skill and references/inference-options.md", - "The output helps the user know which provider capabilities and secrets onboarding requires with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to complete setup without avoidable credential errors.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." - ] - }, - { - "id": "docs-inference-inference-options-003", - "question": "I'm evaluating routed inference. Help me understand how the sandbox calls models through the gateway so I can trust that model credentials stay outside the sandbox.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand how the sandbox calls models through the gateway and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust that model credentials stay outside the sandbox.", - "expected_behavior": [ - "The output directly addresses the user's situation: evaluating routed inference.", - "The AI coding assistant loads the expected_skill and references/inference-options.md", - "The output helps the user understand how the sandbox calls models through the gateway with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust that model credentials stay outside the sandbox.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/inference-options.md file." - ] - }, - { - "id": "docs-inference-use-local-inference-001", - "question": "I'm connecting a local inference server. Help me route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint so I can meet privacy, latency, or cost goals.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to meet privacy, latency, or cost goals.", - "expected_behavior": [ - "The output directly addresses the user's situation: connecting a local inference server.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user route NemoClaw model traffic to Ollama, vLLM, TensorRT-LLM, NIM, or another compatible endpoint with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to meet privacy, latency, or cost goals.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-inference-use-local-inference-002", - "question": "I'm debugging local endpoint reachability. Help me separate NemoClaw routing issues from model-server issues so I can fix the right component first.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user separate NemoClaw routing issues from model-server issues and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix the right component first.", - "expected_behavior": [ - "The output directly addresses the user's situation: debugging local endpoint reachability.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user separate NemoClaw routing issues from model-server issues with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix the right component first.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-inference-use-local-inference-003", - "question": "I'm configuring traffic through `inference.local`. Help me understand the required host, port, and model settings so I can make sandboxed inference calls resolve to my local server.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the required host, port, and model settings and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make sandboxed inference calls resolve to my local server.", - "expected_behavior": [ - "The output directly addresses the user's situation: configuring traffic through `inference.local`.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand the required host, port, and model settings with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make sandboxed inference calls resolve to my local server.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-inference-switch-inference-providers-001", - "question": "I'm switching inference models during a running session. Help me change model behavior without restarting the sandbox so I can adapt to task, cost, or reliability needs quickly.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user change model behavior without restarting the sandbox and gives enough concrete guidance, decision criteria, verification steps, or risk framing to adapt to task, cost, or reliability needs quickly.", - "expected_behavior": [ - "The output directly addresses the user's situation: switching inference models during a running session.", - "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", - "The output helps the user change model behavior without restarting the sandbox with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to adapt to task, cost, or reliability needs quickly.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." - ] - }, - { - "id": "docs-inference-switch-inference-providers-002", - "question": "I'm confirming a runtime model change. Help me verify the agent is using the new active model so I can avoid mistaking host configuration changes for live routing changes.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user verify the agent is using the new active model and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid mistaking host configuration changes for live routing changes.", - "expected_behavior": [ - "The output directly addresses the user's situation: confirming a runtime model change.", - "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", - "The output helps the user verify the agent is using the new active model with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid mistaking host configuration changes for live routing changes.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." - ] - }, - { - "id": "docs-inference-switch-inference-providers-003", - "question": "I'm trying a different model during active work. Help me know how to roll back to the previous model so I can experiment without disrupting the assistant workflow.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user know how to roll back to the previous model and gives enough concrete guidance, decision criteria, verification steps, or risk framing to experiment without disrupting the assistant workflow.", - "expected_behavior": [ - "The output directly addresses the user's situation: trying a different model during active work.", - "The AI coding assistant loads the expected_skill and references/switch-inference-providers.md", - "The output helps the user know how to roll back to the previous model with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to experiment without disrupting the assistant workflow.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/switch-inference-providers.md file." - ] - }, - { - "id": "docs-inference-set-up-sub-agent-001", - "question": "I'm configuring a task-specific sub-agent. Help me assign a specialized model to work the default agent should not handle so I can improve task fit without changing the whole assistant.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user assign a specialized model to work the default agent should not handle and gives enough concrete guidance, decision criteria, verification steps, or risk framing to improve task fit without changing the whole assistant.", - "expected_behavior": [ - "The output directly addresses the user's situation: configuring a task-specific sub-agent.", - "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", - "The output helps the user assign a specialized model to work the default agent should not handle with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to improve task fit without changing the whole assistant.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." - ] - }, - { - "id": "docs-inference-set-up-sub-agent-002", - "question": "I'm editing sub-agent model configuration. Help me understand where files, credentials, and workspace settings live so I can avoid leaking secrets or changing the wrong agent.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand where files, credentials, and workspace settings live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid leaking secrets or changing the wrong agent.", - "expected_behavior": [ - "The output directly addresses the user's situation: editing sub-agent model configuration.", - "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", - "The output helps the user understand where files, credentials, and workspace settings live with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid leaking secrets or changing the wrong agent.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." - ] - }, - { - "id": "docs-inference-set-up-sub-agent-003", - "question": "I'm testing a new sub-agent. Help me send a prompt that exercises the intended routing so I can prove it uses the expected provider and model.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user send a prompt that exercises the intended routing and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prove it uses the expected provider and model.", - "expected_behavior": [ - "The output directly addresses the user's situation: testing a new sub-agent.", - "The AI coding assistant loads the expected_skill and references/set-up-sub-agent.md", - "The output helps the user send a prompt that exercises the intended routing with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prove it uses the expected provider and model.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/set-up-sub-agent.md file." - ] - }, - { - "id": "docs-inference-tool-calling-reliability-001", - "question": "I'm seeing tool calls leak as plain text. Help me diagnose whether the model, server, or parser is incompatible so I can restore reliable tool execution.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user diagnose whether the model, server, or parser is incompatible and gives enough concrete guidance, decision criteria, verification steps, or risk framing to restore reliable tool execution.", - "expected_behavior": [ - "The output directly addresses the user's situation: seeing tool calls leak as plain text.", - "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", - "The output helps the user diagnose whether the model, server, or parser is incompatible with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to restore reliable tool execution.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." - ] - }, - { - "id": "docs-inference-tool-calling-reliability-002", - "question": "I'm comparing local inference runtimes. Help me understand whether Ollama, vLLM, or parser settings better support tool calls so I can choose a runtime that matches the agent's tool needs.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand whether Ollama, vLLM, or parser settings better support tool calls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose a runtime that matches the agent's tool needs.", - "expected_behavior": [ - "The output directly addresses the user's situation: comparing local inference runtimes.", - "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", - "The output helps the user understand whether Ollama, vLLM, or parser settings better support tool calls with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose a runtime that matches the agent's tool needs.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." - ] - }, - { - "id": "docs-inference-tool-calling-reliability-003", - "question": "I'm letting an always-on assistant use tools unattended. Help me define the reliability bar for local tool calling so I can avoid silent failures or unsafe plain-text tool outputs.", - "expected_skill": "nemoclaw-user-configure-inference", - "ground_truth": "A NemoClaw-specific answer that helps the user define the reliability bar for local tool calling and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid silent failures or unsafe plain-text tool outputs.", - "expected_behavior": [ - "The output directly addresses the user's situation: letting an always-on assistant use tools unattended.", - "The AI coding assistant loads the expected_skill and references/tool-calling-reliability.md", - "The output helps the user define the reliability bar for local tool calling with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid silent failures or unsafe plain-text tool outputs.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/tool-calling-reliability.md file." - ] - } -] diff --git a/skills/nemoclaw-user-configure-inference/references/inference-options.md b/skills/nemoclaw-user-configure-inference/references/inference-options.md deleted file mode 100644 index 0a869a0982a..00000000000 --- a/skills/nemoclaw-user-configure-inference/references/inference-options.md +++ /dev/null @@ -1,140 +0,0 @@ -# NemoClaw Inference Options - -NemoClaw supports multiple inference providers. -During onboarding, the `nemoclaw onboard` wizard presents a numbered list of providers to choose from. -Your selection determines where the agent's inference traffic is routed. - -## How Inference Routing Works - -The agent inside the sandbox talks to `inference.local`. -It never connects to a provider directly. -OpenShell intercepts inference traffic on the host and forwards it to the provider you selected. - -Provider credentials stay on the host. -The sandbox does not receive your API key. -Local Ollama and local vLLM do not require your host `OPENAI_API_KEY`. -NemoClaw uses provider-specific local tokens for those routes, and rebuilds of legacy local-inference sandboxes migrate away from stale OpenAI credential requirements. - -## Provider Status - -| Provider | Status | Endpoint type | Notes | -|----------|--------|---------------|-------| -| NVIDIA Endpoints | Tested | OpenAI-compatible | Hosted models on integrate.api.nvidia.com | -| OpenAI | Tested | Native OpenAI-compatible | Uses OpenAI model IDs | -| Other OpenAI-compatible endpoint | Tested | Custom OpenAI-compatible | For compatible proxies and gateways | -| Anthropic | Tested | Native Anthropic | Uses anthropic-messages | -| Other Anthropic-compatible endpoint | Tested | Custom Anthropic-compatible | For Claude proxies and compatible gateways | -| Google Gemini | Tested | OpenAI-compatible | Uses Google's OpenAI-compatible endpoint | -| Hermes Provider | Hermes only | OpenAI-compatible route | Available when onboarding Hermes Agent through `nemohermes` | -| Local Ollama | Caveated | Local Ollama API | Available when Ollama is installed or running on the host | -| Local NVIDIA NIM | Experimental | Local OpenAI-compatible | Requires `NEMOCLAW_EXPERIMENTAL=1` and a NIM-capable GPU | -| Local vLLM (already running) | Caveated | Local OpenAI-compatible | Appears in the onboarding menu when NemoClaw detects a server already on `localhost:8000`. No flag required. | -| Local vLLM (managed install/start) | Caveated | Local OpenAI-compatible | Appears by default on DGX Spark and DGX Station. Generic Linux NVIDIA GPU hosts require `NEMOCLAW_EXPERIMENTAL=1` or `NEMOCLAW_PROVIDER=install-vllm`. NemoClaw pulls/starts a vLLM container on a supported NVIDIA GPU host. | - -## Provider Options - -The onboard wizard presents the following provider options by default. -The first six are always available. -Ollama appears when it is installed or running on the host. -Local vLLM appears when NemoClaw detects a running vLLM server. -The managed install/start vLLM entry appears by default on DGX Spark and DGX Station, and appears on generic Linux NVIDIA GPU hosts after opt-in. - -| Option | Description | Curated models | -|--------|-------------|----------------| -| NVIDIA Endpoints | Routes to models hosted on [build.nvidia.com](https://build.nvidia.com). You can also enter any model ID from the catalog. Set `NVIDIA_API_KEY`. | Nemotron 3 Super 120B, GLM-5.1, MiniMax M2.7, GPT-OSS 120B, DeepSeek V4 Pro | -| OpenAI | Routes to the OpenAI API. Set `OPENAI_API_KEY`. | `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.4-pro-2026-03-05` | -| Other OpenAI-compatible endpoint | Routes to any server that implements `/v1/chat/completions`. NemoClaw uses `/v1/chat/completions` at runtime by default; set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` for proxies that implement it, such as some llama.cpp builds. The wizard prompts for a base URL and model name. Works with OpenRouter, LocalAI, llama.cpp, or any compatible proxy. When you enable Telegram messaging, onboarding also runs a bounded sandbox-side smoke check through `https://inference.local/v1/chat/completions`. Set `COMPATIBLE_API_KEY`. | You provide the model name. | -| Anthropic | Routes to the Anthropic Messages API. Set `ANTHROPIC_API_KEY`. | `claude-sonnet-4-6`, `claude-haiku-4-5`, `claude-opus-4-6` | -| Other Anthropic-compatible endpoint | Routes to any server that implements the Anthropic Messages API (`/v1/messages`). The wizard prompts for a base URL and model name. Set `COMPATIBLE_ANTHROPIC_API_KEY`. | You provide the model name. | -| Google Gemini | Routes to Google's OpenAI-compatible chat-completions endpoint. NemoClaw skips the Responses-API probe because Gemini does not support `/v1/responses`. Set `GEMINI_API_KEY`. | `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3-flash-preview`, `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite` | -| Hermes Provider | Routes Hermes Agent through the host OpenShell provider registered by NemoClaw when onboarding Hermes Agent. | Curated Hermes Provider models such as `moonshotai/kimi-k2.6`, `openai/gpt-5.4-mini`, and `z-ai/glm-5.1`. | -| Local Ollama | Routes to a local Ollama instance on `localhost:11434`. NemoClaw detects installed models, offers starter models if none are present, pulls and warms the selected model, and validates it. | Selected during onboarding. For more information, refer to [Use a Local Inference Server](../SKILL.md). | -| Model Router | Starts a host-side router on port `4000`, registers it as an OpenAI-compatible provider, and keeps the sandbox pointed at `inference.local`. Set `NEMOCLAW_PROVIDER=routed` for non-interactive setup. | The router pool defines the model names. | - -## Choosing the Right Option for Nemotron - -NVIDIA Nemotron models expose OpenAI-compatible APIs across every supported deployment surface, so two onboarding options can route to Nemotron. - -| Where Nemotron is hosted | Onboard wizard option | Why | -|---|---|---| -| `build.nvidia.com` (NVIDIA-hosted) | **Option 1: NVIDIA Endpoints** | NemoClaw sets the base URL to `https://integrate.api.nvidia.com/v1` for you and validates the model against the build catalog. | -| Self-hosted NIM container | **Option 3: Other OpenAI-compatible endpoint** | NIM exposes an OpenAI-compatible `/v1/chat/completions` route. Point the base URL at your NIM service and enter the Nemotron model ID. | -| Enterprise NVIDIA AI Enterprise gateway | **Option 3: Other OpenAI-compatible endpoint** | Enterprise gateways front Nemotron with the same OpenAI-compatible contract. Use the gateway's base URL and your enterprise token. | -| vLLM, SGLang, or TRT-LLM serving Nemotron weights | **Option 3: Other OpenAI-compatible endpoint** | Each runtime exposes Nemotron through `/v1/chat/completions`. Use the runtime's base URL and the model ID it reports. | -| Local NIM started by the wizard | **Local NVIDIA NIM** (experimental) | Requires `NEMOCLAW_EXPERIMENTAL=1` and a NIM-capable GPU. NemoClaw pulls and manages the container for you. | - -For Option 3, the API key environment variable is `COMPATIBLE_API_KEY`. Set it to whatever credential your endpoint expects, or any non-empty placeholder if your endpoint does not require auth. - -## Model Router - -The Model Router option uses the `routed` inference profile in `nemoclaw-blueprint/blueprint.yaml`. -When you select it, NemoClaw starts the router proxy on the host, waits for its health endpoint, registers the `nvidia-router` provider with OpenShell, and creates the sandbox with the same `inference.local` route the agent uses for other providers. -The sandbox does not call the router port directly. - -The router model pool lives in `nemoclaw-blueprint/router/pool-config.yaml`. -The default pool routes between NVIDIA-hosted Nemotron models and uses the `tolerance` value to choose the lowest-cost model whose predicted quality stays within the configured threshold. -To use the router in scripted setup, set: - -```console -$ NEMOCLAW_PROVIDER=routed NVIDIA_API_KEY= nemoclaw onboard --non-interactive -``` - -### Host Python requirement - -The Model Router runs in a host-side virtual environment that NemoClaw creates during onboarding. -NemoClaw probes `python3.13`, `python3.12`, `python3.11`, `python3.10`, and bare `python3`, and adopts the first interpreter that satisfies both of: - -- Version inside `[3.10, 3.14)`. -- `ensurepip`, `pyexpat`, `ssl`, and `venv` all import without error. - -If no candidate qualifies, onboarding aborts and prints the real failure for each candidate. -This surfaces issues like Homebrew `python@3.14` whose `pyexpat` extension fails to dlopen against the older system `libexpat` on macOS. - -To pin a specific interpreter, set `NEMOCLAW_MODEL_ROUTER_PYTHON` to its absolute path before running `nemoclaw onboard`: - -```console -$ NEMOCLAW_MODEL_ROUTER_PYTHON=/opt/homebrew/bin/python3.12 nemoclaw onboard -``` - -The pin is strict. -NemoClaw probes only that interpreter and aborts with the failure reason if it does not qualify, rather than silently falling back to a different python on `PATH`. -Relative command names such as `python3.12` are rejected; use `command -v python3.12` to find the absolute path. -If `python -m venv` itself fails for a probe-clean interpreter (for example, a corrupt ensurepip seed), NemoClaw retries with the next healthy candidate when no pin is set; with a pin set, the failure stops onboarding so you can fix or repoint the pinned python. - -## Caveated Local Options - -The following local inference options are caveated. -Local NIM and generic Linux managed vLLM install/start require `NEMOCLAW_EXPERIMENTAL=1`; DGX Spark and DGX Station managed vLLM entries appear by default. -An already-running vLLM server appears directly in the onboarding selection list. - -| Option | Condition | Notes | -|--------|-----------|-------| -| Local NVIDIA NIM | NIM-capable GPU detected | Pulls and manages a NIM container. | -| Local vLLM | vLLM running on `localhost:8000`, or a supported DGX Spark, DGX Station, or Linux NVIDIA GPU profile | Auto-detects the loaded model when vLLM is already running. Can install or start a managed vLLM container by default on DGX Spark/Station and after opt-in on generic Linux NVIDIA GPU hosts. | - -For setup instructions, refer to [Use a Local Inference Server](../SKILL.md). - -## Validation - -NemoClaw validates the selected provider and model before creating the sandbox. -If credential validation fails, the wizard asks whether to re-enter the API key, choose a different provider, retry, or exit. -Transient upstream validation failures are retried before the wizard reports a provider failure. -The `nvapi-` prefix check applies only to `NVIDIA_API_KEY`. -Other provider credentials, such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, and compatible endpoint keys, use provider-aware validation during retry. - -| Provider type | Validation method | -|---|---| -| OpenAI | Tries `/responses` first, then `/chat/completions`. | -| NVIDIA Endpoints | Validates via `/v1/chat/completions` only; the `/v1/responses` probe is skipped because NVIDIA Build does not expose `/v1/responses` (returns 404 for every model). | -| Google Gemini | Validates via Gemini's OpenAI-compatible chat-completions path only; the `/v1/responses` probe is skipped because Gemini does not support the Responses API. | -| Other OpenAI-compatible endpoint | Tries `/v1/responses` first with a tool-calling probe; falls back to `/v1/chat/completions`. Selected runtime API defaults to `/v1/chat/completions`; set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` at runtime when validation succeeds. | -| Anthropic-compatible | Tries `/v1/messages`. | -| NVIDIA Endpoints (manual model entry) | Validates the model name against the catalog API. | -| Compatible endpoints | Sends a real inference request because many proxies do not expose a `/models` endpoint. For OpenAI-compatible endpoints, the probe tries `/v1/responses` first then falls back to `/v1/chat/completions`; the selected runtime API defaults to `/v1/chat/completions`. Set `NEMOCLAW_PREFERRED_API=openai-responses` to allow `/v1/responses` at runtime when validation succeeds. | -| Local NVIDIA NIM | Validates via `/v1/chat/completions` only; the `/v1/responses` probe is skipped (same as NVIDIA Endpoints). | - -## Next Steps - -- [Use a Local Inference Server](../SKILL.md) for Ollama, vLLM, NIM, and compatible-endpoint setup details. -- [Tool-Calling Reliability](tool-calling-reliability.md) for deciding when Ollama is enough and when vLLM with a parser is safer. -- [Switch Inference Models](switch-inference-providers.md) for changing the model at runtime without re-onboarding. diff --git a/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md b/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md deleted file mode 100644 index df0672b30a5..00000000000 --- a/skills/nemoclaw-user-configure-inference/references/set-up-sub-agent.md +++ /dev/null @@ -1,118 +0,0 @@ -# Set Up Task-Specific Sub-Agents - -OpenClaw documents the sub-agent behavior, `sessions_spawn` tool, `agents.list` configuration, tool policy, nesting, and auth model in [Sub-Agents](https://docs.openclaw.ai/tools/subagents). -Use that page as the source of truth for how OpenClaw sub-agents work. - -This NemoClaw page covers the sandbox-specific pieces: where the OpenClaw config lives, where to put per-agent credentials, which writable workspace path agents should use, and how the Omni VLM demo maps onto those paths. - -## NemoClaw Sandbox Paths - -NemoClaw runs OpenClaw inside an OpenShell sandbox. -When adapting an OpenClaw sub-agent setup, use these paths inside the sandbox: - -| Path | Purpose | -|---|---| -| `/sandbox/.openclaw/openclaw.json` | OpenClaw config, including `models.providers`, `agents.defaults`, and `agents.list`. | -| `/sandbox/.openclaw/.config-hash` | Hash for `openclaw.json`. Keep it in sync after manual config edits; it becomes a startup-enforced trust anchor only after the file is root-owned and read-only. | -| `/sandbox/.openclaw/agents//agent/auth-profiles.json` | Per-agent provider credentials. Use this when a sub-agent calls an auxiliary provider directly. | -| `/sandbox/.openclaw/workspace/` | Writable shared workspace path for files the primary agent passes to the sub-agent. | -| `/tmp/gateway.log` | OpenClaw gateway log. Use it to confirm config reloads and diagnose sub-agent failures. | - -For file-based tasks, instruct agents to use `/sandbox/.openclaw/workspace/`. -Avoid relying on legacy `.openclaw-data` paths or read-only OpenClaw paths in delegation instructions. - -## Omni Vision Sub-Agent Example - -The [`vlm-demo`](https://github.com/brevdev/nemoclaw-demos/tree/main/vlm-demo) applies the OpenClaw sub-agent pattern to a vision task. -It keeps the primary `main` agent on the normal NemoClaw inference route and adds a `vision-operator` sub-agent backed by an Omni vision model. - -| OpenClaw field | Omni example value | -|---|---| -| Primary agent | `main` | -| Primary model | `inference/nvidia/nemotron-3-super-120b-a12b` | -| Auxiliary provider | `nvidia-omni` | -| Sub-agent | `vision-operator` | -| Sub-agent model | `nvidia-omni/private/nvidia/nemotron-3-nano-omni-reasoning-30b-a3b` | -| Delegation tool | `sessions_spawn` | - -Omni is used as the specialist model for image tasks. -The primary orchestration model remains responsible for conversation, planning, and deciding when to delegate. - -## Update the Sandbox Config - -Fetch the current OpenClaw config from the sandbox, patch it with your auxiliary provider and `agents.list` changes, then upload it back. - -```console -$ export SANDBOX=my-assistant -$ export DOCKER_CTR=openshell-cluster-nemoclaw -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- cat /sandbox/.openclaw/openclaw.json > /tmp/openclaw.json -``` - -Create `/tmp/openclaw.updated.json` with the OpenClaw sub-agent config. -For the Omni example, the demo provides `vlm-demo/vlm-subagent/openclaw-patch.py`. - -Upload the patched config and refresh the hash. -In the default mutable state, this keeps the local hash consistent but does not make it tamper-proof; lock the config root-owned and read-only afterward if the sandbox should enforce config integrity at startup. - -```console -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 644 /sandbox/.openclaw/openclaw.json -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 644 /sandbox/.openclaw/.config-hash -$ cat /tmp/openclaw.updated.json | docker exec -i "$DOCKER_CTR" kubectl exec -i -n openshell "$SANDBOX" -c agent -- sh -c 'cat > /sandbox/.openclaw/openclaw.json' -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- /bin/bash -c "cd /sandbox/.openclaw && sha256sum openclaw.json > .config-hash" -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 444 /sandbox/.openclaw/openclaw.json -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chmod 444 /sandbox/.openclaw/.config-hash -``` - -Check `/tmp/gateway.log` after upload and confirm the gateway hot-reloaded the provider or `agents.list` change. - -## Add Sub-Agent Credentials - -If the auxiliary model uses a provider key outside the normal NemoClaw inference route, put that key in the sub-agent auth profile. -For the Omni example: - -```text -/sandbox/.openclaw/agents/vision-operator/agent/auth-profiles.json -``` - -Use the same provider ID that appears in `models.providers`, such as `nvidia-omni`. -After uploading the auth profile, make sure the sub-agent directory is owned by the sandbox user: - -```console -$ docker exec "$DOCKER_CTR" kubectl exec -n openshell "$SANDBOX" -c agent -- chown -R sandbox:sandbox /sandbox/.openclaw/agents/vision-operator -``` - -## Allow Auxiliary Provider Egress - -If the sub-agent calls a provider directly, update the OpenShell network policy for the binary that makes the request. -In the Omni demo, the OpenClaw gateway runs as `/usr/local/bin/node`, so the NVIDIA endpoint policy must allow that binary. - -Refer to Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for policy update workflows. - -## Add Delegation Instructions - -OpenClaw handles `sessions_spawn`, but the primary agent still needs task instructions. -Place those instructions in the writable workspace, for example: - -```text -/sandbox/.openclaw/workspace/TOOLS.md -``` - -The Omni demo includes `vlm-demo/vlm-subagent/TOOLS.md`, which tells `main` to delegate image tasks to `vision-operator` and tells the sub-agent to read the image path it receives. -Adapt that file for other task-specific models. - -## Demo Assets - -Use the [`vlm-demo`](https://github.com/brevdev/nemoclaw-demos/tree/main/vlm-demo) repository for runnable Omni example assets: - -- `vlm-subagent-guide.md` for a command-by-command walkthrough. -- `vlm-subagent/openclaw-patch.py` for patching `openclaw.json`. -- `vlm-subagent/auth-profiles.template.json` for the sub-agent auth profile. -- `vlm-subagent/TOOLS.md` for delegation instructions. - -## Next Steps - -Use the following resources for more information: - -- Refer to [OpenClaw Sub-Agents](https://docs.openclaw.ai/tools/subagents) for `sessions_spawn`, `agents.list`, nesting, tool policy, and auth behavior. -- Refer to [Switch Inference Providers](switch-inference-providers.md) to change the primary orchestration model instead of adding a sub-agent model. -- Refer to Workspace Files (use the `nemoclaw-user-manage-sandboxes` skill) to understand per-agent workspace directories. diff --git a/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md b/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md deleted file mode 100644 index 59c7db1abbb..00000000000 --- a/skills/nemoclaw-user-configure-inference/references/switch-inference-providers.md +++ /dev/null @@ -1,205 +0,0 @@ -# Switch Inference Models at Runtime - -Change the active inference model while the sandbox is running. -No restart is required. - -## Prerequisites - -- A running NemoClaw sandbox. -- The OpenShell CLI on your `PATH`, which NemoClaw uses under the hood. - -## Switch to a Different Model - -Use `nemoclaw inference set` with the provider and model that match the upstream you want to use. -The command updates the OpenShell inference route and synchronizes the running agent config. -For OpenClaw, it updates `agents.defaults.model.primary` and the matching provider namespace. -For Hermes, it updates `/sandbox/.hermes/config.yaml` (`model.default`, `model.base_url`, and `model.provider: custom`) without rebuilding or restarting Hermes. - -Pass `--sandbox ` when you do not want to use the default registered sandbox. -Under `nemohermes`, pass `--sandbox ` when more than one Hermes sandbox is registered. - -### NVIDIA Endpoints - -```console -$ nemoclaw inference set --provider nvidia-prod --model nvidia/nemotron-3-super-120b-a12b -``` - -### OpenAI - -```console -$ nemoclaw inference set --provider openai-api --model gpt-5.4 -``` - -### Anthropic - -```console -$ nemoclaw inference set --provider anthropic-prod --model claude-sonnet-4-6 -``` - -### Google Gemini - -```console -$ nemoclaw inference set --provider gemini-api --model gemini-2.5-flash -``` - -### Compatible Endpoints - -If you onboarded a custom compatible endpoint, switch models with the provider created for that endpoint: - -```console -$ nemoclaw inference set --provider compatible-endpoint --model -``` - -```console -$ nemoclaw inference set --provider compatible-anthropic-endpoint --model -``` - -### Hermes Provider - -For a NemoClaw-managed Hermes sandbox, use the Hermes alias with the registered Hermes Provider route: - -```console -$ nemohermes inference set --provider hermes-provider --model openai/gpt-5.4-mini -``` - -#### Switching from Responses API to Chat Completions - -If onboarding selected `/v1/responses` but the agent fails at runtime (for -example, because the backend does not emit the streaming events OpenClaw -requires), re-run onboarding so the wizard re-probes the endpoint and bakes -the correct API path into the image: - -```console -$ nemoclaw onboard -``` - -Select the same provider and endpoint again. -The updated streaming probe will detect incomplete `/v1/responses` support -and select `/v1/chat/completions` automatically. - -For the compatible-endpoint provider, NemoClaw uses `/v1/chat/completions` by -default, so no env var is required to keep the safe path. -To opt in to `/v1/responses` for a backend you have verified end to end, set -`NEMOCLAW_PREFERRED_API` before onboarding: - -```console -$ NEMOCLAW_PREFERRED_API=openai-responses nemoclaw onboard -``` - -**Note:** - -`NEMOCLAW_INFERENCE_API_OVERRIDE` patches the config at container startup but -does not update the Dockerfile ARG baked into the image. -If you recreate the sandbox without the override env var, the image reverts to -the original API path. -A fresh `nemoclaw onboard` is the reliable fix because it updates both the -session and the baked image. - -## Cross-Provider Switching - -Switching to a different provider family (for example, from NVIDIA Endpoints to Anthropic) also uses `nemoclaw inference set`. -The command updates both the gateway route and the OpenClaw provider namespace in the running sandbox config. - -```console -$ nemoclaw inference set --provider anthropic-prod --model claude-sonnet-4-6 --no-verify -``` - -Use `--no-verify` only when OpenShell cannot verify the provider at switch time but you have already confirmed the provider and credential. - -## Tune Model Metadata - -The sandbox image bakes model metadata (context window, max output tokens, reasoning mode, and accepted input modalities) into `openclaw.json` at build time. -To change these values, set the corresponding environment variables before running `nemoclaw onboard` so they patch into the Dockerfile before the image builds. - -| Variable | Values | Default | -|---|---|---| -| `NEMOCLAW_CONTEXT_WINDOW` | Positive integer (tokens) | `131072` | -| `NEMOCLAW_MAX_TOKENS` | Positive integer (tokens) | `4096` | -| `NEMOCLAW_REASONING` | `true` or `false` | `false` | -| `NEMOCLAW_INFERENCE_INPUTS` | `text` or `text,image` | `text` | -| `NEMOCLAW_AGENT_TIMEOUT` | Positive integer (seconds) | `600` | -| `NEMOCLAW_AGENT_HEARTBEAT_EVERY` | Go-style duration (`30m`, `1h`, `0m` to disable) | `unset` (OpenClaw default) | - -Invalid values are ignored, and the default bakes into the image. -For Local Ollama, onboarding loads the selected model first and uses Ollama's reported runtime context length when `NEMOCLAW_CONTEXT_WINDOW` is unset. -Use `NEMOCLAW_INFERENCE_INPUTS=text,image` only for a model that accepts image input through the selected provider. - -```console -$ export NEMOCLAW_CONTEXT_WINDOW=65536 -$ export NEMOCLAW_MAX_TOKENS=8192 -$ export NEMOCLAW_REASONING=true -$ export NEMOCLAW_INFERENCE_INPUTS=text,image -$ export NEMOCLAW_AGENT_TIMEOUT=1800 -$ export NEMOCLAW_AGENT_HEARTBEAT_EVERY=0m -$ nemoclaw onboard -``` - -`NEMOCLAW_AGENT_TIMEOUT` controls the per-request inference timeout baked into -`agents.defaults.timeoutSeconds`. Increase it for slow local inference (for -example, CPU-only Ollama or vLLM on modest hardware). NemoClaw writes this -value into `openclaw.json` during onboarding. The default sandbox may keep that -file writable for agent state, but direct in-sandbox edits are not the supported -or durable way to change NemoClaw-managed defaults. Rebuild the sandbox via -`nemoclaw onboard` to apply a new value. - -`NEMOCLAW_AGENT_HEARTBEAT_EVERY` sets `agents.defaults.heartbeat.every`. -This controls OpenClaw's periodic main-session agent turn. -Each interval, the agent wakes up to review follow-ups and read `HEARTBEAT.md` if present in the workspace. -The OpenClaw default is 30 minutes (1 hour for Anthropic OAuth / Claude CLI reuse). -Tune the cadence with a duration string like `5m` or `2h`, or set `0m` to disable the periodic turns entirely. -Disabling also drops `HEARTBEAT.md` from normal-run bootstrap context per upstream behavior, so the model no longer sees heartbeat-only instructions. -NemoClaw writes this value into `openclaw.json` during onboarding. -The in-sandbox `openclaw config set` command is not the supported path for -NemoClaw-managed build-time defaults, and direct file edits are overwritten by a -rebuild. Rebuild the sandbox via `nemoclaw onboard --resume` to apply a new value. - -These variables are build-time settings. -If you change them on an existing sandbox, recreate the sandbox so the new values bake into the image: - -```console -$ nemoclaw onboard --resume --recreate-sandbox -``` - -## Verify the Active Model - -Use `nemoclaw inference get` to print the provider and model the gateway is currently routing to. -Run it before `nemoclaw inference set` to confirm the starting state, or after a switch to verify the new route. - -```console -$ nemoclaw inference get -Provider: nvidia-prod -Model: nvidia/nemotron-3-super-120b-a12b -``` - -Pass `--json` for machine-readable output. - -```console -$ nemoclaw inference get --json -{ - "provider": "nvidia-prod", - "model": "nvidia/nemotron-3-super-120b-a12b" -} -``` - -The command exits non-zero with `OpenShell inference route is not configured.` when the gateway has no registered inference route. -Run `nemoclaw onboard` to configure one. - -Run the status command when you also need sandbox, service, and messaging health: - -```console -$ nemoclaw status -``` - -The status output includes the active provider, model, and endpoint with the rest of the sandbox state. - -## Notes - -- The host keeps provider credentials. -- The sandbox continues to use `inference.local`. -- `nemoclaw inference set` patches the selected running OpenClaw or Hermes sandbox config and recomputes its config hash. -- Use `nemoclaw onboard --resume --recreate-sandbox` for build-time settings such as context window, max tokens, reasoning mode, heartbeat cadence, or image contents. -- Local Ollama and local vLLM routes use local provider tokens rather than `OPENAI_API_KEY`. Rebuilds of older local-inference sandboxes clear the stale OpenAI credential requirement automatically. - -## Related Topics - -- [Inference Options](inference-options.md) for the full list of providers available during onboarding. diff --git a/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md b/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md deleted file mode 100644 index 1ec05ccf4b2..00000000000 --- a/skills/nemoclaw-user-configure-inference/references/tool-calling-reliability.md +++ /dev/null @@ -1,162 +0,0 @@ -# Tool-Calling Reliability for Local Inference - -Local inference is useful for privacy, cost control, and offline development, but -tool-calling agents place stricter demands on the model server than simple chat. -The model server must return structured `tool_calls`, not a JSON-looking string -inside normal assistant text. - -Use this page when the TUI shows raw JSON such as: - -```json -{"arguments":{"query":"robotics"},"name":"memory_search"} -``` - -If that appears as text in the assistant reply, OpenClaw cannot dispatch the -tool because the inference response did not include a structured tool call. - -## Quick Choice Guide - -| Workload | Ollama is usually sufficient | Prefer vLLM with a parser | -|---|---|---| -| Plain chat | Yes | Optional | -| Embeddings-only or retrieval setup | Yes | Optional | -| One simple tool with short prompts | Often | Optional | -| Agent loops with several tools | Risky | Yes | -| Long system prompts or sender metadata | Risky | Yes | -| Multi-turn tool dispatch | Risky | Yes | - -Ollama can work well for lightweight local chat and some simple tool surfaces. -For OpenClaw-style agent loops with multiple tools, long instructions, or -multi-turn dispatch, use a server that exposes OpenAI-compatible -`/v1/chat/completions` with a tool-call parser. vLLM is the common local choice. - -## Symptom - -The common failure mode is: - -- The model emits text that looks like a tool call. -- The response does not include a structured `tool_calls` field. -- The gateway treats the response as normal text. -- No tool runs, and the user sees raw JSON in the TUI. - -This is different from a network or policy block. `nemoclaw status`, -`nemoclaw logs`, and `nemoclaw debug --quick` can all look healthy while -tool dispatch still fails inside the conversation. - -## Recommended Fix - -For persistent NemoClaw use, start vLLM with auto tool choice and the parser that -matches your model family, then rerun onboarding and select **Local vLLM -[experimental]** or **Other OpenAI-compatible endpoint**. - -For Hermes 3 style models, a known-good vLLM command shape is: - -```console -$ vllm serve /models/Hermes-3-Llama-3.1-8B \ - --served-model-name hermes-3-llama-3.1-8b \ - --enable-auto-tool-choice \ - --tool-call-parser hermes \ - --port 8000 -``` - -For a Docker Compose setup: - -```yaml -services: - vllm-nemoclaw: - image: vllm/vllm-openai:latest - container_name: vllm-nemoclaw - restart: unless-stopped - ports: - - "8002:8000" - volumes: - - /path/to/models:/models:ro - - /path/to/hf-cache:/root/.cache/huggingface - ipc: host - deploy: - resources: - reservations: - devices: - - capabilities: [gpu] - count: all - command: > - --model /models/Hermes-3-Llama-3.1-8B - --served-model-name hermes-3-llama-3.1-8b - --enable-auto-tool-choice - --tool-call-parser hermes - --gpu-memory-utilization 0.20 - --max-model-len 32768 - --api-key ${VLLM_API_KEY} -``` - -Then onboard against that endpoint: - -```console -$ NEMOCLAW_PROVIDER=custom \ - NEMOCLAW_ENDPOINT_URL=http://localhost:8002/v1 \ - NEMOCLAW_MODEL=hermes-3-llama-3.1-8b \ - COMPATIBLE_API_KEY=$VLLM_API_KEY \ - nemoclaw onboard --non-interactive -``` - -If the endpoint does not require authentication, set `COMPATIBLE_API_KEY` to any -non-empty placeholder, such as `dummy`. - -## Advanced Temporary Repointing - -NemoClaw-managed sandboxes normally block direct `openclaw config set` writes -inside the sandbox because those edits do not survive rebuilds. Prefer rerunning -`nemoclaw onboard` for a persistent provider change. - -If you are intentionally testing a mutable OpenClaw config, prepare a batch file -like this: - -```json -{ - "models": { - "providers": { - "vllm-local": { - "baseUrl": "http://host.openshell.internal:8002/v1", - "api": "openai", - "apiKey": "${VLLM_API_KEY}" - } - } - }, - "agents": { - "defaults": { - "model": { - "primary": "vllm-local/hermes-3-llama-3.1-8b" - } - } - } -} -``` - -Apply it only in environments where OpenClaw config writes are allowed: - -```console -$ openclaw config set --batch-file /sandbox/.openclaw/vllm-tool-calls.json -``` - -After testing, persist the working provider through `nemoclaw onboard` so the -sandbox image, OpenShell inference route, and host-managed credentials stay in -sync. - -## Verify the Fix - -After switching to vLLM, ask for an action that should use a tool. Good signs: - -- The TUI does not show JSON blobs as assistant text. -- The gateway log shows tool dispatch and a follow-up answer. -- `nemoclaw status` reports the local vLLM or compatible endpoint as the - active provider. - -If JSON still appears as text, confirm that vLLM was started with both -`--enable-auto-tool-choice` and the correct `--tool-call-parser` value for your -model. - -## Next Steps - -- [Use a Local Inference Server](../SKILL.md) -- [Inference Options](inference-options.md) -- [Switch Inference Models](switch-inference-providers.md) diff --git a/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md b/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md deleted file mode 100644 index 3a7ea4ae339..00000000000 --- a/skills/nemoclaw-user-configure-inference/references/use-local-inference-details.md +++ /dev/null @@ -1,149 +0,0 @@ -# Use a Local Inference Server: Details - -## Non-Interactive Setup - -```console -$ NEMOCLAW_PROVIDER=ollama \ - NEMOCLAW_MODEL=qwen2.5:14b \ - nemoclaw onboard --non-interactive --yes -``` - -If `NEMOCLAW_MODEL` is not set, NemoClaw selects a default model based on available memory. -If `NEMOCLAW_MODEL` names a known bootstrap model (for example `qwen3.6:35b`) that does not fit the host's currently available GPU memory, NemoClaw warns and falls back to the largest known model that does fit. -Unknown or custom tags (any value the bootstrap registry has not seen) are still passed through; the Ollama runner validates the choice itself. - -`--yes` (or `NEMOCLAW_YES=1`) authorises the Ollama model download without an interactive confirmation prompt. -Under `--non-interactive`, `--yes` (or `NEMOCLAW_YES=1`) is required to authorise the download — onboard exits otherwise, since it cannot prompt. -Run onboard without `--non-interactive` to get the interactive `[y/N]` prompt that shows the model size before downloading. - -| Variable | Purpose | -|---|---| -| `NEMOCLAW_PROVIDER` | Set to `ollama`. | -| `NEMOCLAW_MODEL` | Ollama model tag to use. Optional. | -| `NEMOCLAW_YES` | Set to `1` to auto-accept the model-download confirmation prompt. Optional. | - -### Selecting the API Path - -For the compatible-endpoint provider, `/v1/chat/completions` is the default. -NemoClaw tests streaming events during onboarding and uses chat completions -without probing the Responses API. - -To opt in to `/v1/responses`, set `NEMOCLAW_PREFERRED_API` before running onboard: - -```console -$ NEMOCLAW_PREFERRED_API=openai-responses nemoclaw onboard -``` - -The wizard then probes `/v1/responses` and only selects it when streaming -support is complete. -If the probe fails, the wizard falls back to `/v1/chat/completions` -automatically. -You can use this variable in both interactive and non-interactive mode. - -| Variable | Values | Default | -|---|---|---| -| `NEMOCLAW_PREFERRED_API` | `openai-completions`, `openai-responses` | `openai-completions` for compatible endpoints | - -If you already onboarded and the sandbox is failing at runtime, re-run -`nemoclaw onboard` to re-probe the endpoint and bake the correct API path -into the image. -Refer to [Switch Inference Models](switch-inference-providers.md) for details. - -## Anthropic-Compatible Server - -If your local server implements the Anthropic Messages API (`/v1/messages`), choose **Other Anthropic-compatible endpoint** during onboarding instead. - -```console -$ nemoclaw onboard -``` - -For non-interactive setup, use `NEMOCLAW_PROVIDER=anthropicCompatible` and set `COMPATIBLE_ANTHROPIC_API_KEY`. - -```console -$ NEMOCLAW_PROVIDER=anthropicCompatible \ - NEMOCLAW_ENDPOINT_URL=http://localhost:8080 \ - NEMOCLAW_MODEL=my-model \ - COMPATIBLE_ANTHROPIC_API_KEY=dummy \ - nemoclaw onboard --non-interactive -``` - -### Override the Managed-vLLM Model - -Managed vLLM serves the profile default unless you select a different registry entry. -Export `NEMOCLAW_VLLM_MODEL=` before invoking the installer to choose a different model from the registry. -NemoClaw uses the matching `vllm serve` flags, including the reasoning parser, tool-call parser, and `--max-model-len`. -Recognised slugs: - -| Slug | Hugging Face model | Notes | -|---|---|---| -| `qwen3.6-27b` | `Qwen/Qwen3.6-27B-FP8` | Default on DGX Spark and DGX Station profiles | -| `nemotron-3-nano-4b` | `nvidia/NVIDIA-Nemotron-3-Nano-4B-FP8` | Default on the generic Linux + NVIDIA GPU profile | -| `deepseek-r1-distill-70b` | `deepseek-ai/DeepSeek-R1-Distill-Llama-70B` | Gated. Requires Hugging Face license acceptance | - -The slug is case-insensitive; the full Hugging Face id is also accepted. -An unrecognised value fails fast with a list of valid slugs. - -Gated models require a Hugging Face token; export it before onboarding so NemoClaw can forward it into the managed vLLM container: - -```console -$ export HF_TOKEN= -$ NEMOCLAW_PROVIDER=install-vllm \ - NEMOCLAW_VLLM_MODEL=deepseek-r1-distill-70b \ - nemoclaw onboard --non-interactive -``` - -`HUGGING_FACE_HUB_TOKEN` is accepted as an alternative. -The token check runs on the host before any docker pull, so a missing or empty token aborts onboarding before bandwidth is spent on a 401. - -## Timeout Configuration - -Local inference requests use a default timeout of 180 seconds. -Large prompts on hardware such as DGX Spark can exceed shorter timeouts, so NemoClaw sets a higher default for Ollama, vLLM, NIM, and compatible-endpoint setup. - -To override the timeout, set the `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` environment variable before onboarding: - -```console -$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 -$ nemoclaw onboard -``` - -The value is in seconds. -This setting is baked into the sandbox at build time. -Changing it after onboarding requires re-running `nemoclaw onboard`. - -`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` only governs the inference-server validation probe. -The post-create readiness wait (image build, gateway upload, in-sandbox boot) has its own budget, `NEMOCLAW_SANDBOX_READY_TIMEOUT`, also defaulting to 180 seconds. -On hosts where the sandbox image takes minutes to build or upload — large quantised models, DGX Station first runs, or remote VMs over a slow link — raise both together: - -```console -$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 -$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 -$ nemoclaw onboard -``` - -If onboard ends with `Sandbox '' was created but did not become ready within 180s`, refer to Troubleshooting (use the `nemoclaw-user-reference` skill). - -## Verify the Configuration - -After onboarding completes, confirm the active provider and model. - -```console -$ nemoclaw status -``` - -The output shows the provider label (for example, "Local vLLM" or "Other OpenAI-compatible endpoint") and the active model. -For Local Ollama, status also checks the authenticated proxy when a proxy token is available. -If `Inference` is healthy but `Inference (auth proxy)` is not, rerun onboarding to repair the proxy path that sandbox requests use. - -## Switch Models at Runtime - -You can change the model without re-running onboard. -Refer to [Switch Inference Models](switch-inference-providers.md) for the full procedure. - -For compatible endpoints, the command is: - -```console -$ nemoclaw inference set --provider compatible-endpoint --model -``` - -If the provider itself needs to change (for example, switching from vLLM to a cloud API), pass the new provider to `nemoclaw inference set`. diff --git a/skills/nemoclaw-user-configure-security/SKILL.md b/skills/nemoclaw-user-configure-security/SKILL.md deleted file mode 100644 index 5513d995232..00000000000 --- a/skills/nemoclaw-user-configure-security/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: "nemoclaw-user-configure-security" -description: "Presents a risk framework for every configurable security control in NemoClaw. Use when evaluating security posture, reviewing sandbox security defaults, or assessing control trade-offs. Trigger keywords - nemoclaw security best practices, sandbox security controls risk framework, nemoclaw credential storage, openshell provider, api key security, openclaw security controls, nemoclaw security boundary, prompt injection, tool access control." -license: "Apache-2.0" ---- -# NemoClaw Security Best Practices: Controls, Risks, and Posture Profiles - -## References - -- **Load [references/best-practices.md](references/best-practices.md)** when evaluating security posture, reviewing sandbox security defaults, or assessing control trade-offs. Presents a risk framework for every configurable security control in NemoClaw. -- **Load [references/openclaw-controls.md](references/openclaw-controls.md)** when reviewing the security boundary between NemoClaw and OpenClaw or assessing what NemoClaw does not cover. Lists OpenClaw security controls that operate independently of NemoClaw, including prompt injection detection, tool access control, rate limiting, environment variable policy, audit framework, supply chain scanning, messaging access policy, context visibility, and safe regex. -- **Load [references/credential-storage.md](references/credential-storage.md)** when reviewing how credentials are handled, locating a stored credential, or assessing the storage threat model. Covers where NemoClaw stores provider credentials, why nothing is persisted to host disk, and how the OpenShell gateway acts as the single system of record. diff --git a/skills/nemoclaw-user-configure-security/evals/evals.json b/skills/nemoclaw-user-configure-security/evals/evals.json deleted file mode 100644 index 06855e83a26..00000000000 --- a/skills/nemoclaw-user-configure-security/evals/evals.json +++ /dev/null @@ -1,128 +0,0 @@ -[ - { - "id": "docs-security-best-practices-001", - "question": "I'm evaluating NemoClaw security best practices. Help me understand the risk posture of each configurable control so I can justify the setup to my team or security reviewers.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the risk posture of each configurable control and gives enough concrete guidance, decision criteria, verification steps, or risk framing to justify the setup to my team or security reviewers.", - "expected_behavior": [ - "The output directly addresses the user's situation: evaluating NemoClaw security best practices.", - "The AI coding assistant loads the expected_skill and references/best-practices.md", - "The output helps the user understand the risk posture of each configurable control with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to justify the setup to my team or security reviewers.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." - ] - }, - { - "id": "docs-security-best-practices-002", - "question": "I'm balancing developer convenience with lockdown. Help me compare the trade-offs of changing security controls so I can choose a posture that fits the environment.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user compare the trade-offs of changing security controls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose a posture that fits the environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: balancing developer convenience with lockdown.", - "The AI coding assistant loads the expected_skill and references/best-practices.md", - "The output helps the user compare the trade-offs of changing security controls with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose a posture that fits the environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." - ] - }, - { - "id": "docs-security-best-practices-003", - "question": "I'm preparing for production-like use. Help me see which defaults are acceptable and which require changes so I can avoid shipping with accidental weak spots.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user see which defaults are acceptable and which require changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid shipping with accidental weak spots.", - "expected_behavior": [ - "The output directly addresses the user's situation: preparing for production-like use.", - "The AI coding assistant loads the expected_skill and references/best-practices.md", - "The output helps the user see which defaults are acceptable and which require changes with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid shipping with accidental weak spots.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/best-practices.md file." - ] - }, - { - "id": "docs-security-credential-storage-001", - "question": "I'm inspecting NemoClaw credential storage. Help me verify how secrets are stored and protected so I can decide whether the setup meets my secret-handling expectations.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user verify how secrets are stored and protected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether the setup meets my secret-handling expectations.", - "expected_behavior": [ - "The output directly addresses the user's situation: inspecting NemoClaw credential storage.", - "The AI coding assistant loads the expected_skill and references/credential-storage.md", - "The output helps the user verify how secrets are stored and protected with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether the setup meets my secret-handling expectations.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." - ] - }, - { - "id": "docs-security-credential-storage-002", - "question": "I'm tracing where credentials live. Help me distinguish host, gateway, and sandbox storage boundaries so I can avoid assuming secrets are available in the wrong place.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user distinguish host, gateway, and sandbox storage boundaries and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid assuming secrets are available in the wrong place.", - "expected_behavior": [ - "The output directly addresses the user's situation: tracing where credentials live.", - "The AI coding assistant loads the expected_skill and references/credential-storage.md", - "The output helps the user distinguish host, gateway, and sandbox storage boundaries with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid assuming secrets are available in the wrong place.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." - ] - }, - { - "id": "docs-security-credential-storage-003", - "question": "I'm rotating or inspecting credentials. Help me follow a workflow that does not print secrets in logs or docs so I can recover or update access safely.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user follow a workflow that does not print secrets in logs or docs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to recover or update access safely.", - "expected_behavior": [ - "The output directly addresses the user's situation: rotating or inspecting credentials.", - "The AI coding assistant loads the expected_skill and references/credential-storage.md", - "The output helps the user follow a workflow that does not print secrets in logs or docs with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to recover or update access safely.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/credential-storage.md file." - ] - }, - { - "id": "docs-security-openclaw-controls-001", - "question": "I'm reading about controls outside NemoClaw's scope. Help me understand which security responsibilities remain with OpenClaw so I can avoid treating sandbox isolation as a complete application security model.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user understand which security responsibilities remain with OpenClaw and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid treating sandbox isolation as a complete application security model.", - "expected_behavior": [ - "The output directly addresses the user's situation: reading about controls outside NemoClaw's scope.", - "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", - "The output helps the user understand which security responsibilities remain with OpenClaw with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid treating sandbox isolation as a complete application security model.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." - ] - }, - { - "id": "docs-security-openclaw-controls-002", - "question": "I'm assessing application-layer agent risk. Help me identify the controls NemoClaw does not add so I can plan separate mitigations for authentication, prompt handling, and agent behavior.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user identify the controls NemoClaw does not add and gives enough concrete guidance, decision criteria, verification steps, or risk framing to plan separate mitigations for authentication, prompt handling, and agent behavior.", - "expected_behavior": [ - "The output directly addresses the user's situation: assessing application-layer agent risk.", - "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", - "The output helps the user identify the controls NemoClaw does not add with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to plan separate mitigations for authentication, prompt handling, and agent behavior.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." - ] - }, - { - "id": "docs-security-openclaw-controls-003", - "question": "I'm documenting the security boundary. Help me explain where NemoClaw protection ends so I can set accurate expectations for reviewers and operators.", - "expected_skill": "nemoclaw-user-configure-security", - "ground_truth": "A NemoClaw-specific answer that helps the user explain where NemoClaw protection ends and gives enough concrete guidance, decision criteria, verification steps, or risk framing to set accurate expectations for reviewers and operators.", - "expected_behavior": [ - "The output directly addresses the user's situation: documenting the security boundary.", - "The AI coding assistant loads the expected_skill and references/openclaw-controls.md", - "The output helps the user explain where NemoClaw protection ends with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to set accurate expectations for reviewers and operators.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/openclaw-controls.md file." - ] - } -] diff --git a/skills/nemoclaw-user-configure-security/references/best-practices.md b/skills/nemoclaw-user-configure-security/references/best-practices.md deleted file mode 100644 index 44cb862b1e0..00000000000 --- a/skills/nemoclaw-user-configure-security/references/best-practices.md +++ /dev/null @@ -1,509 +0,0 @@ -# NemoClaw Security Best Practices: Controls, Risks, and Posture Profiles - -NemoClaw ships with deny-by-default security controls across four layers: network, filesystem, process, and inference. -You can tune every control, but each change shifts the risk profile. -This page documents every configurable knob, its default, what it protects, the concrete risk of relaxing it, and a recommendation for common use cases. - -For background on how the layers fit together, refer to How It Works (use the `nemoclaw-user-overview` skill). - -## Protection Layers at a Glance - -NemoClaw enforces security at four layers. -NemoClaw locks some when it creates the sandbox and requires a restart to change them. -You can hot-reload others while the sandbox runs. - -The following diagram shows the default posture immediately after `nemoclaw onboard`, before you approve any endpoints or apply any presets. - -```mermaid -flowchart TB - subgraph HOST["Your Machine: default posture after nemoclaw onboard"] - direction TB - - YOU["👤 Operator"] - - subgraph NC["NemoClaw + OpenShell"] - direction TB - - subgraph SB["Sandbox: the agent's isolated world"] - direction LR - PROC["⚙️ Process Layer
Controls what the agent can execute"] - FS["📁 Filesystem Layer
Controls what the agent can read and write"] - AGENT["🤖 Agent"] - end - - subgraph GW["Gateway: the gatekeeper"] - direction LR - NET["🌐 Network Layer
Controls where the agent can connect"] - INF["🧠 Inference Layer
Controls which AI models the agent can use"] - end - end - end - - OUTSIDE["🌍 Outside World
Internet · AI Providers · APIs"] - - AGENT -- "all requests" --> GW - GW -- "approved only" --> OUTSIDE - YOU -. "approve / deny" .-> GW - - classDef agent fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold - classDef locked fill:#1a1a1a,stroke:#76b900,color:#fff,stroke-width:2px - classDef hot fill:#333,stroke:#76b900,color:#e6f2cc,stroke-width:2px - classDef external fill:#f5f5f5,stroke:#ccc,color:#1a1a1a,stroke-width:1px - classDef operator fill:#fff,stroke:#76b900,color:#1a1a1a,stroke-width:2px,font-weight:bold - - class AGENT agent - class PROC,FS locked - class NET,INF hot - class OUTSIDE external - class YOU operator - - style HOST fill:none,stroke:#76b900,stroke-width:2px,color:#1a1a1a - style NC fill:none,stroke:#76b900,stroke-width:1px,stroke-dasharray:5 5,color:#1a1a1a - style SB fill:#f5faed,stroke:#76b900,stroke-width:2px,color:#1a1a1a - style GW fill:#2a2a2a,stroke:#76b900,stroke-width:2px,color:#fff -``` - -| Layer | What it protects | Enforcement point | Changeable at runtime | -| --- | --- | --- | --- | -| Network | Unauthorized outbound connections and data exfiltration. | OpenShell gateway | Yes. Use `openshell policy set` or operator approval. | -| Filesystem | System binary tampering, credential theft, config manipulation. | Landlock LSM + container mounts | Landlock layout: no. Requires sandbox re-creation. Use host-side NemoClaw commands for durable config changes. | -| Process | Privilege escalation, fork bombs, syscall abuse. | Container runtime (Docker/K8s `securityContext`) | No. Requires sandbox re-creation. | -| Inference | Credential exposure, unauthorized model access, cost overruns. | OpenShell gateway | Yes. Use `nemoclaw inference set`. | - -## Network Controls - -NemoClaw controls which hosts, ports, and HTTP methods the sandbox can reach, and lets operators approve or deny requests in real time. - -### Deny-by-Default Egress - -The sandbox blocks all outbound connections unless you explicitly list the endpoint in the policy file `nemoclaw-blueprint/policies/openclaw-sandbox.yaml`. - -| Aspect | Detail | -|---|---| -| Default | All egress denied. Only endpoints in the baseline policy can receive traffic. | -| What you can change | Add endpoints to the policy file (static) or with `openshell policy set` (dynamic). | -| Risk if relaxed | Each allowed endpoint is a potential data exfiltration path. The agent can send workspace content, credentials, or conversation history to any reachable host. | -| Recommendation | Add only endpoints the agent needs for its task. Prefer operator approval for one-off requests over permanently widening the baseline. | - -### Binary-Scoped Endpoint Rules - -Each network policy entry restricts which executables can reach the endpoint using the `binaries` field. - -OpenShell identifies the calling binary by reading `/proc//exe` (the kernel-trusted executable path, not `argv[0]`), walking the process tree for ancestor binaries, and computing a SHA256 hash of each binary on first use. -If someone replaces a binary while the sandbox runs, the hash mismatch triggers an immediate deny. - -| Aspect | Detail | -|---|---| -| Default | Each endpoint restricts access to specific binaries. For example, the `github` preset restricts access so only `/usr/bin/git` can reach `github.com`. Binary paths support glob patterns (`*` matches one path component, `**` matches recursively). | -| What you can change | Add binaries to an endpoint entry, or omit the `binaries` field to allow any executable. | -| Risk if relaxed | Removing binary restrictions lets any process in the sandbox reach the endpoint. An agent could use `curl`, `wget`, or a Python script to exfiltrate data to an allowed host, bypassing the intended usage pattern. | -| Recommendation | Always scope endpoints to the binaries that need them. If the agent needs a host from a new binary, add that binary explicitly rather than removing the restriction. | - -### Path-Scoped HTTP Rules - -Endpoint rules restrict allowed HTTP methods and URL paths. - -| Aspect | Detail | -|---|---| -| Default | Some endpoints allow GET and POST on `/**` (for example, `clawhub.ai`). Others restrict methods and paths to specific API routes (for example, `integrate.api.nvidia.com` allows POST only to inference and embedding paths and GET to model listings). Read-only endpoints such as `docs.openclaw.ai`, the `npm_registry` baseline entry, and the `pypi` preset allow GET only (PyPI also allows HEAD). The `npm` preset is an intentional exception: npm/Yarn registry traffic uses L4 pass-through for Node 22 undici CONNECT compatibility. | -| What you can change | Add methods (PUT, DELETE, PATCH) or restrict paths to specific prefixes. | -| Risk if relaxed | Allowing all methods on an API endpoint gives the agent write and delete access. For example, allowing DELETE on `api.github.com` lets the agent delete repositories. | -| Recommendation | Use GET-only rules for endpoints that the agent only reads. Add write methods only for endpoints where the agent must create or modify resources. Restrict paths to specific API routes when possible. | - -### L4-Only vs L7 Inspection (`protocol` Field) - -All sandbox egress goes through OpenShell's CONNECT proxy. -The `protocol` field on an endpoint controls whether the proxy also inspects individual HTTP requests inside the tunnel. - -| Aspect | Detail | -|---|---| -| Default | Endpoints without a `protocol` field use L4-only enforcement: the proxy checks host, port, and binary identity, then relays the TCP stream without inspecting payloads. Setting `protocol: rest` enables L7 inspection: the proxy auto-detects and terminates TLS, then evaluates each HTTP request's method and path against the endpoint's `rules` or `access` preset. | -| What you can change | Add `protocol: rest` to an endpoint to enable per-request HTTP inspection. Use the `access` preset (`full`, `read-only`, `read-write`) or explicit `rules` to control allowed methods and paths. | -| Risk if relaxed | L4-only endpoints (no `protocol` field) allow the agent to send any data through the tunnel after the initial connection is permitted. The proxy cannot see or filter the HTTP method, path, or body. The `access: full` preset with `protocol: rest` enables inspection but allows all methods and paths, so it does not restrict what the agent can do at the HTTP level. | -| Recommendation | Use `protocol: rest` with specific `rules` for REST APIs where you want method and path control. Use `protocol: rest` with `access: read-only` for read-only endpoints. Omit `protocol` only for non-HTTP protocols (WebSocket, gRPC streaming), endpoints that do not need HTTP inspection, or documented compatibility exceptions that require a client-managed CONNECT tunnel. | - -### Operator Approval Flow - -When the agent reaches an unlisted endpoint, OpenShell blocks the request and prompts the operator in the TUI. - -| Aspect | Detail | -|---|---| -| Default | Enabled. The gateway blocks all unlisted endpoints and requires approval. | -| What you can change | The system merges approved endpoints into the sandbox's policy as a new durable revision. They persist across sandbox restarts within the same sandbox instance. However, when you destroy and recreate the sandbox (for example, by running `nemoclaw onboard`), the policy resets to the baseline defined in the blueprint. | -| Risk if relaxed | Approving an endpoint permanently widens the running sandbox's policy. If you approve a broad domain (such as a CDN that hosts arbitrary content), the agent can fetch anything from that domain until you destroy and recreate the sandbox. | -| Recommendation | Review each blocked request before approving. If you find yourself approving the same endpoint repeatedly, add it to the baseline policy with appropriate binary and path restrictions. To reset approved endpoints, destroy and recreate the sandbox. | - -### Policy Presets - -NemoClaw ships preset policy files in `nemoclaw-blueprint/policies/presets/` for common integrations. - -| Preset | What it enables | Key risk | -|---|---|---| -| `brave` | Brave Search API. | Agent can issue search queries. | -| `brew` | Homebrew (Linuxbrew) package manager. The sandbox base image includes the `brew` binary; this preset opens network egress to GitHub and the Homebrew formulae index so `brew install` can fetch bottles. | Allows installing arbitrary Homebrew packages, which may contain malicious code. | -| `discord` | Discord REST API, WebSocket gateway, CDN. | CDN endpoint (`cdn.discordapp.com`) allows GET to any path. WebSocket uses `access: full` (no inspection). | -| `github` | GitHub and GitHub REST API. | Gives agent read/write access to repositories and issues via `git`. | -| `huggingface` | Hugging Face Hub (download-only) and inference router. | Allows downloading arbitrary models and datasets. POST is restricted to the inference router only. | -| `jira` | Atlassian Jira API. | Gives agent read/write access to project issues and comments. | -| `local-inference` | Local Ollama and vLLM through the host gateway. | Allows sandbox access to host-side local inference ports covered by the preset. | -| `npm` | npm and Yarn registries via L4 pass-through. | Allows installing arbitrary npm packages, which may contain malicious code. OpenShell still gates by host, port, and binary, but does not inspect HTTP method, path, or body for this preset. | -| `outlook` | Microsoft 365, Outlook. | Gives agent access to email. | -| `pypi` | Python Package Index (GET and HEAD only). | Allows installing arbitrary Python packages, which may contain malicious code. Publishing is blocked. | -| `slack` | Slack API, Socket Mode, webhooks. | WebSocket uses `access: full`. Agent can post to any channel the bot token has access to. | -| `telegram` | Telegram Bot API. | Agent can send messages to any chat the bot token has access to. | - -**Recommendation:** Apply presets only when the agent's task requires the integration. Review the preset's YAML file before applying to understand the endpoints, methods, and binary restrictions it adds. - -## Filesystem Controls - -NemoClaw restricts which paths the agent can read and write, protecting system binaries, configuration files, and gateway credentials. - -### Read-Only System Paths - -The container mounts system directories read-only to prevent the agent from modifying binaries, libraries, or configuration files. - -| Aspect | Detail | -|---|---| -| Default | `/usr`, `/lib`, `/proc`, `/dev/urandom`, `/app`, `/etc`, `/var/log` are read-only. | -| What you can change | Add or remove paths in the `filesystem_policy.read_only` section of the policy file. | -| Risk if relaxed | Making `/usr` or `/lib` writable lets the agent replace system binaries (such as `curl` or `node`) with trojanized versions. Making `/etc` writable lets the agent modify DNS resolution, TLS trust stores, or user accounts. | -| Recommendation | Never make system paths writable. If the agent needs a writable location for generated files, use a subdirectory of `/sandbox`. | - -### Agent Config Directory - -The `/sandbox/.openclaw` directory contains the OpenClaw gateway configuration (model routing, CORS settings, channel config). -The current entrypoint reads the gateway auth token from OpenClaw config when present, exports it as `OPENCLAW_GATEWAY_TOKEN`, and writes it to `/tmp/nemoclaw-proxy-env.sh` so interactive sandbox sessions can reach the gateway through system-wide shell hooks. -In root mode, the gateway process still runs as the separate `gateway` user, but the token is intentionally available to sandbox shells for local gateway access. - -Writable agent state such as plugins, skills, hooks, and workspace metadata lives directly under `/sandbox/.openclaw`. - -By default, this directory starts writable so the agent can manage its own config, install skills, and write to standard home-directory paths natively. -For sensitive workloads, use a reviewed host-side immutability workflow after initial setup so config and writable state entry points cannot be changed by the sandbox user. - -- **DAC permissions (default).** The sandbox user owns `/sandbox/.openclaw` with mode `2770` (setgid `sandbox:sandbox`) and `openclaw.json` with mode `660`, so the agent and its group can read and write config directly. A reviewed host-side immutability workflow should compare the intended ownership and mode with the live sandbox filesystem before treating the config tree as locked. -- **Config integrity hash.** The image includes a SHA256 hash of `openclaw.json`. In the default mutable state, `.config-hash` is sandbox-owned and is not a tamper-proof trust anchor, so startup does not fail closed on that hash. When the hash is root-owned and read-only, startup enforces it and refuses to start if the hash does not match. -- **Gateway token environment.** The gateway exports `OPENCLAW_GATEWAY_TOKEN` and writes it to `/tmp/nemoclaw-proxy-env.sh` for interactive sandbox sessions. Keep this in mind when deciding whether a workload should run with mutable config or an immutable config posture. - -| Aspect | Detail | -|---|---| -| Default | The sandbox keeps `/sandbox/.openclaw` writable (`2770 sandbox:sandbox`), sets `openclaw.json` to `660 sandbox:sandbox`, lets the agent manage state directly, and has the gateway place `OPENCLAW_GATEWAY_TOKEN` in `/tmp/nemoclaw-proxy-env.sh` for interactive shells. | -| What you can change | Apply a reviewed host-side immutability workflow to lock config and state directories with DAC permissions and the immutable flag where available. | -| Risk of default | A writable `.openclaw` directory lets the agent modify its own gateway config: disabling CORS or redirecting inference to an attacker-controlled endpoint. | -| Recommendation | For always-on assistants handling sensitive workloads, lock config after initial setup. For development workflows, the writable default is appropriate. | - -### Writable Paths - -The agent has read-write access to `/sandbox`, `/tmp`, and `/dev/null`. - -| Aspect | Detail | -|---|---| -| Default | `/sandbox` (agent workspace), `/tmp` (temporary files), `/dev/null`. | -| What you can change | Add additional writable paths in `filesystem_policy.read_write`. | -| Risk if relaxed | Each additional writable path expands the agent's ability to persist data and potentially modify system behavior. Adding `/var` lets the agent write to log directories. Adding `/home` gives access to other user directories. | -| Recommendation | Keep writable paths to `/sandbox` and `/tmp`. If the agent needs a persistent working directory, create a subdirectory under `/sandbox`. | - -### Landlock LSM Enforcement - -Landlock is a Linux Security Module that enforces filesystem access rules at the kernel level. - -| Aspect | Detail | -|---|---| -| Default | `compatibility: best_effort`. The entrypoint applies Landlock rules when the kernel supports them and silently skips them on older kernels. | -| What you can change | This is a NemoClaw default, not a user-facing knob. | -| Risk if relaxed | On kernels without Landlock support (pre-5.13), filesystem restrictions rely solely on container mount configuration, which is less granular. | -| Recommendation | Run on a kernel that supports Landlock (5.13+). Ubuntu 22.04 LTS and later include Landlock support. | - -## Process Controls - -NemoClaw limits the capabilities, user privileges, and resource quotas available to processes inside the sandbox. - -### Capability Drops - -The entrypoint drops dangerous Linux capabilities from the bounding set at startup using `capsh`. -This limits what capabilities any child process (gateway, sandbox, agent) can ever acquire. -When the entrypoint switches from root to the `sandbox` and `gateway` users, it uses `setpriv` when available to remove the remaining privilege-separation capabilities from the child process at the same time as the user change. - -The initial entrypoint drop removes `cap_sys_admin`, `cap_sys_ptrace`, `cap_net_raw`, `cap_dac_override`, `cap_sys_chroot`, `cap_fsetid`, `cap_setfcap`, `cap_mknod`, `cap_audit_write`, and `cap_net_bind_service`. -During `setpriv` step-down, the child process also loses `cap_setuid`, `cap_setgid`, `cap_fowner`, `cap_chown`, and `cap_kill`. - -This is best-effort: if `capsh` is not available or `CAP_SETPCAP` is not in the bounding set, the entrypoint logs a warning and continues with the default capability set. -If `setpriv` is unavailable, the entrypoint falls back to `gosu` and logs a warning that the remaining bounding-set capabilities were retained for the child process. -For additional protection, pass `--cap-drop=ALL` with `docker run` or Compose (see Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill)). - -| Aspect | Detail | -|---|---| -| Default | The entrypoint drops dangerous capabilities at startup using `capsh`, then uses `setpriv` during user step-down when possible. Best-effort. | -| What you can change | When launching with `docker run` directly, pass `--cap-drop=ALL --cap-add=NET_BIND_SERVICE` for stricter enforcement. In the standard NemoClaw flow (with `nemoclaw onboard`), the entrypoint handles capability dropping automatically. | -| Risk if relaxed | `CAP_SYS_ADMIN` and `CAP_SYS_PTRACE` expand kernel and process attack surface. `CAP_NET_RAW` allows raw socket access for network sniffing. `CAP_DAC_OVERRIDE` bypasses filesystem permission checks. If `capsh` or `setpriv` cannot run, the container retains more of the runtime-provided capability set. | -| Recommendation | Run on an image that includes `capsh` and `setpriv` (the NemoClaw image includes them). For defense-in-depth, also pass `--cap-drop=ALL` at the container runtime level. | - -### Gateway Process Isolation - -The OpenClaw gateway runs as a separate `gateway` user, not as the `sandbox` user that runs the agent. - -| Aspect | Detail | -|---|---| -| Default | The entrypoint starts the gateway process using `gosu gateway`, isolating it from the agent's `sandbox` user. | -| What you can change | This is not a user-facing knob. The entrypoint enforces it when running as root. In non-root mode (when OpenShell sets `no-new-privileges`), gateway process isolation does not work because `gosu` cannot change users. | -| Risk if relaxed | If the gateway and agent run as the same user, the agent can kill the gateway process and restart it with a tampered configuration (the "fake-HOME" attack). | -| Recommendation | No action needed. The entrypoint handles this automatically. Be aware that non-root mode disables this isolation. | - -### No New Privileges - -The `no-new-privileges` flag prevents processes from gaining additional privileges through setuid binaries or capability inheritance. - -| Aspect | Detail | -|---|---| -| Default | OpenShell sets `PR_SET_NO_NEW_PRIVS` using `prctl()` inside the sandbox process as part of the seccomp filter setup. The NemoClaw Compose example also shows the equivalent `security_opt: no-new-privileges:true` setting. | -| What you can change | OpenShell's seccomp path enforces this inside the sandbox. It is not a user-facing knob. | -| Risk if relaxed | Without this flag, a compromised process could execute a setuid binary to escalate to root inside the container, then attempt container escape techniques. | -| Recommendation | No action needed. OpenShell enforces this automatically when the sandbox network policy is active. This flag prevents `gosu` from switching users, so non-root mode disables gateway process isolation in the NemoClaw entrypoint. | - -### Process Limit - -A process limit caps the number of processes the sandbox user can spawn. -The entrypoint sets both soft and hard limits using `ulimit -u 512`. -This is best-effort: if the container runtime restricts `ulimit` modification, the entrypoint logs a security warning and continues without the limit. - -| Aspect | Detail | -|---|---| -| Default | 512 processes (`ulimit -u 512`), best-effort. | -| What you can change | Increase or decrease the limit with `--ulimit nproc=N:N` in `docker run` or the `ulimits` section in Compose. The runtime-level ulimit takes precedence over the entrypoint's setting. | -| Risk if relaxed | Removing or raising the limit makes the sandbox vulnerable to fork-bomb attacks, where a runaway process spawns children until the host runs out of resources. If the entrypoint cannot set the limit (logs `[SECURITY] Could not set soft/hard nproc limit`), the container runs without process limits. | -| Recommendation | Keep the default at 512. If the agent runs workloads that spawn many child processes (such as parallel test runners), increase to 1024 and monitor host resource usage. If the entrypoint logs a warning about ulimit restrictions, set the limit through the container runtime instead. | - -### Non-Root User - -The sandbox runs agent processes as a dedicated `sandbox` user and group. -The entrypoint starts as root for privilege separation, then drops to the `sandbox` user for all agent commands. - -| Aspect | Detail | -|---|---| -| Default | `run_as_user: sandbox`, `run_as_group: sandbox`. A separate `gateway` user runs the gateway process. | -| What you can change | Change the `process` section in the policy file to run as a different user. | -| Risk if relaxed | Running as `root` inside the container gives the agent access to modify any file in the container filesystem and increases the impact of container escape vulnerabilities. | -| Recommendation | Never run as root. Keep the `sandbox` user. | - -### PATH Hardening - -The entrypoint locks the `PATH` environment variable to system directories, preventing the agent from injecting malicious binaries into command resolution. - -| Aspect | Detail | -|---|---| -| Default | The entrypoint sets `PATH` to `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` at startup. | -| What you can change | This is not a user-facing knob. The entrypoint enforces it. | -| Risk if relaxed | Without PATH hardening, the agent could create an executable named `curl` or `git` in a writable directory earlier in the PATH, intercepting commands run by the entrypoint or other processes. | -| Recommendation | No action needed. The entrypoint handles this automatically. | - -### Build Toolchain Removal - -The Dockerfile removes compilers and network probes from the runtime image. - -| Aspect | Detail | -|---|---| -| Default | The Dockerfile purges `gcc`, `gcc-12`, `g++`, `g++-12`, `cpp`, `cpp-12`, `make`, `netcat-openbsd`, `netcat-traditional`, and `ncat` from the sandbox image. | -| What you can change | Modify the Dockerfile to keep these tools, or install them at runtime if package manager access is allowed. | -| Risk if relaxed | A compiler lets the agent build arbitrary native code, including kernel exploits or custom network tools. `netcat` enables arbitrary TCP connections that bypass HTTP-level policy enforcement. | -| Recommendation | Keep build tools removed. If the agent needs to compile code, run the build in a separate, purpose-built container and copy artifacts into the sandbox. | - -### Image Digest Pinning - -The blueprint references the sandbox image by an immutable `@sha256:` digest instead of a mutable tag such as `:latest`. -A registry compromise or accidental force-push cannot silently swap the sandbox image. - -| Aspect | Detail | -|---|---| -| Default | `nemoclaw-blueprint/blueprint.yaml` pins the sandbox image by digest. A CI regression test blocks any mutable-tag reference from merging. | -| What you can change | Contributors bumping the sandbox image must update the digest in `blueprint.yaml`. Release tooling should rewrite the digest automatically. | -| Risk if relaxed | Reverting to a mutable tag (`:latest`) allows a registry-side change to replace the sandbox image without any blueprint update, which is a supply-chain risk. | -| Recommendation | Always reference the sandbox image by digest. If you build a custom image with `nemoclaw onboard --from`, the digest constraint does not apply to your local build. | - -### Auth Profile Permissions - -The entrypoint and migration flows enforce `chmod 600` on all `auth-profiles.json` files under `~/.openclaw`. -This prevents other users on the host from reading stored credentials. - -| Aspect | Detail | -|---|---| -| Default | `600` permissions applied recursively at startup and after migration restores. | -| What you can change | This is not a user-facing knob. The entrypoint enforces it. | -| Risk if relaxed | Looser permissions let other users or processes on the host read provider API keys and tokens stored in auth profiles. | -| Recommendation | No action needed. If you see a `permission denied` error when reading auth profiles, verify that you are running as the same user who created them. | - -## Gateway Authentication Controls - -The OpenClaw gateway authenticates devices that connect to the Control UI dashboard. -NemoClaw hardens these defaults at image build time. - -### Device Authentication - -Device authentication requires each connecting device to go through a pairing flow before it can interact with the gateway. - -| Aspect | Detail | -|---|---| -| Default | Enabled. The gateway requires device pairing for all connections. | -| What you can change | Set `NEMOCLAW_DISABLE_DEVICE_AUTH=1` as a Docker build argument to disable device authentication. This is a build-time setting baked into `openclaw.json` and verified by hash at startup. | -| Risk if relaxed | Disabling device auth allows any device on the network to connect to the gateway without proving identity. This is dangerous when combined with LAN-bind changes or cloudflared tunnels in remote deployments, resulting in an unauthenticated, publicly reachable dashboard. | -| Recommendation | Keep device auth enabled (the default). Only disable it for headless or development environments where no untrusted devices can reach the gateway. | - -### Gateway Bind Address - -NemoClaw binds the OpenShell gateway to loopback by default. - -| Aspect | Detail | -|---|---| -| Default | `NEMOCLAW_GATEWAY_BIND_ADDRESS=127.0.0.1`. | -| What you can change | Set `NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0` before onboarding to listen on all IPv4 interfaces. | -| Risk if relaxed | Other hosts on the network may be able to reach the OpenShell gateway. | -| Recommendation | Keep the loopback default unless the gateway must be reachable from another host. | - -### Insecure Auth Derivation - -The `allowInsecureAuth` setting controls whether the gateway permits non-HTTPS authentication. - -| Aspect | Detail | -|---|---| -| Default | Derived from the `CHAT_UI_URL` scheme at build time. When the URL uses `http://` (local development), insecure auth is allowed. When it uses `https://` (remote or production), insecure auth is blocked. | -| What you can change | This is derived automatically from `CHAT_UI_URL`. Set `CHAT_UI_URL` to an `https://` URL to enforce secure auth. | -| Risk if relaxed | Allowing insecure auth over HTTPS defeats the purpose of TLS, because authentication tokens transit in cleartext. | -| Recommendation | Use `https://` for any deployment accessible beyond `localhost`. The default local URL (`http://127.0.0.1:18789`) correctly allows insecure auth for local development. | - -### Auto-Pair Client Allowlist - -The auto-pair watcher automatically approves device pairing requests from recognized clients, so you do not need to manually approve the Control UI. - -| Aspect | Detail | -|---|---| -| Default | The watcher approves devices with `clientId` set to `openclaw-control-ui` or `clientMode` set to `webchat`. All other clients are rejected and logged. | -| What you can change | This is not a user-facing knob. The allowlist is defined in the entrypoint script. | -| Risk if relaxed | Approving all device types without validation lets rogue or unexpected clients pair with the gateway unchallenged. | -| Recommendation | No action needed. The entrypoint handles this automatically. If you see `[auto-pair] rejected unknown client=...` in the logs, investigate the source of the unexpected connection. | - -### CLI Secret Redaction - -The CLI automatically redacts secret patterns (API keys, bearer tokens, provider credentials) from command output and error messages before logging them. - -| Aspect | Detail | -|---|---| -| Default | Enabled. The runner redacts secrets from stdout, stderr, and thrown error messages. | -| What you can change | This is not a user-facing knob. The CLI enforces it on all command output paths. | -| Risk if relaxed | Without redaction, secrets could appear in terminal scrollback, log files, or debug output shared in bug reports. | -| Recommendation | No action needed. If you share `nemoclaw debug` output, verify that no secrets appear in the collected diagnostics. | - -### Memory Secret Scanner - -The NemoClaw plugin blocks the agent from writing likely secrets (API keys, tokens, private keys) into persistent memory files. -The scanner intercepts Write, Edit, and similar tool calls targeting memory and workspace paths before they reach disk. - -| Aspect | Detail | -|---|---| -| Default | Enabled. The plugin registers a `before_tool_call` hook that scans for 14 high-confidence secret patterns. | -| What it covers | Examples include `.openclaw/memory/`, `.openclaw/workspace/`, `.openclaw/agents/`, `.openclaw/skills/`, `.openclaw/hooks/`, `.openclaw/credentials/`, `.openclaw/openclaw.json`, `.nemoclaw/`, and `MEMORY.md`; the exact coverage is defined by `MEMORY_PATH_SEGMENTS` and enforced through `isMemoryPath()`. | -| What you can change | This is not a user-facing knob. The plugin enforces it automatically. | -| Risk if relaxed | Without scanning, the agent could persist API keys or tokens in memory files that survive across sessions and backups. | -| Recommendation | No action needed. If a write is blocked, the agent receives an actionable error listing the detected patterns. | - -## Inference Controls - -OpenShell routes all inference traffic through the gateway to isolate provider credentials from the sandbox. - -### Routed Inference through `inference.local` - -The OpenShell gateway intercepts all inference requests from the agent and routes them to the configured provider. -The agent never receives the provider API key. - -| Aspect | Detail | -|---|---| -| Default | The agent talks to `inference.local`. The host owns the credential and upstream endpoint. | -| What you can change | You cannot configure this architecture. The system always enforces it. | -| Risk if bypassed | If the agent could reach an inference endpoint directly (by adding it to the network policy), it would need an API key. Since the sandbox does not contain credentials, this acts as defense-in-depth. However, adding an inference provider's host to the network policy without going through OpenShell routing could let the agent use a stolen or hardcoded key. | -| Recommendation | Do not add inference provider hosts (such as `api.openai.com` or `api.anthropic.com`) to the network policy. Use OpenShell inference routing instead. | - -### Provider Trust Tiers - -Different inference providers have different trust and cost profiles. - -| Provider | Trust level | Cost risk | Data handling | -|---|---|---|---| -| NVIDIA Endpoints | High. Hosted on `build.nvidia.com`. | Pay-per-token with an API key. Unattended agents can accumulate cost. | NVIDIA infrastructure processes requests. | -| OpenAI | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to OpenAI data policies. | -| Anthropic | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to Anthropic data policies. | -| Google Gemini | High. Commercial API. | Pay-per-token. Same cost risk as NVIDIA Endpoints. | Subject to Google data policies. | -| Local Ollama | Self-hosted. No data leaves the machine. | No per-token cost. GPU/CPU resource cost. | Data stays local. | -| Custom compatible endpoint | Varies. Depends on the proxy or gateway. | Varies. | Depends on the endpoint operator. | - -**Recommendation:** For sensitive workloads, use local Ollama to keep data on-premise. For general use, NVIDIA Endpoints provide a good balance of capability and trust. Review the data policies of any cloud provider you use. - -### Experimental Providers - -The `NEMOCLAW_EXPERIMENTAL=1` environment variable gates local NVIDIA NIM and generic Linux managed vLLM install/start. DGX Spark and DGX Station managed vLLM entries are offered by default, and an already-running vLLM server on `localhost:8000` is offered in the menu without a flag, because selecting either is an explicit user action. - -| Aspect | Detail | -|---|---| -| Default | Local NVIDIA NIM and generic Linux managed vLLM install/start are hidden. DGX Spark and DGX Station managed vLLM entries, plus already-running vLLM on `localhost:8000`, are offered when detected. | -| What you can change | Set `NEMOCLAW_EXPERIMENTAL=1` before running `nemoclaw onboard` to surface Local NIM and generic Linux managed vLLM. To request only the managed vLLM path non-interactively, set `NEMOCLAW_PROVIDER=install-vllm`. | -| Risk if selected | NemoClaw has not fully validated these providers. NIM requires a NIM-capable GPU. The managed vLLM path pulls a container image and starts it on a supported NVIDIA GPU host. Misconfiguration can cause failed inference or unexpected behavior. | -| Recommendation | Use experimental providers only for evaluation. Do not rely on them for always-on assistants. | - -## Posture Profiles - -The following profiles describe how to configure NemoClaw for different use cases. -These are not separate policy files. -They provide guidance on which controls to keep tight or relax. - -### Locked-Down (Default) - -Use for always-on assistants with minimal external access. - -- Keep all defaults. Do not add presets. -- Use operator approval for any endpoint the agent requests. -- Use NVIDIA Endpoints or local Ollama for inference. -- Monitor the TUI for unexpected network requests. - -### Development - -Use when the agent needs package registries, Docker Hub, or broader GitHub access during development tasks. - -- Apply the `pypi` and `npm` presets for package installation. -- Keep binary restrictions on all presets. -- Review the agent's network activity periodically with `openshell term`. -- Use operator approval for any endpoint not covered by a preset. - -### Integration Testing - -Use when the agent talks to internal APIs or third-party services during testing. - -- Add custom endpoint entries with tight path and method restrictions. -- Use `protocol: rest` for all HTTP APIs to maintain inspection. -- Use operator approval for unknown endpoints during test runs. -- Review and clean up the baseline policy after testing. Remove endpoints that are no longer needed. - -## Common Mistakes - -The following patterns weaken security without providing meaningful benefit. - -| Mistake | Why it matters | What to do instead | -|---------|---------------|-------------------| -| Omitting `protocol: rest` on REST API endpoints without a compatibility reason | Endpoints without a `protocol` field use L4-only enforcement. The proxy allows the TCP stream through after checking host, port, and binary, but cannot see or filter individual HTTP requests. | Add `protocol: rest` with explicit `rules` to enable per-request method and path control on REST APIs. Use L4 pass-through only for documented cases such as npm/Yarn on Node 22, where the client requires a CONNECT tunnel that L7 inspection would break. | -| Adding endpoints to the baseline policy for one-off requests | Adding an endpoint to the baseline policy makes it permanently reachable across all sandbox instances. | Use operator approval. Approved endpoints persist within the sandbox instance but reset when you destroy and recreate the sandbox. | -| Relying solely on the entrypoint for capability drops | The entrypoint drops dangerous capabilities using `capsh`, but this is best-effort. If `capsh` is unavailable or `CAP_SETPCAP` is not in the bounding set, the container runs with the default capability set. | Pass `--cap-drop=ALL` at the container runtime level as defense-in-depth. | -| Leaving `/sandbox/.openclaw` writable on sensitive workloads | This directory contains the OpenClaw gateway configuration. A writable `.openclaw` lets the agent disable CORS, redirect inference routing, or weaken gateway protections. | Lock config for always-on assistants handling sensitive data. | -| Adding inference provider hosts to the network policy | Direct network access to an inference host bypasses credential isolation and usage tracking. | Use OpenShell inference routing instead of adding hosts like `api.openai.com` or `api.anthropic.com` to the network policy. | -| Disabling device auth for remote deployments | Without device auth, any device on the network can connect to the gateway without pairing. Combined with a cloudflared tunnel, this makes the dashboard publicly accessible and unauthenticated. | Keep `NEMOCLAW_DISABLE_DEVICE_AUTH` at its default (`0`). Only set it to `1` for local headless or development environments. | - -## Known Limitations - -| Limitation | Impact | Mitigation | -|-----------|--------|------------| -| `openclaw agent --local` bypasses gateway | Secret scanning, network policy, and inference auth are not enforced when the agent runs in local mode. | A runtime warning is emitted when `--local` is detected. Avoid `--local` for production workflows. A future OpenClaw-level hook will close this gap. | -| Direct filesystem writes bypass secret scanner | The scanner intercepts OpenClaw tool calls, not raw filesystem writes (e.g., `echo secret > file`). | Landlock restricts writable paths. The scanner is application-layer defense-in-depth, not a filesystem-level control. | -| Base64/hex-encoded secrets are not detected | Content-based regex scanning cannot detect encoded or obfuscated secrets. | Use environment variables or credential stores instead of writing secrets to files. | - -## Related Topics - -- Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference. -- Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for static and dynamic policy changes. -- Approve or Deny Network Requests (use the `nemoclaw-user-manage-policy` skill) for the operator approval flow. -- Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill) for container-level security measures. -- Inference Options (use the `nemoclaw-user-configure-inference` skill) for provider configuration details. -- How It Works (use the `nemoclaw-user-overview` skill) for the protection layer architecture. diff --git a/skills/nemoclaw-user-configure-security/references/credential-storage.md b/skills/nemoclaw-user-configure-security/references/credential-storage.md deleted file mode 100644 index 10476831fa0..00000000000 --- a/skills/nemoclaw-user-configure-security/references/credential-storage.md +++ /dev/null @@ -1,108 +0,0 @@ -# Credential Storage - -NemoClaw does not persist provider credentials to host disk. -The OpenShell gateway is the only system of record for stored credentials. - -When you provide a provider credential — interactively during `nemoclaw onboard` or via an environment variable — NemoClaw holds the value in memory only long enough to register it with the OpenShell gateway through `openshell provider create` or `openshell provider update`. -The gateway stores the credential and the OpenShell L7 proxy substitutes it into outbound requests at egress, so sandboxed agents see placeholders instead of the raw secret. - -The sandbox-side OpenClaw gateway token is generated at container startup and is not rotated through provider credential commands. - -## Where Credentials Live - -Provider credentials live in the OpenShell gateway store. -List what is registered with: - -```console -$ openshell provider list -``` - -Or, equivalently, through NemoClaw: - -```console -$ nemoclaw credentials list -``` - -Both surface the provider names that the gateway holds credentials for. The values themselves cannot be read back from the CLI; this is a deliberate property of OpenShell. - -NemoClaw still keeps non-secret operational state under `~/.nemoclaw/` (such as the sandbox registry). -That directory is created with mode `0700` and contains no credential material. - -## Environment Variables Take Precedence - -When a NemoClaw command needs a credential value during a single run (for example to forward it to an `openshell provider` registration), it reads from `process.env` first. -This means you can: - -- Prefix any command with the credential to override the gateway-stored value: `NVIDIA_API_KEY=nvapi-... nemoclaw onboard` -- Use short-lived or rotated credentials in CI by exporting them once per pipeline run -- Avoid registering credentials in the gateway entirely if your environment supplies them - -## Deploy Reads from Environment Only - -`nemoclaw deploy` (which provisions a remote Brev box) cannot read secrets back from the gateway, so it requires every credential to be present in the host environment at invocation time. -A typical deploy invocation looks like: - -```console -$ NVIDIA_API_KEY=nvapi-... \ - HF_TOKEN=hf_... \ - TELEGRAM_BOT_TOKEN=... \ - nemoclaw deploy my-instance -``` - -For remote vLLM or Hugging Face workflows that need gated model access, `nemoclaw deploy` also forwards `HF_TOKEN` and `HUGGING_FACE_HUB_TOKEN` to the VM when either variable is present. -If a required credential is missing the deploy aborts before any remote work begins. - -## GitHub Tokens - -NemoClaw never persists `GITHUB_TOKEN` itself. -When a private repo requires authentication NemoClaw runs `gh auth token`, which returns whatever the GitHub CLI has stored — without caring about the storage backend. - -The GitHub CLI prefers an OS keychain when one is reachable: macOS Keychain on macOS, Windows Credential Manager on Windows, and Linux Secret Service (libsecret + a running D-Bus session) on Linux. -On hosts where no keychain is reachable (CI runners, headless launches, WSL without a session bus, macOS contexts where Keychain access is blocked, etc.) `gh auth login` falls back to a `gh`-managed file under `~/.config/gh/` with mode `0600`. -NemoClaw treats both backends identically: `gh auth token` returns the value, and NemoClaw stages it in `process.env` for the current run only. - -If `gh` is not installed or not logged in, NemoClaw prompts for a personal access token for that single run; the prompted value is held in process memory and is not written to host disk. -Run `gh auth login` if you want a persistent backing store (whichever one applies on your host) so future runs do not prompt. - -## Migration From Earlier Releases - -Earlier NemoClaw releases stored credentials as plaintext JSON in `~/.nemoclaw/credentials.json` with mode `0600`. -On first `nemoclaw onboard` after upgrading, NemoClaw automatically: - -1. Reads the legacy file. -2. Stages allowlisted credential values into `process.env` for the rest of the run. -3. Re-registers each value with the OpenShell gateway through the normal onboarding path. -4. Securely overwrites and deletes `~/.nemoclaw/credentials.json` only after every staged value has been verified as migrated to the gateway. - -You will see a one-line stderr notice the first time this happens. -Credential lookup paths such as rebuild also stage allowlisted legacy values so interrupted upgrades can keep working, but those staging-only paths do not delete the plaintext file because they cannot prove every legacy value was registered with the gateway. -If `~/.nemoclaw/credentials.json` remains after a rebuild or other credential lookup, run `nemoclaw onboard` to complete the verified gateway migration and cleanup. - -## Rotate or Remove a Stored Credential - -The simplest way to replace a stored value is to rerun onboarding with the new value in your environment: - -```console -$ NVIDIA_API_KEY=nvapi-new-value nemoclaw onboard -``` - -To remove a credential from the gateway entirely: - -```console -$ nemoclaw credentials reset -``` - -`` is the OpenShell provider name (run `nemoclaw credentials list` first if you are not sure). -On the next run NemoClaw prompts again unless the credential is supplied through the environment. - -## Security Recommendations - -1. Prefer short-lived or low-scope provider credentials where the upstream service supports them. -2. Rotate keys after suspected exposure, machine transfer, or account changes. -3. Prefer environment variables for ephemeral automation rather than registering long-lived secrets in the gateway. -4. Do not copy any host-side NemoClaw state into container images, Git repositories, bug reports, or support bundles. Even though credentials no longer live on disk, the surrounding configuration may reveal which providers you have registered. -5. Keep your home directory private and owned by your user account. - -## Related Files - -For the broader sandbox security model and operational trade-offs, see [Security Best Practices](best-practices.md) and Architecture (use the `nemoclaw-user-reference` skill). diff --git a/skills/nemoclaw-user-configure-security/references/openclaw-controls.md b/skills/nemoclaw-user-configure-security/references/openclaw-controls.md deleted file mode 100644 index de140242d85..00000000000 --- a/skills/nemoclaw-user-configure-security/references/openclaw-controls.md +++ /dev/null @@ -1,119 +0,0 @@ -# OpenClaw Security Controls Beyond NemoClaw's Scope - -NemoClaw provides infrastructure-layer security through sandbox isolation, network policy, filesystem restrictions, SSRF validation, and credential handling. -It delegates all application-layer security to OpenClaw. -This page documents areas where NemoClaw adds no independent protection beyond what OpenClaw already provides. - -The details below reflect the OpenClaw documentation at the time of writing. -Consult the [OpenClaw Security docs](https://docs.openclaw.ai/gateway/security/index) for the current state. - -## Prompt Injection Detection and Prevention - -OpenClaw detects and neutralizes prompt injection attempts before they reach the agent. - -| Control | Detail | -|---|---| -| Regex detection | Pattern matching detects common injection vectors such as "ignore all previous instructions" and `` tag spoofing | -| Boundary wrapping | Untrusted input is wrapped in randomized XML boundary markers | -| Unicode folding | Homoglyph folding normalizes bracket variants to prevent visual spoofing | -| Invisible character stripping | Zero-width invisible characters are removed from input | -| Boundary sanitization | Fake boundary markers are sanitized to prevent marker injection | -| Auto-wrapping | Web fetch and search results are automatically wrapped as untrusted external content | - -## Tool Access Control and Policy Pipeline - -OpenClaw enforces a multi-layer tool policy pipeline that gates every tool call. - -| Control | Detail | -|---|---| -| Deny list | High-risk tools (`exec`, `spawn`, `shell`, `fs_write`, `fs_delete`, and others) are blocked from Gateway HTTP by default | -| Policy pipeline | Multi-layer pipeline evaluates tool calls through profile, provider, agent, sandbox, and per-provider policies | -| Fail-closed semantics | Tool call hooks block execution on any error | -| Loop detection | Optional guard detects and blocks repeated identical tool call patterns (disabled by default, opt-in via `tools.loopDetection.enabled`) | -| Plugin approval | Approval workflow defaults to deny on timeout | - -## Authentication Rate Limiting and Flood Protection - -OpenClaw rate-limits authentication attempts and guards against connection floods. - -| Control | Detail | -|---|---| -| Auth rate limiter | Sliding-window rate limiter tracks failed authentication attempts per IP and per scope | -| Control plane limiter | Per-device write rate limiting for control plane operations | -| WebSocket flood guard | Closes connections after repeated unauthorized attempts | -| Pre-auth budget | Limits connections before authentication completes | - -## Environment Variable Security Policy - -OpenClaw blocks environment variables that could enable code injection, privilege escalation, or credential theft. - -| Category | Detail | -|---|---| -| Always-blocked keys | Keys such as `NODE_OPTIONS`, `LD_PRELOAD`, shell injection vectors, crypto mining variables, and `GIT_*` hijacking paths | -| Override-blocked keys | Additional keys blocked unless explicitly overridden | -| Blocked prefixes | Prefixes such as `GIT_CONFIG_`, `NPM_CONFIG_`, `CARGO_REGISTRIES_`, `TF_VAR_` | -| Universal blocked prefixes | `DYLD_`, `LD_`, `BASH_FUNC_` | - -## Security Audit Framework - -OpenClaw runs automated security checks (50+ distinct check types) that cover configuration, credential handling, and sandbox posture. -Run `openclaw security audit` to see all findings for your deployment. - -These checks include: - -- Synced-folder leak detection. -- Plaintext secrets in configuration files. -- Hooks hardening verification. -- Gateway no-auth detection. -- Sandbox misconfiguration scanning. -- Weak-model susceptibility assessment. -- Multi-user exposure matrix. -- Node command policy validation. -- Dangerous config flag scanning (`allowInsecureAuth`, `dangerouslyDisableDeviceAuth`, and similar flags). - -## Skill and Extension Supply Chain Scanning - -OpenClaw scans skills and extensions with a built-in static analysis scanner before installation. -Critical findings block installation by default. - -The scanner checks for patterns including: - -- Direct process execution calls. -- Dynamic code execution (`eval`, `new Function`, and similar constructs). -- Cryptocurrency mining patterns. -- Unexpected network activity. -- Potential data exfiltration (file read combined with network calls). -- Obfuscated code. -- Environment variable harvesting combined with network calls. - -## DM and Group Messaging Access Policy - -OpenClaw controls who can interact with the agent through direct messages and group channels. - -| Control | Detail | -|---|---| -| DM policy modes | 4 modes: open, disabled, pairing, allowlist | -| Group policies | Per-group access rules | -| Per-sender authorization | Individual sender gating | -| Command authorization | Command-level access control | -| Multi-user detection | Heuristic that detects multi-user scenarios | - -## Context Visibility and Output Controls - -OpenClaw restricts what supplemental context the agent can see and how it can modify outputs. - -| Control | Detail | -|---|---| -| Mode-based restrictions | Limits visibility of history, threads, quotes, and forwarded messages based on the active mode | -| Sender-based restrictions | Limits visibility based on who sent the message | -| Plugin output hooks | Plugin hooks intercept and modify tool results before they reach the user | - -## Safe Regex (ReDoS Prevention) - -OpenClaw includes safe regex compilation to prevent Regular Expression Denial of Service (ReDoS) attacks. -The implementation detects unsafe nested quantifiers, bounds input length, and caches results. - -## Next Steps - -- [Security Best Practices](best-practices.md) for NemoClaw's own security controls and risk framework. -- [Credential Storage](credential-storage.md) for how NemoClaw stores and protects provider credentials. diff --git a/skills/nemoclaw-user-deploy-remote/SKILL.md b/skills/nemoclaw-user-deploy-remote/SKILL.md deleted file mode 100644 index ead2d776c17..00000000000 --- a/skills/nemoclaw-user-deploy-remote/SKILL.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -name: "nemoclaw-user-deploy-remote" -description: "Explains how to run NemoClaw on a remote GPU instance, including the deprecated Brev compatibility path and the preferred installer plus onboard flow. Use when deploying NemoClaw to a remote VM, onboarding a Brev instance, or migrating away from the legacy `nemoclaw deploy` wrapper. Trigger keywords - deploy nemoclaw remote gpu, nemoclaw brev cloud deployment, nemoclaw plugins, openclaw plugins, install openclaw plugin, nemoclaw onboard from dockerfile, nemoclaw brev web ui, nemoclaw getting started, brev quickstart, nvidia nemotron agent, nemoclaw sandbox hardening, container security, docker capabilities, process limits." -license: "Apache-2.0" ---- -# Deploy NemoClaw to a Remote GPU Instance - -## Gotchas - -- The `nemoclaw deploy` command is deprecated. -- On Brev, set `CHAT_UI_URL` in the launchable environment configuration so it is available when the installer builds the sandbox image. - -## Prerequisites - -- The [Brev CLI](https://brev.nvidia.com) installed and authenticated. -- A provider credential for the inference backend you want to use during onboarding. -- `HF_TOKEN` or `HUGGING_FACE_HUB_TOKEN` exported when your remote vLLM or Hugging Face workflow needs access to gated models. -- NemoClaw installed locally if you plan to use the deprecated `nemoclaw deploy` wrapper. Otherwise, install NemoClaw directly on the remote host after provisioning it. - -Run NemoClaw on a remote GPU instance through [Brev](https://brev.nvidia.com). -The preferred path is to provision the VM, run the standard NemoClaw installer on that host, and then run `nemoclaw onboard`. - -## Quick Start - -If your Brev instance is already up and has already been onboarded with a sandbox, start with the standard sandbox chat flow: - -```console -$ nemoclaw my-assistant connect -$ openclaw tui -``` - -This gets you into the sandbox shell first and opens the OpenClaw chat UI right away. -If the VM is fresh, run the standard installer on that host and then run `nemoclaw onboard` before trying `nemoclaw my-assistant connect`. - -If you are connecting from your local machine and still need to provision the remote VM, you can still use `nemoclaw deploy ` as the legacy compatibility path described below. - -## Deploy the Instance - -**Warning:** - -The `nemoclaw deploy` command is deprecated. -Prefer provisioning the remote host separately, then running the standard NemoClaw installer and `nemoclaw onboard` on that host. - -Create a Brev instance and run the legacy compatibility flow: - -```console -$ nemoclaw deploy -``` - -Replace `` with a name for your remote instance, for example `my-gpu-box`. -The sandbox created on the remote VM uses `NEMOCLAW_SANDBOX_NAME`, or `my-assistant` when the variable is unset. -Sandbox names must be lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. -The deploy wrapper validates the sandbox name before it provisions the Brev instance, opens SSH, or starts the remote installer. - -The legacy compatibility flow performs the following steps on the VM: - -1. Installs Docker and the NVIDIA Container Toolkit if a GPU is present. -2. Installs the OpenShell CLI. -3. Runs `nemoclaw onboard` (the setup wizard) to create the gateway, register providers, and launch the sandbox. -4. Starts optional host auxiliary services (for example the cloudflared tunnel) when `cloudflared` is available. Channel messaging is configured during onboarding and runs through OpenShell-managed processes, not through `nemoclaw tunnel start`. - -By default, the compatibility wrapper asks Brev to provision on `gcp`. Override this with `NEMOCLAW_BREV_PROVIDER` if you need a different Brev cloud provider. -If you export `HF_TOKEN` or `HUGGING_FACE_HUB_TOKEN`, the wrapper forwards those values to the VM so remote setup can pull gated Hugging Face model repositories. - -## Connect to the Remote Sandbox - -After deployment finishes, the deploy command opens an interactive shell inside the remote sandbox. -To reconnect after closing the session, run the command again: - -```console -$ nemoclaw deploy -``` - -## Monitor the Remote Sandbox - -SSH to the instance and run the OpenShell TUI to monitor activity and approve network requests: - -```console -$ ssh 'cd ~/nemoclaw && set -a && . .env && set +a && openshell term' -``` - -## Verify Inference - -Run a test agent prompt inside the remote sandbox: - -```console -$ openclaw agent --agent main -m "Hello from the remote sandbox" --session-id test -``` - -## Remote Dashboard Access - -The NemoClaw dashboard validates the browser origin against an allowlist baked -into the sandbox image at build time. By default the allowlist only contains -`http://127.0.0.1:18789`. When accessing the dashboard from a remote browser -(for example through a Brev public URL or an SSH port-forward), set -`CHAT_UI_URL` to the origin the browser will use **before** running setup: - -```console -$ export CHAT_UI_URL="https://openclaw0-.brevlab.com" -$ nemoclaw deploy -``` - -For SSH port-forwarding, the origin is typically `http://127.0.0.1:18789` (the -default), so no extra configuration is needed. - -**Warning:** - -On Brev, set `CHAT_UI_URL` in the launchable environment configuration so it is -available when the installer builds the sandbox image. If `CHAT_UI_URL` is not -set on a headless host, the compatibility wrapper prints a warning. - -`NEMOCLAW_DISABLE_DEVICE_AUTH` is also evaluated at image build time. -When `CHAT_UI_URL` points at a non-loopback origin, NemoClaw disables OpenClaw device pairing in the generated sandbox configuration because browser-only remote users cannot complete terminal-based pairing. -Any device that can reach the configured dashboard origin can connect without pairing, so avoid exposing that origin on internet-reachable or shared-network deployments. - -## First-Run Readiness Budget - -On a remote GPU host, the first `nemoclaw onboard` typically does the slowest work of the lifecycle: the sandbox image is built locally and uploaded into the OpenShell gateway, which can stream hundreds of MiB over the VM's link before the readiness wait even starts. -The post-create readiness wait defaults to 180 seconds (`NEMOCLAW_SANDBOX_READY_TIMEOUT`), which is sized for warm-cache, workstation-class onboarding and can be exceeded on: - -- DGX Station first runs with large quantised models (70B+ parameter footprints, NVFP4 weights). -- Cloud VMs where the local image-build cache is cold and the upload runs over the public network. -- Hosts onboarding the Brave Web Search preset on the first run (the egress policy stack adds boot work). - -Raise the budget before re-running onboard: - -```console -$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 -$ nemoclaw onboard -``` - -If onboard ends with `Sandbox '' was created but did not become ready within 180s`, onboard deletes the partially-created sandbox first, so the next attempt with the raised budget starts from a clean state. -For the inference-probe budget that runs earlier in onboarding, see `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` (use the `nemoclaw-user-configure-inference` skill). - -## Proxy Configuration - -NemoClaw routes sandbox traffic through a gateway proxy that defaults to `10.200.0.1:3128`. -If your network requires a different proxy, set `NEMOCLAW_PROXY_HOST` and `NEMOCLAW_PROXY_PORT` before onboarding: - -```console -$ export NEMOCLAW_PROXY_HOST=proxy.example.com -$ export NEMOCLAW_PROXY_PORT=8080 -$ nemoclaw onboard -``` - -These values are baked into the sandbox image at build time. -They are also forwarded into the runtime container during sandbox creation, so `/tmp/nemoclaw-proxy-env.sh` uses the same host and port that the image build used. -Only alphanumeric characters, dots, hyphens, and colons are accepted for the host. -The port must be numeric (0-65535). -Changing the proxy after onboarding requires re-running `nemoclaw onboard`. - -## GPU Configuration - -The deploy script uses the `NEMOCLAW_GPU` environment variable to select the GPU type. -The default value is `a2-highgpu-1g:nvidia-tesla-a100:1`. -Set this variable before running `nemoclaw deploy` to use a different GPU configuration: - -```console -$ export NEMOCLAW_GPU="a2-highgpu-1g:nvidia-tesla-a100:2" -$ nemoclaw deploy -``` - -## References - -- **Load [references/install-openclaw-plugins.md](references/install-openclaw-plugins.md)** when users ask how to install, build, or configure OpenClaw plugins under NemoClaw. Explains the difference between OpenClaw plugins and agent skills, and shows the current Dockerfile-based workflow for baking a plugin into a NemoClaw sandbox. -- **Load [references/brev-web-ui.md](references/brev-web-ui.md)** when a user wants to try NemoClaw without installing the CLI, or asks how to get started on Brev. Guides users through deploying NemoClaw with the Brev web UI. -- **Load [references/sandbox-hardening.md](references/sandbox-hardening.md)** when reviewing sandbox image security controls, auditing capability drops, or looking up the runtime resource limits. Includes the sandbox container image hardening reference, covering Docker capabilities and process limits. - -## Related Skills - -- `nemoclaw-user-manage-sandboxes` — Set Up Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) to connect Telegram, Discord, or Slack through OpenShell-managed channel messaging -- `nemoclaw-user-monitor-sandbox` — Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for sandbox monitoring tools -- `nemoclaw-user-reference` — Commands (use the `nemoclaw-user-reference` skill) for the full `deploy` command reference diff --git a/skills/nemoclaw-user-deploy-remote/evals/evals.json b/skills/nemoclaw-user-deploy-remote/evals/evals.json deleted file mode 100644 index 3d76a9ca827..00000000000 --- a/skills/nemoclaw-user-deploy-remote/evals/evals.json +++ /dev/null @@ -1,170 +0,0 @@ -[ - { - "id": "docs-deployment-deploy-to-remote-gpu-001", - "question": "I'm deploying NemoClaw to a remote GPU instance. Help me move the sandboxed assistant off my local machine so I can support persistent or GPU-backed operation.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user move the sandboxed assistant off my local machine and gives enough concrete guidance, decision criteria, verification steps, or risk framing to support persistent or GPU-backed operation.", - "expected_behavior": [ - "The output directly addresses the user's situation: deploying NemoClaw to a remote GPU instance.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user move the sandboxed assistant off my local machine with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to support persistent or GPU-backed operation.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-deployment-deploy-to-remote-gpu-002", - "question": "I'm using the legacy Brev compatibility flow. Help me understand what the flow still does and where it is deprecated so I can avoid depending on an outdated path blindly.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what the flow still does and where it is deprecated and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid depending on an outdated path blindly.", - "expected_behavior": [ - "The output directly addresses the user's situation: using the legacy Brev compatibility flow.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand what the flow still does and where it is deprecated with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid depending on an outdated path blindly.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-deployment-deploy-to-remote-gpu-003", - "question": "I'm after remote deployment succeeds. Help me find the connection, operation, and recovery details so I can operate the sandbox after initial setup.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user find the connection, operation, and recovery details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to operate the sandbox after initial setup.", - "expected_behavior": [ - "The output directly addresses the user's situation: after remote deployment succeeds.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user find the connection, operation, and recovery details with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to operate the sandbox after initial setup.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-deployment-brev-web-ui-001", - "question": "I'm launching NemoClaw from the Brev web UI. Help me avoid local CLI setup and local GPU requirements so I can start a hosted sandbox quickly.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user avoid local CLI setup and local GPU requirements and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start a hosted sandbox quickly.", - "expected_behavior": [ - "The output directly addresses the user's situation: launching NemoClaw from the Brev web UI.", - "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", - "The output helps the user avoid local CLI setup and local GPU requirements with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start a hosted sandbox quickly.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." - ] - }, - { - "id": "docs-deployment-brev-web-ui-002", - "question": "I'm reviewing hosted launch choices. Help me understand each web UI option before creating the instance so I can choose settings that match my expected sandbox workflow.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user understand each web UI option before creating the instance and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose settings that match my expected sandbox workflow.", - "expected_behavior": [ - "The output directly addresses the user's situation: reviewing hosted launch choices.", - "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", - "The output helps the user understand each web UI option before creating the instance with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose settings that match my expected sandbox workflow.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." - ] - }, - { - "id": "docs-deployment-brev-web-ui-003", - "question": "I'm the hosted sandbox is created. Help me confirm where to connect and how to start using it so I can move from provisioning to actual agent work.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm where to connect and how to start using it and gives enough concrete guidance, decision criteria, verification steps, or risk framing to move from provisioning to actual agent work.", - "expected_behavior": [ - "The output directly addresses the user's situation: the hosted sandbox is created.", - "The AI coding assistant loads the expected_skill and references/brev-web-ui.md", - "The output helps the user confirm where to connect and how to start using it with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to move from provisioning to actual agent work.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/brev-web-ui.md file." - ] - }, - { - "id": "docs-deployment-install-openclaw-plugins-001", - "question": "I'm installing an OpenClaw plugin in a NemoClaw-managed sandbox. Help me add a new agent capability inside the sandbox so I can extend the assistant without weakening the host boundary.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user add a new agent capability inside the sandbox and gives enough concrete guidance, decision criteria, verification steps, or risk framing to extend the assistant without weakening the host boundary.", - "expected_behavior": [ - "The output directly addresses the user's situation: installing an OpenClaw plugin in a NemoClaw-managed sandbox.", - "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", - "The output helps the user add a new agent capability inside the sandbox with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to extend the assistant without weakening the host boundary.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." - ] - }, - { - "id": "docs-deployment-install-openclaw-plugins-002", - "question": "I'm deciding where to install a plugin. Help me distinguish host environment changes from sandbox environment changes so I can modify the right filesystem and runtime.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user distinguish host environment changes from sandbox environment changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to modify the right filesystem and runtime.", - "expected_behavior": [ - "The output directly addresses the user's situation: deciding where to install a plugin.", - "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", - "The output helps the user distinguish host environment changes from sandbox environment changes with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to modify the right filesystem and runtime.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." - ] - }, - { - "id": "docs-deployment-install-openclaw-plugins-003", - "question": "I'm verifying a plugin installation. Help me confirm the agent can discover and use the plugin so I can trust that the capability works inside NemoClaw's security model.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm the agent can discover and use the plugin and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust that the capability works inside NemoClaw's security model.", - "expected_behavior": [ - "The output directly addresses the user's situation: verifying a plugin installation.", - "The AI coding assistant loads the expected_skill and references/install-openclaw-plugins.md", - "The output helps the user confirm the agent can discover and use the plugin with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust that the capability works inside NemoClaw's security model.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/install-openclaw-plugins.md file." - ] - }, - { - "id": "docs-deployment-sandbox-hardening-001", - "question": "I'm reviewing sandbox image hardening. Help me understand which container risks NemoClaw reduces so I can decide whether unattended agents are acceptable in my environment.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user understand which container risks NemoClaw reduces and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether unattended agents are acceptable in my environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: reviewing sandbox image hardening.", - "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", - "The output helps the user understand which container risks NemoClaw reduces with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether unattended agents are acceptable in my environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." - ] - }, - { - "id": "docs-deployment-sandbox-hardening-002", - "question": "I'm mapping NemoClaw to an organizational security baseline. Help me identify capability drops, least privilege, and runtime protections so I can document how the sandbox meets or misses required controls.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user identify capability drops, least privilege, and runtime protections and gives enough concrete guidance, decision criteria, verification steps, or risk framing to document how the sandbox meets or misses required controls.", - "expected_behavior": [ - "The output directly addresses the user's situation: mapping NemoClaw to an organizational security baseline.", - "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", - "The output helps the user identify capability drops, least privilege, and runtime protections with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to document how the sandbox meets or misses required controls.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." - ] - }, - { - "id": "docs-deployment-sandbox-hardening-003", - "question": "I'm considering production use. Help me see the limitations and residual risks of the hardened image so I can avoid overstating what container hardening guarantees.", - "expected_skill": "nemoclaw-user-deploy-remote", - "ground_truth": "A NemoClaw-specific answer that helps the user see the limitations and residual risks of the hardened image and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid overstating what container hardening guarantees.", - "expected_behavior": [ - "The output directly addresses the user's situation: considering production use.", - "The AI coding assistant loads the expected_skill and references/sandbox-hardening.md", - "The output helps the user see the limitations and residual risks of the hardened image with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid overstating what container hardening guarantees.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/sandbox-hardening.md file." - ] - } -] diff --git a/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md b/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md deleted file mode 100644 index c66758a07a5..00000000000 --- a/skills/nemoclaw-user-deploy-remote/references/brev-web-ui.md +++ /dev/null @@ -1,153 +0,0 @@ -# Launch NemoClaw with the Brev Web UI - -Use the Brev web UI to launch a hosted NemoClaw sandbox from your browser. -This flow provisions a remote VM, configures inference, starts OpenClaw inside an OpenShell sandbox, and opens the OpenClaw dashboard. - -**Note:** - -Use this guide when you want to try NemoClaw without installing the CLI or using a local GPU. -If you want to manage the remote host from a terminal, see [Deploy to a Remote GPU Instance](../SKILL.md). - -## What This Flow Creates - -The Brev web flow creates the following resources: - -- A Brev-managed Linux VM. -- Docker and the OpenShell runtime on that VM. -- A NemoClaw sandbox running OpenClaw. -- Inference routing for the provider you select during setup. -- A browser-accessible OpenClaw dashboard. - -## Prerequisites - -- An NVIDIA Brev account at [brev.nvidia.com](https://brev.nvidia.com). -- An NVIDIA API key from [build.nvidia.com](https://build.nvidia.com/settings/api-keys) if you use the default NVIDIA Cloud provider. - -You do not need to install local software for this flow. - -## Get Your NVIDIA API Key - -If you already have an NVIDIA API key skip this section. Otherwise, follow these steps to generate a new key: - -1. Go to [build.nvidia.com](https://build.nvidia.com). -2. Sign in or create an account. -3. Click your profile icon in the top right. -4. Select **API Keys**. -5. Click **Generate API Key**. -6. Copy the key. It starts with `nvapi-`. - -Keep this key ready for the next step. - -## Launch NemoClaw from Brev - -Use the [NemoClaw Brev launchable](https://brev.nvidia.com/launchable/deploy/now?launchableID=env-3Azt0aYgVNFEuz7opyx3gscmowS) to launch a NemoClaw sandbox from your browser. - -1. Open the [NemoClaw Brev launchable](https://brev.nvidia.com/launchable/deploy/now?launchableID=env-3Azt0aYgVNFEuz7opyx3gscmowS) and sign in if prompted. -2. Review the instance type, cloud provider, and estimated hourly cost on the NemoClaw setup page. -3. Click **Deploy NemoClaw**. - -The right-side deployment panel shows progress while Brev deploys the CPU instance and prepares VM mode. -Keep this page open until the deployment completes. -When the panel shows the **NemoClaw** button, click it to open the agent setup page. - -## Configure Your Agent - -The setup page walks you through three stages: **Configure**, **Setup**, and **Launch**. - -### Configure - -The Configure stage opens the **Connect to AI** screen. -Use the NVIDIA Cloud provider shown on this screen. - -1. Leave **NVIDIA Cloud** selected. -2. Paste your `nvapi-` API key. -3. Click **Create Agent**. - -**Note:** - -The **Show Other Providers** dropdown appears below the **NVIDIA Cloud** card and can be easy to miss. -Click it to expand the provider list. -The expanded list includes **OpenAI**, **Anthropic**, and **Google Gemini**. -For these providers, get the API key from the provider's own console before you create the agent. - -### Setup - -NemoClaw configures the remote host and sandbox automatically. -This stage usually takes about 5 minutes. - -During setup, NemoClaw installs the runtime, prepares the sandboxed agent environment, and configures inference routing for the provider you selected. - -### Launch - -When setup finishes, Brev shows the following confirmation: - -```text -AGENT CREATED SUCCESSFULLY -Your agent is running in a secure sandbox and ready to use. - -Agent: agent -Model: nemotron-3-super-120b -Provider: NVIDIA Cloud -``` - -Click **Chat With Agent** to open the OpenClaw dashboard. - -**Note:** - -The dashboard might initially show a **Pairing required** warning. -This means the gateway is still completing pairing in the background. -Wait for about a few minutes for pairing to finish automatically. Refresh the dashboard to see if the warning is resolved and the connection is established. -If pairing does not finish, go to the **Overview** page in the OpenClaw UI, find the **Gateway Access** panel, and click **Connect**. - -## Start a Chat - -Use the dashboard chat box to send your first message: - -```text -Hello! What can you do for me? What skills do you have available? -``` - -The agent reads its workspace files and introduces itself. -The starter workspace includes example skills such as: - -- **Weather** gets current weather and forecasts. -- **Healthcheck** runs security audit and hardening checks. -- **Skill-Creator** creates new custom skills. - -## Personalize Agent Memory - -The agent starts with an empty `USER.md` file. -Ask the agent to add details that help it personalize future responses. - -In the chat, type the following: - -```text -Please update my USER.md file with the following: -Name: [your name] -Timezone: [your timezone, such as "America/New_York"] -Notes: [what you are working on] -``` - -The agent writes this information to its workspace so it can use it across sessions on the same sandbox. - -## Stop Your Instance When Done - -Brev continues billing while the instance runs. -Stop the instance when you finish experimenting. - -1. Go back to [brev.nvidia.com](https://brev.nvidia.com). -2. Click **GPUs** in the nav bar. -3. Find your NemoClaw instance. -4. Click **Stop**. - -Check the Brev UI for the current hourly price before leaving the instance running. - -## Next Steps - -After your agent is running, explore these related tasks: - -- Set Up Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) to learn how to connect Telegram, Slack, or Discord. -- Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) to learn how to change the model provider after setup. -- Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) to learn how to inspect sandbox health and logs. -- [Deploy to a Remote GPU Instance](../SKILL.md) to learn how to deploy NemoClaw to a remote GPU instance using the CLI. -- Troubleshooting (use the `nemoclaw-user-reference` skill) to learn how to fix common setup and runtime issues. diff --git a/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md b/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md deleted file mode 100644 index c9e53cec300..00000000000 --- a/skills/nemoclaw-user-deploy-remote/references/install-openclaw-plugins.md +++ /dev/null @@ -1,91 +0,0 @@ -# Install OpenClaw Plugins - -OpenClaw plugins extend the OpenClaw runtime with hooks, services, tools, or -provider integrations. They are different from NemoClaw-managed agent skills: - -- **Plugins** are code packages loaded by OpenClaw. -- **Skills** are `SKILL.md` directories that teach an agent how to perform a task. -- **Policy presets** are network-egress rules that control what sandboxed code can reach. - -Today, the supported NemoClaw path for OpenClaw plugins is to bake the plugin -into a custom sandbox image and onboard from that Dockerfile. - -## Prepare a Build Directory - -Put the Dockerfile and everything it needs to `COPY` in one directory. -`nemoclaw onboard --from ` uses the Dockerfile's parent directory as -the Docker build context. - -```text -my-plugin-sandbox/ -├── Dockerfile -└── my-plugin/ - ├── package.json - └── src/ -``` - -## Example Dockerfile - -Use the custom image to copy the plugin into the OpenClaw extensions directory -and let OpenClaw refresh its config before NemoClaw starts the sandbox. - -```dockerfile -ARG SANDBOX_BASE=ghcr.io/nvidia/nemoclaw/sandbox-base:latest -FROM ${SANDBOX_BASE} - -COPY my-plugin/ /opt/my-plugin/ -WORKDIR /opt/my-plugin -RUN npm ci --no-audit --no-fund && npm run build - -RUN mkdir -p /sandbox/.openclaw/extensions \ - && cp -a /opt/my-plugin /sandbox/.openclaw/extensions/my-plugin \ - && openclaw doctor --fix - -WORKDIR /opt/nemoclaw -``` - -If the plugin needs configuration in `openclaw.json`, apply it after -`openclaw doctor --fix` so the base config exists first. - -## Create the Sandbox - -Point `nemoclaw onboard --from` at the Dockerfile in the build directory. - -```console -$ nemoclaw onboard --from ./my-plugin-sandbox/Dockerfile -``` - -If you need a second sandbox alongside an existing one, use a dedicated build -directory and rerun onboarding with the sandbox name and ports you intend to -use. - -## Network Access - -Plugins still run inside the sandbox policy boundary. If a plugin needs network -egress, add or update a policy preset for the required hostnames and binaries -before rebuilding the sandbox. - -For example, see Network Policies (use the `nemoclaw-user-reference` skill) for -policy concepts and Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) -for custom preset workflows. - -## Common Mistakes - -These are the most common places where plugin installation gets mixed up with -other NemoClaw extension paths. - -- Do not use `nemoclaw skill install` for OpenClaw plugins. That - command only installs `SKILL.md` agent skills. -- Do not put a Dockerfile in a broad directory such as `/tmp` unless you intend - to send that whole directory as the Docker build context. -- Keep plugin dependencies in the build stage or plugin directory; avoid copying - unrelated host files into the sandbox image. - -## Next Steps - -- Review [Sandbox Hardening](sandbox-hardening.md) before adding plugin code to a - shared or long-lived sandbox. -- Review Network Policies (use the `nemoclaw-user-reference` skill) to plan plugin - egress rules. -- Follow Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) - if the plugin needs a custom preset. diff --git a/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md b/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md deleted file mode 100644 index 80a0607d67c..00000000000 --- a/skills/nemoclaw-user-deploy-remote/references/sandbox-hardening.md +++ /dev/null @@ -1,125 +0,0 @@ -# Sandbox Image Hardening - -The NemoClaw sandbox image applies several security measures to reduce attack -surface and limit the blast radius of untrusted workloads. - -## Removed Unnecessary Tools - -Build toolchains (`gcc`, `g++`, `make`) and network probes (`netcat`) are -explicitly purged from the runtime image. These tools are not needed at runtime -and would unnecessarily widen the attack surface. - -The runtime image keeps a small set of operational utilities for normal sandbox -workflows, including `vi`, `jq`, and `dos2unix`. Use these for lightweight -inspection and file cleanup inside the sandbox, but make durable image or policy -changes in the NemoClaw source tree and rebuild the sandbox. - -If you need a compiler during build, use the existing multi-stage build -(the `builder` stage has full Node.js tooling) and copy only artifacts into the -runtime stage. - -## Process Limits - -The container ENTRYPOINT sets `ulimit -u 512` to cap the number of processes -a sandbox user can spawn. This mitigates fork-bomb attacks. The startup script -(`nemoclaw-start.sh`) applies the same limit. - -Adjust the value via the `--ulimit nproc=512:512` flag if launching with -`docker run` directly. - -## Dropping Linux Capabilities - -The NemoClaw entrypoint drops dangerous capabilities from the process bounding -set before it starts agent services. -It removes `CAP_SYS_ADMIN`, `CAP_SYS_PTRACE`, `CAP_NET_RAW`, -`CAP_DAC_OVERRIDE`, `CAP_SYS_CHROOT`, `CAP_FSETID`, `CAP_SETFCAP`, -`CAP_MKNOD`, `CAP_AUDIT_WRITE`, and `CAP_NET_BIND_SERVICE`. -When `setpriv` is available, the entrypoint also removes the remaining -privilege-separation capabilities during the switch from root to the -`sandbox` and `gateway` users. - -For defense-in-depth, also drop all Linux capabilities at the container runtime -when you launch the image directly: - -```console -$ docker run --rm \ - --cap-drop=ALL \ - --ulimit nproc=512:512 \ - nemoclaw-sandbox -``` - -### Docker Compose Example - -```yaml -services: - nemoclaw-sandbox: - image: nemoclaw-sandbox:latest - cap_drop: - - ALL - cap_add: - - NET_BIND_SERVICE - ulimits: - nproc: - soft: 512 - hard: 512 - security_opt: - - no-new-privileges:true - read_only: true - tmpfs: - - /tmp:size=64m -``` - -> **Note:** The `Dockerfile` itself cannot enforce `--cap-drop`. That is a -> runtime concern controlled by the container orchestrator. Always configure -> capability dropping in your `docker run` flags, Compose file, or Kubernetes -> `securityContext`. - -## Filesystem Layout - -The sandbox Landlock policy declares which paths are writable. -The agent's home directory (`/sandbox`) is writable by default: - -| Path | Access | Purpose | -|------|--------|---------| -| `/sandbox` | read-write | Home directory — agents can create files and use standard home paths | -| `/sandbox/.openclaw` | read-write | Agent config, state, workspace, plugins | -| `/sandbox/.nemoclaw` | read-write | Plugin state and config; blueprints within are DAC-protected (root-owned) | -| `/tmp` | read-write | Temporary files and logs | - -This writable default is intentional. -Seeing the sandbox user create files under `/sandbox` or `/sandbox/.openclaw` in a fresh sandbox does not mean Landlock failed. -Landlock still enforces the fixed read-only system paths below. - -System paths remain read-only to prevent agents from: - -- Replacing system binaries with trojanized versions -- Modifying DNS resolution or TLS trust stores -- Tampering with libraries or shell configuration outside `/sandbox` - -The image build pre-creates locked shell init files `.bashrc` and `.profile` without proxy entries. -Runtime proxy configuration is sourced from system-wide shell hooks that read `/tmp/nemoclaw-proxy-env.sh`. - -### Landlock Kernel Requirements - -Landlock LSM requires Linux kernel 5.13 or later with `CONFIG_SECURITY_LANDLOCK=y`. -The NemoClaw sandbox policy uses `compatibility: best_effort`, which means Landlock enforcement is silently skipped on kernels that do not support it. - -On such kernels, protection falls back to DAC (file ownership and permissions) only. -Files outside the writable paths would be inaccessible to the agent regardless of DAC permissions. - -Operators should verify Landlock availability: - -```console -$ ls /sys/kernel/security/landlock -``` - -For production deployments, kernel 5.13+ with Landlock enabled is strongly recommended. -The `test/e2e/e2e-cloud-experimental/checks/04-landlock-readonly.sh` script validates enforcement at runtime. - -## References - -- [#804](https://github.com/NVIDIA/NemoClaw/issues/804): Filesystem layout and Landlock policy -- [#807](https://github.com/NVIDIA/NemoClaw/issues/807): gcc in sandbox image -- [#808](https://github.com/NVIDIA/NemoClaw/issues/808): netcat in sandbox image -- [#809](https://github.com/NVIDIA/NemoClaw/issues/809): No process limit -- [#797](https://github.com/NVIDIA/NemoClaw/issues/797): Drop Linux capabilities diff --git a/skills/nemoclaw-user-get-started/evals/evals.json b/skills/nemoclaw-user-get-started/evals/evals.json index 08319bc6889..946c2dfea5b 100644 --- a/skills/nemoclaw-user-get-started/evals/evals.json +++ b/skills/nemoclaw-user-get-started/evals/evals.json @@ -3,168 +3,72 @@ "id": "docs-get-started-prerequisites-001", "question": "I'm checking prerequisites before installation. Help me verify my host has the required hardware, software, and platform support so I can avoid a failed first setup.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup.", - "expected_behavior": [ - "The output directly addresses the user's situation: checking prerequisites before installation.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user verify my host has the required hardware, software, and platform support with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid a failed first setup.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user verify my host has the required hardware, software, and platform support and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid a failed first setup." }, { "id": "docs-get-started-prerequisites-002", "question": "I'm using a machine with limited CPU, memory, disk, or Docker capacity. Help me understand the practical minimums and known bottlenecks so I can prepare the machine before onboarding starts.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts.", - "expected_behavior": [ - "The output directly addresses the user's situation: using a machine with limited CPU, memory, disk, or Docker capacity.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user understand the practical minimums and known bottlenecks with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prepare the machine before onboarding starts.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand the practical minimums and known bottlenecks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prepare the machine before onboarding starts." }, { "id": "docs-get-started-prerequisites-003", "question": "I'm choosing between local, Windows WSL, and remote GPU setup. Help me compare supported platform paths so I can start with the environment most likely to work.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing between local, Windows WSL, and remote GPU setup.", - "The AI coding assistant loads the expected_skill and references/prerequisites.md", - "The output helps the user compare supported platform paths with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to start with the environment most likely to work.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/prerequisites.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user compare supported platform paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to start with the environment most likely to work." }, { "id": "docs-get-started-windows-preparation-001", "question": "I'm preparing a Windows machine for NemoClaw. Help me enable WSL 2, Ubuntu, and Docker Desktop correctly so I can enter the standard quickstart from a working Linux environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: preparing a Windows machine for NemoClaw.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enter the standard quickstart from a working Linux environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user enable WSL 2, Ubuntu, and Docker Desktop correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enter the standard quickstart from a working Linux environment." }, { "id": "docs-get-started-windows-preparation-002", "question": "I'm unsure whether Windows-specific setup is complete. Help me check the WSL and Docker integration steps that commonly block installs so I can fix host issues before running the NemoClaw installer.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer.", - "expected_behavior": [ - "The output directly addresses the user's situation: unsure whether Windows-specific setup is complete.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user check the WSL and Docker integration steps that commonly block installs with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix host issues before running the NemoClaw installer.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user check the WSL and Docker integration steps that commonly block installs and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix host issues before running the NemoClaw installer." }, { "id": "docs-get-started-windows-preparation-003", "question": "I'm ready to leave the Windows preparation guide. Help me confirm the Ubuntu shell can run the required commands so I can follow the quickstart without mixing Windows and Linux instructions.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions.", - "expected_behavior": [ - "The output directly addresses the user's situation: ready to leave the Windows preparation guide.", - "The AI coding assistant loads the expected_skill and references/windows-preparation.md", - "The output helps the user confirm the Ubuntu shell can run the required commands with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to follow the quickstart without mixing Windows and Linux instructions.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/windows-preparation.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user confirm the Ubuntu shell can run the required commands and gives enough concrete guidance, decision criteria, verification steps, or risk framing to follow the quickstart without mixing Windows and Linux instructions." }, { "id": "docs-get-started-quickstart-001", "question": "I'm running the OpenClaw quickstart. Help me install NemoClaw and create my first sandboxed agent so I can send a prompt to a working OpenClaw assistant.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant.", - "expected_behavior": [ - "The output directly addresses the user's situation: running the OpenClaw quickstart.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user install NemoClaw and create my first sandboxed agent with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to send a prompt to a working OpenClaw assistant.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user install NemoClaw and create my first sandboxed agent and gives enough concrete guidance, decision criteria, verification steps, or risk framing to send a prompt to a working OpenClaw assistant." }, { "id": "docs-get-started-quickstart-002", "question": "I'm encountering installer prompts or host preflight checks. Help me understand what the installer is asking for and why so I can continue setup without granting unnecessary access.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access.", - "expected_behavior": [ - "The output directly addresses the user's situation: encountering installer prompts or host preflight checks.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand what the installer is asking for and why with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue setup without granting unnecessary access.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user understand what the installer is asking for and why and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue setup without granting unnecessary access." }, { "id": "docs-get-started-quickstart-003", "question": "I'm finishing onboarding. Help me verify the sandbox, inference route, and OpenClaw agent are connected so I can know the setup succeeded end to end.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end.", - "expected_behavior": [ - "The output directly addresses the user's situation: finishing onboarding.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user verify the sandbox, inference route, and OpenClaw agent are connected with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to know the setup succeeded end to end.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user verify the sandbox, inference route, and OpenClaw agent are connected and gives enough concrete guidance, decision criteria, verification steps, or risk framing to know the setup succeeded end to end." }, { "id": "docs-get-started-quickstart-hermes-001", "question": "I'm choosing Hermes instead of OpenClaw. Help me launch a sandboxed Hermes API endpoint so I can serve the agent workflow my downstream clients expect.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing Hermes instead of OpenClaw.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user launch a sandboxed Hermes API endpoint with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to serve the agent workflow my downstream clients expect.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user launch a sandboxed Hermes API endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to serve the agent workflow my downstream clients expect." }, { "id": "docs-get-started-quickstart-hermes-002", "question": "I'm moving through onboarding for Hermes. Help me confirm NemoClaw selected Hermes-specific setup and configuration so I can avoid accidentally creating the default OpenClaw environment.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: moving through onboarding for Hermes.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user confirm NemoClaw selected Hermes-specific setup and configuration with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidentally creating the default OpenClaw environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user confirm NemoClaw selected Hermes-specific setup and configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidentally creating the default OpenClaw environment." }, { "id": "docs-get-started-quickstart-hermes-003", "question": "I'm checking the sandboxed Hermes endpoint. Help me run a small request that proves the endpoint is live so I can hand it to clients or tests with confidence.", "expected_skill": "nemoclaw-user-get-started", - "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence.", - "expected_behavior": [ - "The output directly addresses the user's situation: checking the sandboxed Hermes endpoint.", - "The AI coding assistant loads the expected_skill and references/quickstart-hermes.md", - "The output helps the user run a small request that proves the endpoint is live with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to hand it to clients or tests with confidence.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/quickstart-hermes.md file." - ] + "ground_truth": "A NemoClaw-specific answer that helps the user run a small request that proves the endpoint is live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to hand it to clients or tests with confidence." } ] diff --git a/skills/nemoclaw-user-manage-policy/SKILL.md b/skills/nemoclaw-user-manage-policy/SKILL.md deleted file mode 100644 index e79c1c70c8b..00000000000 --- a/skills/nemoclaw-user-manage-policy/SKILL.md +++ /dev/null @@ -1,292 +0,0 @@ ---- -name: "nemoclaw-user-manage-policy" -description: "Adds, removes, or modifies allowed endpoints in the sandbox policy. Use when customizing network policy, changing egress rules, or configuring sandbox endpoint access. Trigger keywords - customize nemoclaw network policy, sandbox egress policy configuration, nemoclaw integration policy examples, post-install policy setup, openshell approval workflow, policy preset, nemoclaw approve network requests, sandbox egress approval tui." -license: "Apache-2.0" ---- -# Customize the Sandbox Network Policy - -## Gotchas - -- Custom preset hosts bypass NemoClaw's review process and can widen sandbox egress to arbitrary destinations. - -## Prerequisites - -- A running NemoClaw sandbox for dynamic changes, or the NemoClaw source repository for static changes. -- The OpenShell CLI on your `PATH`. - -Add, remove, or modify the endpoints that the sandbox is allowed to reach. - -The sandbox policy is defined in a declarative YAML file in the NemoClaw repository and enforced at runtime by [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell). -NemoClaw supports both static policy changes that persist across restarts and dynamic updates applied to a running sandbox through the OpenShell CLI. - -**Note:** - -If the sandbox needs to reach an HTTP service running on the host, expose the service on a host IP that the OpenShell gateway can reach. -Apply a custom NemoClaw preset with `nemoclaw policy-add --from-file`. -Do not rely on `host.docker.internal` as a general host-service path because it bypasses the OpenShell policy path and may not be reachable in every sandbox runtime. -See Agent cannot reach a host-side HTTP service (use the `nemoclaw-user-reference` skill). - -## Static Changes - -Static changes modify the baseline policy file and take effect after the next sandbox creation. - -### Edit the Policy File - -Open `nemoclaw-blueprint/policies/openclaw-sandbox.yaml` and add or modify endpoint entries. - -If you want a built-in preset to be part of the baseline policy, merge its `network_policies` entries into this file and re-run `nemoclaw onboard`. - -If you only need to apply a preset to a running sandbox, use `nemoclaw policy-add` under [Dynamic Changes](#dynamic-changes). -That updates the live policy and does not edit `openclaw-sandbox.yaml`. - -Use a manual YAML edit when you need to allow custom hosts that are not covered by a preset, such as an internal API or a weather service. - -Each entry in the `network` section defines an endpoint group with the following fields: - -`endpoints` -: Host and port pairs that the sandbox can reach. - -`binaries` -: Executables allowed to use this endpoint. - -`rules` -: HTTP methods and paths that are permitted. - -### Re-Run Onboard - -Apply the updated policy by re-running the onboard wizard: - -```console -$ nemoclaw onboard -``` - -The wizard picks up the modified policy file and applies it to the sandbox. - -### Verify the Policy - -Check that the sandbox is running with the updated policy: - -```console -$ nemoclaw status -``` - -### Add Blueprint Policy Additions - -If you maintain a custom blueprint, you can add extra policy entries under `components.policy.additions` in `nemoclaw-blueprint/blueprint.yaml`. -NemoClaw validates those entries with the same policy schema used by preset files, fetches the live policy during sandbox creation, merges the additions into `network_policies`, and applies the merged policy through OpenShell. -The applied additions are recorded in the run metadata so you can audit which blueprint-level policy entries were active for that sandbox run. - -## Dynamic Changes - -Dynamic changes apply a policy update to a running sandbox without restarting it. - -> [!WARNING] -> `openshell policy set` **replaces** the sandbox's live policy with the contents of the file you provide; it does not merge. -> A running sandbox's live policy is the baseline from `openclaw-sandbox.yaml` plus every preset that was layered on during onboarding. -> Applying a file that contains only the baseline (or only a single preset) silently drops every other preset that was in effect. - -### Option 1: Drop a Preset File and Use `policy-add` (Recommended) - -This is the non-destructive path and the only flow NemoClaw supports out of the box for merging new entries into a running policy. - -1. Create a preset-format YAML file under `nemoclaw-blueprint/policies/presets/`, for example `nemoclaw-blueprint/policies/presets/influxdb.yaml`: - - ```yaml - preset: - name: influxdb - description: "InfluxDB time-series database" - network_policies: - influxdb: - name: influxdb - endpoints: - - host: influxdb.internal.example.com - port: 8086 - protocol: rest - enforcement: enforce - rules: - - allow: { method: GET, path: "/**" } - - allow: { method: POST, path: "/api/v2/write" } - binaries: - - { path: /usr/bin/curl } - ``` - -2. Apply it to the running sandbox: - - ```console - $ nemoclaw my-assistant policy-add - ``` - - NemoClaw reads the live policy via `openshell policy get --full`, structurally merges your preset's `network_policies` into it, and writes the merged result back. - Existing presets and the baseline remain in place. - The preset file under `presets/` also persists across sandbox recreations. - -### Option 2: Snapshot, Edit, and Set via OpenShell - -Use this path only when you cannot add a file under the NemoClaw source tree. -You must start from the **live** policy, not from `openclaw-sandbox.yaml`, so the presets layered on at onboarding are preserved in the file you apply. - -```console -$ openshell policy get --full my-assistant > live-policy.yaml -``` - -Edit `live-policy.yaml` to add your entries under `network_policies:`, keeping the existing `version` field intact, then apply: - -```console -$ openshell policy set --policy live-policy.yaml my-assistant -``` - -### Scope of Dynamic Changes - -Dynamic changes apply only to the current session. -When the sandbox stops, the running policy resets to the baseline composed from `openclaw-sandbox.yaml` plus the presets recorded for the sandbox. -To make a custom policy survive a sandbox recreation, ship the preset file in the repository (Option 1 above — the file under `presets/` persists) or edit `openclaw-sandbox.yaml` and re-run `nemoclaw onboard`. - -### Approve Requests Interactively - -For one-off access, you can approve blocked requests in the OpenShell TUI instead of editing the baseline policy: - -```console -$ openshell term -``` - -This is useful when you want to test a destination before deciding whether it belongs in a permanent preset or custom policy file. - -## Policy Presets - -NemoClaw ships preset policy files for common integrations in `nemoclaw-blueprint/policies/presets/`. -Apply a preset as-is or use it as a starting template for a custom policy. -For guided post-install examples, see [Common Integration Policy Examples](references/integration-policy-examples.md). - -During onboarding, the policy tier (use the `nemoclaw-user-reference` skill) you select determines which presets are enabled by default. -You can add or remove individual presets in the interactive preset screen that follows tier selection. - -Available presets: - -| Preset | Endpoints | -|--------|-----------| -| `brave` | Brave Search API | -| `brew` | Homebrew (Linuxbrew) package manager | -| `discord` | Discord API, gateway, and CDN access | -| `github` | GitHub and GitHub REST API | -| `huggingface` | Hugging Face Hub (download-only) and inference router | -| `jira` | Atlassian Jira API | -| `local-inference` | Local Ollama and vLLM through the host gateway | -| `npm` | npm and Yarn registries | -| `openclaw-pricing` | OpenClaw model-pricing reference fetch (LiteLLM and OpenRouter) | -| `outlook` | Microsoft 365 and Outlook | -| `pypi` | Python Package Index | -| `slack` | Slack API and webhooks | -| `telegram` | Telegram Bot API | -| `wechat` | WeChat (personal) iLink Bot API (experimental) | -| `whatsapp` | WhatsApp Web messaging (experimental) | - -To apply a preset to a running sandbox: - -```console -$ nemoclaw policy-add -``` - -**Note:** - -Preset selection is interactive when you omit a preset name. -Pass a preset name with `--yes` for scripted workflows. - -For example, to interactively add PyPI access to a running sandbox: - -```console -$ nemoclaw my-assistant policy-add -``` - -To list which presets are applied to a sandbox: - -```console -$ nemoclaw policy-list -``` - -To include a preset in the baseline, merge its entries into `openclaw-sandbox.yaml` and re-run `nemoclaw onboard`. - -**Note:** - -The `openshell policy set --policy ` command operates on raw policy files and does not -accept the `preset:` metadata block used in preset YAML files. Use `nemoclaw policy-add` for -presets. - -For scripted workflows, `policy-add` and `policy-remove` accept the preset name as a positional argument: - -```console -$ nemoclaw my-assistant policy-add pypi --yes -$ nemoclaw my-assistant policy-remove pypi --yes -``` - -Set `NEMOCLAW_NON_INTERACTIVE=1` instead of `--yes` to drive the same flow from an environment variable. -See Commands (use the `nemoclaw-user-reference` skill) for the full flag reference. - -`nemoclaw rebuild` reapplies every policy preset to the recreated sandbox, so presets survive an agent-version upgrade without manual reapplication. - -## Custom Preset Files - -Apply a user-authored preset YAML to a running sandbox without editing the baseline or dropping to `openshell policy set`. - -### Authoring - -A custom preset follows the same shape as the built-in ones under `nemoclaw-blueprint/policies/presets/`: - -```yaml -preset: - name: my-internal-api - description: "Internal service" -network_policies: - my-internal-api: - name: my-internal-api - endpoints: - - host: api.example.internal - port: 443 - protocol: rest - enforcement: enforce - rules: - - allow: { method: GET, path: "/**" } - binaries: - - { path: /usr/local/bin/node } -``` - -The top-level `preset.name` must be a lowercase RFC 1123 label (letters, digits, hyphens) and must not collide with a built-in preset name such as `slack` or `pypi`. -Rename `preset.name` if NemoClaw refuses to apply the file because of a collision. - -### Apply a Single File - -```console -$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml -``` - -Preview the endpoints without applying with `--dry-run`, and skip the confirmation prompt with `--yes` or by exporting `NEMOCLAW_NON_INTERACTIVE=1`. - -### Apply Every File in a Directory - -```console -$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes -``` - -Files are processed in lexicographic order. -Processing stops at the first failure; presets already applied are not rolled back. -Fix the failing file and re-run the command to continue. - -**Warning:** - -Custom preset hosts bypass NemoClaw's review process and can widen sandbox egress to arbitrary destinations. -Review every host in a custom preset before applying it, especially when the file originates outside your team. - -Load [references/customize-network-policy-details.md](references/customize-network-policy-details.md) for detailed steps on Remove a Custom Preset. - -## References - -- **[references/integration-policy-examples.md](references/integration-policy-examples.md)** — Guides users through common post-install integration policy setup for maintained NemoClaw policy presets, including Outlook, messaging channels, GitHub, Jira, Brave Search, package managers, Hugging Face, local inference, and OpenShell approval workflows. -- **Load [references/approve-network-requests.md](references/approve-network-requests.md)** when approving or denying sandbox egress requests, managing blocked network calls, or using the approval TUI. Reviews and approves blocked agent network requests in the TUI. -- **Load [references/customize-network-policy-details.md](references/customize-network-policy-details.md)** when you need detailed steps for Remove a Custom Preset. - -## Related Skills - -- [Approve or Deny Agent Network Requests](references/approve-network-requests.md) for real-time operator approval. -- [Common Integration Policy Examples](references/integration-policy-examples.md) for maintained preset examples such as Outlook, messaging, GitHub, Jira, Brave Search, package managers, Hugging Face, and local inference. -- `nemoclaw-user-reference` — Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference -- OpenShell [Policy Schema](https://docs.nvidia.com/openshell/latest/reference/policy-schema.html) for the full YAML policy schema reference. -- OpenShell [Sandbox Policies](https://docs.nvidia.com/openshell/latest/sandboxes/policies.html) for applying, iterating, and debugging policies at the OpenShell layer. diff --git a/skills/nemoclaw-user-manage-policy/evals/evals.json b/skills/nemoclaw-user-manage-policy/evals/evals.json deleted file mode 100644 index 5df648b7484..00000000000 --- a/skills/nemoclaw-user-manage-policy/evals/evals.json +++ /dev/null @@ -1,128 +0,0 @@ -[ - { - "id": "docs-network-policy-customize-network-policy-001", - "question": "I'm customizing sandbox network policy. Help me allow the agent to reach a required external service so I can enable the integration while preserving least privilege.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user allow the agent to reach a required external service and gives enough concrete guidance, decision criteria, verification steps, or risk framing to enable the integration while preserving least privilege.", - "expected_behavior": [ - "The output directly addresses the user's situation: customizing sandbox network policy.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user allow the agent to reach a required external service with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to enable the integration while preserving least privilege.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-network-policy-customize-network-policy-002", - "question": "I'm writing an egress rule. Help me specify the minimum necessary host, port, and protocol so I can avoid opening broader access than the agent needs.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user specify the minimum necessary host, port, and protocol and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid opening broader access than the agent needs.", - "expected_behavior": [ - "The output directly addresses the user's situation: writing an egress rule.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user specify the minimum necessary host, port, and protocol with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid opening broader access than the agent needs.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-network-policy-customize-network-policy-003", - "question": "I'm validating a policy change. Help me test that the intended integration works and unrelated egress remains blocked so I can ship a safer policy update.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user test that the intended integration works and unrelated egress remains blocked and gives enough concrete guidance, decision criteria, verification steps, or risk framing to ship a safer policy update.", - "expected_behavior": [ - "The output directly addresses the user's situation: validating a policy change.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user test that the intended integration works and unrelated egress remains blocked with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to ship a safer policy update.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-network-policy-approve-network-requests-001", - "question": "I'm reviewing a blocked network request. Help me understand why the agent wants to reach that endpoint so I can approve only requests that support the current job.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user understand why the agent wants to reach that endpoint and gives enough concrete guidance, decision criteria, verification steps, or risk framing to approve only requests that support the current job.", - "expected_behavior": [ - "The output directly addresses the user's situation: reviewing a blocked network request.", - "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", - "The output helps the user understand why the agent wants to reach that endpoint with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to approve only requests that support the current job.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." - ] - }, - { - "id": "docs-network-policy-approve-network-requests-002", - "question": "I'm using the approval UI. Help me spot unexpected or prompt-injection-driven egress so I can deny suspicious access before it becomes policy.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user spot unexpected or prompt-injection-driven egress and gives enough concrete guidance, decision criteria, verification steps, or risk framing to deny suspicious access before it becomes policy.", - "expected_behavior": [ - "The output directly addresses the user's situation: using the approval UI.", - "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", - "The output helps the user spot unexpected or prompt-injection-driven egress with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to deny suspicious access before it becomes policy.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." - ] - }, - { - "id": "docs-network-policy-approve-network-requests-003", - "question": "I'm after approving or denying a request. Help me understand audit, rollback, and policy update behavior so I can keep operator decisions traceable.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user understand audit, rollback, and policy update behavior and gives enough concrete guidance, decision criteria, verification steps, or risk framing to keep operator decisions traceable.", - "expected_behavior": [ - "The output directly addresses the user's situation: after approving or denying a request.", - "The AI coding assistant loads the expected_skill and references/approve-network-requests.md", - "The output helps the user understand audit, rollback, and policy update behavior with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to keep operator decisions traceable.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/approve-network-requests.md file." - ] - }, - { - "id": "docs-network-policy-integration-policy-examples-001", - "question": "I'm following an integration policy example. Help me enable a common third-party workflow quickly so I can avoid writing a policy from scratch.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user enable a common third-party workflow quickly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid writing a policy from scratch.", - "expected_behavior": [ - "The output directly addresses the user's situation: following an integration policy example.", - "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", - "The output helps the user enable a common third-party workflow quickly with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid writing a policy from scratch.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." - ] - }, - { - "id": "docs-network-policy-integration-policy-examples-002", - "question": "I'm adapting an example to my organization. Help me replace sample hosts and ports with exact production endpoints so I can create a policy that matches our real integration.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user replace sample hosts and ports with exact production endpoints and gives enough concrete guidance, decision criteria, verification steps, or risk framing to create a policy that matches our real integration.", - "expected_behavior": [ - "The output directly addresses the user's situation: adapting an example to my organization.", - "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", - "The output helps the user replace sample hosts and ports with exact production endpoints with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to create a policy that matches our real integration.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." - ] - }, - { - "id": "docs-network-policy-integration-policy-examples-003", - "question": "I'm copying an example into a stricter environment. Help me identify broad rules or assumptions that need tightening so I can avoid weakening production egress controls.", - "expected_skill": "nemoclaw-user-manage-policy", - "ground_truth": "A NemoClaw-specific answer that helps the user identify broad rules or assumptions that need tightening and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid weakening production egress controls.", - "expected_behavior": [ - "The output directly addresses the user's situation: copying an example into a stricter environment.", - "The AI coding assistant loads the expected_skill and references/integration-policy-examples.md", - "The output helps the user identify broad rules or assumptions that need tightening with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid weakening production egress controls.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/integration-policy-examples.md file." - ] - } -] diff --git a/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md b/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md deleted file mode 100644 index b67ec16f90a..00000000000 --- a/skills/nemoclaw-user-manage-policy/references/approve-network-requests.md +++ /dev/null @@ -1,62 +0,0 @@ -# Approve or Deny Agent Network Requests - -Review and act on network requests that the agent makes to endpoints not listed in the sandbox policy. -OpenShell intercepts these requests and presents them in the TUI for operator approval. - -## Prerequisites - -- A running NemoClaw sandbox. -- The OpenShell CLI on your `PATH`. - -## Open the TUI - -Start the OpenShell terminal UI to monitor sandbox activity: - -```console -$ openshell term -``` - -For a remote sandbox, pass the instance name: - -```console -$ ssh my-gpu-box 'cd ~/nemoclaw && . .env && openshell term' -``` - -The TUI displays the sandbox state, active inference provider, and a live feed of network activity. - -## Trigger a Blocked Request - -When the agent attempts to reach an endpoint that is not in the baseline policy, OpenShell blocks the connection and displays the request in the TUI. -The blocked request includes the following details: - -- **Host and port** of the destination. -- **Binary** that initiated the request. -- **HTTP method** and path, if available. - -## Approve or Deny the Request - -The TUI presents an approval prompt for each blocked request. - -- **Approve** the request to add the endpoint to the running policy for the current session. -- **Deny** the request to keep the endpoint blocked. - -Approved endpoints remain in the running policy until the sandbox stops. -They are not persisted to the baseline policy file. -To keep an endpoint allowed after a restart, update the policy YAML or apply a preset as described in [Customize the Sandbox Network Policy](../SKILL.md). - -## Run the Walkthrough - -From the NemoClaw repository root, run the walkthrough script after you have onboarded at least one sandbox and it is reachable: - -```console -$ ./scripts/walkthrough.sh -``` - -This script opens a split tmux session with the TUI on the left and the agent on the right. -The walkthrough requires tmux and the `NVIDIA_API_KEY` environment variable, and it assumes an existing sandbox to attach to. - -## Related Topics - -- [Customize the Sandbox Network Policy](../SKILL.md) to add endpoints permanently. -- Network Policies (use the `nemoclaw-user-reference` skill) for the full baseline policy reference. -- Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for general sandbox monitoring. diff --git a/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md b/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md deleted file mode 100644 index 07ab88a6a15..00000000000 --- a/skills/nemoclaw-user-manage-policy/references/customize-network-policy-details.md +++ /dev/null @@ -1,11 +0,0 @@ -# Customize the Sandbox Network Policy: Details - -## Remove a Custom Preset - -Custom presets applied with `--from-file` or `--from-dir` are recorded in the NemoClaw sandbox registry alongside their full YAML content, so they can be removed by name — the original file does not need to be kept on disk: - -```console -$ nemoclaw my-assistant policy-remove my-internal-api --yes -``` - -`policy-remove` accepts both built-in and custom preset names. Run `nemoclaw policy-list` to see every preset currently applied to the sandbox. diff --git a/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md b/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md deleted file mode 100644 index 303a7fc05ea..00000000000 --- a/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md +++ /dev/null @@ -1,334 +0,0 @@ -# Common NemoClaw Integration Policy Examples - -Use these examples when a sandbox is already installed and an integration needs network access. -This page covers only integrations that NemoClaw currently ships as maintained policy preset YAML under `nemoclaw-blueprint/policies/presets/`. -Integration setup usually has two separate parts: - -- Configure the integration itself, such as a bot token, OAuth credential, or agent plugin setting. -- Allow the sandbox to reach the integration's network endpoints through NemoClaw and OpenShell policy. - -Prefer NemoClaw commands for policy changes that should be tracked with the sandbox. -Use OpenShell directly when you need to inspect blocked requests or approve a one-off request in the TUI. - -## Before You Start - -Replace `my-assistant` with your sandbox name in the examples. - -Check the current policy state first: - -```console -$ nemoclaw my-assistant policy-list -``` - -For a live view of blocked requests, open the OpenShell TUI in a separate host terminal: - -```console -$ openshell term -``` - -When the agent reaches an endpoint that is not in policy, the TUI shows the host, port, requesting binary, method, and path when available. -Approve a request only when you understand why the integration needs it. -An approval updates the running policy, but it does not create a NemoClaw preset entry that can be reviewed and replayed like `policy-add`. - -## Supported Integration Presets - -NemoClaw ships maintained policy presets for common services in `nemoclaw-blueprint/policies/presets/`. - -| Workflow | Preset | -|----------|--------| -| Brave Search | `brave` | -| Homebrew packages | `brew` | -| Discord messaging | `discord` | -| GitHub and GitHub API | `github` | -| Hugging Face Hub and Inference API | `huggingface` | -| Jira and Atlassian Cloud | `jira` | -| Local Ollama or vLLM through the host gateway | `local-inference` | -| OpenClaw model-pricing reference fetch | `openclaw-pricing` | -| npm and Yarn packages | `npm` | -| Microsoft 365, Outlook, and Graph API | `outlook` | -| Python Package Index | `pypi` | -| Slack messaging | `slack` | -| Telegram Bot API | `telegram` | -| WeChat (personal) iLink Bot API (experimental) | `wechat` | -| WhatsApp Web messaging (experimental) | `whatsapp` | - -Preview the endpoints before applying: - -```console -$ nemoclaw my-assistant policy-add outlook --dry-run -``` - -Apply the preset: - -```console -$ nemoclaw my-assistant policy-add outlook --yes -``` - -Remove it later if the sandbox no longer needs that access: - -```console -$ nemoclaw my-assistant policy-remove outlook --yes -``` - -## Email and Calendar With Microsoft 365 - -Use the `outlook` preset for Microsoft 365 email and calendar workflows that use Microsoft Graph or Outlook endpoints. -The preset allows `graph.microsoft.com`, Microsoft login, and Outlook service endpoints. - -```console -$ nemoclaw my-assistant policy-add outlook --dry-run -$ nemoclaw my-assistant policy-add outlook --yes -``` - -Then configure the email or calendar tool credentials through the integration you are running in the sandbox. -Keep OAuth client secrets and refresh tokens out of policy files. - -If the tool still fails, run `openshell term`, trigger the workflow again, and inspect the blocked request. -If the blocked endpoint is not covered by the maintained `outlook` preset, treat it as a separate policy review instead of assuming it is part of the supported preset. - -## Telegram Bot Messaging - -Telegram needs both channel configuration and egress policy. -If you already enabled Telegram during onboarding but did not include the preset, add it to the running sandbox: - -```console -$ nemoclaw my-assistant policy-add telegram --yes -``` - -To add Telegram after onboarding, set the token on the host, add the channel, rebuild so the image picks up the channel config, and make sure the policy preset is applied: - -```console -$ export TELEGRAM_BOT_TOKEN= -$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add telegram -$ nemoclaw my-assistant rebuild -$ nemoclaw my-assistant policy-add telegram --yes -``` - -If delivery fails, open the TUI and send a test message to the bot: - -```console -$ openshell term -``` - -The matching preset for each supported messaging channel is the channel name (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`). - -## Slack or Discord Messaging - -Slack and Discord also need both channel configuration and egress policy. -Use the matching policy preset after you configure the channel credentials. - -For Slack: - -```console -$ export SLACK_BOT_TOKEN= -$ export SLACK_APP_TOKEN= -$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add slack -$ nemoclaw my-assistant rebuild -$ nemoclaw my-assistant policy-add slack --yes -``` - -For Discord: - -```console -$ export DISCORD_BOT_TOKEN= -$ export DISCORD_SERVER_ID= -$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add discord -$ nemoclaw my-assistant rebuild -$ nemoclaw my-assistant policy-add discord --yes -``` - -If you enabled Slack or Discord during onboarding, apply only the matching preset: - -```console -$ nemoclaw my-assistant policy-add slack --yes -$ nemoclaw my-assistant policy-add discord --yes -``` - -## WeChat or WhatsApp Messaging (Experimental) - -WeChat and WhatsApp are experimental. -Both rely on QR-based pairing flows that are more fragile than token-based bots, and the upstream client libraries can change behavior without notice. - -WeChat uses Tencent's iLink Bot API for personal accounts. -The bot token is captured by a host-side QR scan during onboarding rather than pasted from a developer portal. -Add the channel interactively and apply the preset: - -```console -$ nemoclaw my-assistant channels add wechat -$ nemoclaw my-assistant rebuild -$ nemoclaw my-assistant policy-add wechat --yes -``` - -WhatsApp Web pairs entirely inside the sandbox via QR scan, so `channels add` does not collect a host-side token. -Apply the preset and complete the in-sandbox pairing after the rebuild: - -```console -$ NEMOCLAW_NON_INTERACTIVE=1 nemoclaw my-assistant channels add whatsapp -$ nemoclaw my-assistant rebuild -$ nemoclaw my-assistant policy-add whatsapp --yes -``` - -If you enabled WeChat or WhatsApp during onboarding, apply only the matching preset: - -```console -$ nemoclaw my-assistant policy-add wechat --yes -$ nemoclaw my-assistant policy-add whatsapp --yes -``` - -## GitHub and Jira - -Use `github` when the agent needs GitHub API or Git access. -Use `jira` when the agent needs Atlassian Jira access. - -Preview first: - -```console -$ nemoclaw my-assistant policy-add github --dry-run -$ nemoclaw my-assistant policy-add jira --dry-run -``` - -Apply the preset that matches the workflow: - -```console -$ nemoclaw my-assistant policy-add github --yes -$ nemoclaw my-assistant policy-add jira --yes -``` - -The `jira` preset intentionally allows Node.js access to Atlassian Cloud and does not allow `curl`. -When validating it manually, avoid plain `curl -s` against `auth.atlassian.com`. -Atlassian can return an empty redirect body even when the request succeeds. -Use an explicit status probe instead: - -```console -$ node -e "require('https').get('https://api.atlassian.com', r => console.log(r.statusCode))" -$ curl -sS -o /dev/null -w '%{http_code}' --max-time 10 https://auth.atlassian.com -``` - -Before approval, the curl probe should report `000` or a local policy denial. -After approving the blocked request in OpenShell, it should report an HTTP -status such as `301` or `200`. - -Remove access when the task is done: - -```console -$ nemoclaw my-assistant policy-remove github --yes -$ nemoclaw my-assistant policy-remove jira --yes -``` - -## Brave Search - -The default Balanced policy tier includes `brave`. -If you chose Restricted during onboarding or removed the preset later, add it before enabling Brave Search workflows: - -```console -$ nemoclaw my-assistant policy-add brave --dry-run -$ nemoclaw my-assistant policy-add brave --yes -``` - -The Brave Search API key is still configured separately during onboarding or through the web search setup flow. - -## Package and Model Tooling - -Use these presets when an agent workflow installs packages or downloads model assets: - -| Workflow | Preset | -|----------|--------| -| npm or Yarn packages | `npm` | -| Python packages from PyPI | `pypi` | -| Homebrew packages | `brew` | -| Hugging Face model or dataset access | `huggingface` | - -Add only the preset required for the task: - -```console -$ nemoclaw my-assistant policy-add npm --yes -$ nemoclaw my-assistant policy-add pypi --yes -$ nemoclaw my-assistant policy-add brew --yes -$ nemoclaw my-assistant policy-add huggingface --yes -``` - -Remove package access after a one-time setup task if the sandbox no longer needs it: - -```console -$ nemoclaw my-assistant policy-remove npm --yes -$ nemoclaw my-assistant policy-remove pypi --yes -$ nemoclaw my-assistant policy-remove brew --yes -$ nemoclaw my-assistant policy-remove huggingface --yes -``` - -### Homebrew Specifics - -The sandbox base image includes Homebrew (Linuxbrew), so applying the `brew` preset is the only step needed before installing a formula. -A `/usr/local/bin/brew` symlink puts the entry point on the sandbox `PATH`, so the agent can run `brew install ` directly: - -```console -$ nemoclaw my-assistant policy-add brew --yes -$ nemoclaw my-assistant exec -- brew install -``` - -You do not need to bootstrap Homebrew, install build dependencies, or source `brew shellenv` inside the sandbox. - -## Model Pricing - -OpenClaw's gateway fetches reference pricing from LiteLLM and OpenRouter on every start so it can populate `usage.cost` in session JSONL records. -The default-strict egress policy denies both hosts. -The fetch fails closed, the gateway logs `[gateway/model-pricing] LiteLLM pricing fetch failed: TypeError: fetch failed` (and the matching OpenRouter line) on every startup, and every session record records `usage.cost = 0` even though the input and output token counts populate correctly. -Tools that read the session log to display per-turn cost (audit dashboards, compliance review surfaces) cannot distinguish a real free run from this silent failure. - -Apply the `openclaw-pricing` preset to allow both pricing endpoints. -The preset pins each host to a single read-only path so it does not widen egress beyond the pricing fetch: - -```console -$ nemoclaw my-assistant policy-add openclaw-pricing --dry-run -$ nemoclaw my-assistant policy-add openclaw-pricing --yes -``` - -After the next gateway restart the WARN entries stop and `usage.cost` populates from the fetched pricing tables. - -## Local Inference - -Use `local-inference` when the sandbox needs access to host-side local inference services such as Ollama or vLLM through the OpenShell host gateway. -Onboarding auto-suggests this preset when you choose a local provider. -If you need to add it after onboarding: - -```console -$ nemoclaw my-assistant policy-add local-inference --dry-run -$ nemoclaw my-assistant policy-add local-inference --yes -``` - -Then verify the sandbox status: - -```console -$ nemoclaw my-assistant status -``` - -## Inspect or Replace the Live Policy - -Use `policy-list` for normal preset state: - -```console -$ nemoclaw my-assistant policy-list -``` - -Use OpenShell when you need the full enforced YAML: - -```console -$ openshell policy get --full my-assistant > live-policy.yaml -``` - -If you must replace the live policy, edit the full policy file and set it back: - -```console -$ openshell policy set --policy live-policy.yaml my-assistant --wait -``` - -`openshell policy set` replaces the live policy with the file you provide. -It does not accept a preset file that starts with a `preset:` block, and it does not merge a single endpoint into the existing policy. -Use `nemoclaw my-assistant policy-add` for maintained NemoClaw presets. - -## Next Steps - -- [Approve or Deny Agent Network Requests](approve-network-requests.md) for the interactive OpenShell TUI flow. -- [Customize the Sandbox Network Policy](../SKILL.md) for static policy edits and raw OpenShell policy files. -- Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) for Telegram, Discord, Slack, WeChat, and WhatsApp channel configuration. -- Commands (use the `nemoclaw-user-reference` skill) for the full `policy-add`, `policy-list`, `policy-remove`, and `channels` command reference. diff --git a/skills/nemoclaw-user-manage-sandboxes/SKILL.md b/skills/nemoclaw-user-manage-sandboxes/SKILL.md deleted file mode 100644 index 41e0bffd973..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/SKILL.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -name: "nemoclaw-user-manage-sandboxes" -description: "Explains operational tasks after the quickstart: listing sandboxes, status and health checks, logs, diagnostics, port forwards, multiple sandboxes, credential reset, rebuilds, network presets, upgrades, and uninstall. Trigger keywords - manage nemoclaw sandboxes, nemoclaw status, nemoclaw list, nemoclaw dashboard port, nemoclaw rebuild, nemoclaw upgrade sandboxes, nemoclaw uninstall, sandbox mutability, sandbox runtime configuration, sandbox rebuild, nemoclaw backup, nemoclaw restore, workspace backup, openshell sandbox download upload, nemoclaw messaging channels, nemoclaw telegram, nemoclaw discord, nemoclaw slack, nemoclaw wechat, nemoclaw whatsapp, openshell channel messaging, nemoclaw workspace files, soul.md, user.md, identity.md, agents.md, sandbox persistence." -license: "Apache-2.0" ---- -# Manage Sandbox Lifecycle - -Use this guide after you finish the OpenClaw quickstart (use the `nemoclaw-user-get-started` skill). -It covers day-two sandbox operations such as listing sandboxes, checking health, managing ports, rebuilding safely, upgrading, and uninstalling. -When a workflow uses the lower-level OpenShell CLI, see CLI Selection Guide (use the `nemoclaw-user-reference` skill) for the boundary between `nemoclaw` and `openshell`. - -## List Sandboxes - -List every sandbox registered on this host: - -```console -$ nemoclaw list -``` - -The list shows each sandbox's model, provider, policy presets, active SSH session indicator, and dashboard URL when a dashboard port is recorded. -Use JSON output for scripts: - -```console -$ nemoclaw list --json -``` - -## Check Sandbox Health - -Check a specific sandbox's health, inference route, active connections, live policy, update status, and messaging-channel overlap warnings: - -```console -$ nemoclaw my-assistant status -``` - -Use the host-level status command when you want the sandbox inventory plus host auxiliary service state, such as cloudflared: - -```console -$ nemoclaw status -``` - -## Inspect Logs - -View recent sandbox logs: - -```console -$ nemoclaw my-assistant logs -``` - -Stream logs while you reproduce a problem: - -```console -$ nemoclaw my-assistant logs --follow -``` - -The log command reads both OpenClaw gateway output and OpenShell audit events, so policy denials appear beside gateway logs. - -## Collect Diagnostics - -Collect diagnostics for bug reports or support handoff: - -```console -$ nemoclaw debug --sandbox my-assistant --output nemoclaw-debug.tar.gz -``` - -Use `--quick` for a smaller local summary: - -```console -$ nemoclaw debug --quick --sandbox my-assistant -``` - -The debug command gathers system information, Docker state, gateway logs, and sandbox status. - -## Manage Dashboard Ports - -If the forward stopped, or the installer reported that no active forward was found and the URL does not load, restart it manually with the port from the install summary. - -```console -$ openshell forward start --background my-gpt-claw -``` - -To list active forwards across all sandboxes, run the following command. - -```console -$ openshell forward list -``` - -## Run Multiple Sandboxes - -Each sandbox needs its own dashboard port, since `openshell forward` refuses to bind a port that another sandbox is already using. -When the default port is already held by another sandbox, `nemoclaw onboard` scans ports `18789` through `18799` and uses the next free port. - -```console -$ nemoclaw onboard # first sandbox uses 18789 -$ nemoclaw onboard # second sandbox uses the next free port, such as 18790 -``` - -To choose a specific port, pass `--control-ui-port`: - -```console -$ nemoclaw onboard --control-ui-port 19000 -``` - -You can also set `CHAT_UI_URL` or `NEMOCLAW_DASHBOARD_PORT` before onboarding: - -```console -$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard -$ NEMOCLAW_DASHBOARD_PORT=19000 nemoclaw onboard -``` - -For full details on port conflicts and overrides, refer to Port already in use (use the `nemoclaw-user-reference` skill). - -## Reconfigure or Recover - -Recover from a misconfigured sandbox without re-running the full onboard wizard or destroying workspace state. - -### Change Inference Model or API - -Change the active model or provider at runtime without rebuilding the sandbox: - -```console -$ nemoclaw inference set --model --provider -``` - -Refer to Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) for provider-specific model IDs and API compatibility notes. - -### Restart the Gateway and Port Forward - -If `nemoclaw status` reports the sandbox is alive but the gateway is not running, run the recover command instead of opening a shell. - -```console -$ nemoclaw recover -``` - -The command restarts the in-sandbox gateway and re-establishes the dashboard port-forward in one step. -It is idempotent and safe to script. -Refer to `nemoclaw recover` (use the `nemoclaw-user-reference` skill) for details. - -### Reset a Stored Credential - -If a provider credential was entered incorrectly during onboarding, clear the gateway-registered value and re-enter it on the next onboard run: - -```console -$ nemoclaw credentials list # see which providers are registered -$ nemoclaw credentials reset # clear a single provider, for example nvidia-prod -$ nemoclaw onboard # re-run to re-enter the cleared provider -``` - -The credentials command is documented in full at `nemoclaw credentials reset ` (use the `nemoclaw-user-reference` skill). - -### Rebuild a Sandbox While Preserving Workspace State - -If you changed the underlying Dockerfile, upgraded OpenClaw, or want to pick up a new base image without losing your sandbox's workspace files, use `rebuild` instead of destroying and recreating: - -```console -$ nemoclaw rebuild -``` - -Rebuild preserves the mounted workspace and registered policies while recreating the container. -If NemoClaw cannot archive any requested state path, it reports the backup failure and stops before deleting the original sandbox. -Refer to `nemoclaw rebuild` (use the `nemoclaw-user-reference` skill) for flag details. - -### Add a Network Preset After Onboarding - -Apply an additional preset, such as Telegram or GitHub, to a running sandbox without re-onboarding: - -```console -$ nemoclaw policy-add -``` - -Refer to `nemoclaw policy-add` (use the `nemoclaw-user-reference` skill) for usage details and flags. - -Non-interactive re-onboards in the default `suggested` policy mode preserve presets added this way. -To make a re-onboard authoritative, set `NEMOCLAW_POLICY_MODE=custom` and provide `NEMOCLAW_POLICY_PRESETS` with the exact list to apply; onboarding removes anything else. -See `NEMOCLAW_POLICY_MODE` (use the `nemoclaw-user-reference` skill) for the full table. - -## Update to the Latest Version - -When a new NemoClaw release becomes available, update the `nemoclaw` CLI on your host and check existing sandboxes for stale agent/runtime versions. - -### Update the NemoClaw CLI - -Re-run the installer. -Before it onboards anything, the installer calls `nemoclaw backup-all` (use the `nemoclaw-user-reference` skill) automatically, storing a snapshot of each running sandbox in `~/.nemoclaw/rebuild-backups/` as a safety net. -If your existing gateway is from OpenShell earlier than `0.0.37`, the installer prompts before it runs the new automatic gateway upgrade path. -The automatic path is offered only when the existing `nemoclaw` CLI supports `backup-all`; older installs must preserve sandbox state manually before retiring the gateway. -For unattended installs, set `NEMOCLAW_ACCEPT_EXPERIMENTAL_OPENSHELL_UPGRADE=1`, or manually run `nemoclaw backup-all` and `openshell gateway destroy -g nemoclaw || openshell gateway destroy` before rerunning the installer as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_OPENSHELL_UPGRADE_PREPARED=1 bash`. - -```console -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -``` - -### Upgrade Sandboxes with Stale Agent and Runtime Versions - -The installer checks registered sandboxes after onboarding succeeds and runs `nemoclaw upgrade-sandboxes --auto` for stale running sandboxes. -Use `upgrade-sandboxes` directly to verify the result, rebuild when you skipped the installer or onboarding step, or handle sandboxes that were stopped or could not be version-checked. -The upgrade flow is non-destructive by default because NemoClaw preserves manifest-defined workspace state, but a manual snapshot before any major upgrade gives you a state restore point. - -```console -$ nemoclaw snapshot create --name pre-upgrade # optional, recommended -$ nemoclaw update --yes # updates CLI through the maintained installer flow -$ nemoclaw upgrade-sandboxes --check # verify or list remaining stale/unknown sandboxes -$ nemoclaw upgrade-sandboxes # manually rebuild remaining stale running sandboxes -``` - -`nemoclaw update` is the CLI wrapper around the same installer path as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash`. -Use `nemoclaw update --check` when you only want to inspect version state and see the maintained update command. - -For scripted manual rebuilds, use `nemoclaw upgrade-sandboxes --auto` to skip the confirmation prompt. - -If the upgraded sandbox needs its workspace state reverted, restore the pre-upgrade snapshot into the running sandbox. -This restores saved state directories only; it does not downgrade the sandbox image or agent/runtime: - -```console -$ nemoclaw snapshot restore pre-upgrade -``` - -Load [references/lifecycle-details.md](references/lifecycle-details.md) for detailed steps on What Changes During a Rebuild. - -## Uninstall - -To remove NemoClaw and all resources created during setup, run the CLI's built-in uninstall command: - -```bash -nemoclaw uninstall -``` - -| Flag | Effect | -|--------------------|------------------------------------------------------| -| `--yes` | Skip the confirmation prompt. | -| `--keep-openshell` | Leave OpenShell binaries installed. | -| `--delete-models` | Also remove NemoClaw-pulled Ollama models. | - -`nemoclaw uninstall` runs the version-pinned `uninstall.sh` that shipped with your installed CLI, so it does not fetch anything over the network at uninstall time. - -If the `nemoclaw` CLI is missing or broken, fall back to the hosted script: - -```bash -curl -fsSL https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh | bash -``` - -The same `--yes`, `--keep-openshell`, and `--delete-models` flags listed above also apply to the hosted script. Pass them after `bash -s --`. - -```bash -curl -fsSL https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh | bash -s -- --yes --delete-models -``` - -For a full comparison of the two forms, including what they fetch, what they trust, and when to prefer each, see `nemoclaw uninstall` vs. the hosted `uninstall.sh` (use the `nemoclaw-user-reference` skill). - -## References - -- **[references/runtime-controls.md](references/runtime-controls.md)** — Single page that answers what can change at runtime versus what requires a rebuild for NemoClaw sandboxes. -- **Load [references/backup-restore.md](references/backup-restore.md)** when downloading workspace files from a sandbox, uploading restored files into a new sandbox, or preserving sandbox state across rebuilds. Backs up and restores OpenClaw workspace files before destructive operations such as sandbox rebuilds. -- **Load [references/messaging-channels.md](references/messaging-channels.md)** when setting up messaging channels, chat interfaces, or integrations without relying on nemoclaw tunnel start for bridges. Explains how Telegram, Discord, Slack, WeChat, and WhatsApp reach sandboxed OpenClaw and Hermes agents through OpenShell-managed processes and NemoClaw channel commands. -- **Load [references/workspace-files.md](references/workspace-files.md)** when users ask about `SOUL.md`, `USER.md`, `IDENTITY.md`, `AGENTS.md`, or other workspace files, or when preparing to back up or restore workspace state. Explains what workspace personality and configuration files are, where they live, and how they persist across sandbox restarts. -- **Load [references/lifecycle-details.md](references/lifecycle-details.md)** when you need detailed steps for What Changes During a Rebuild. - -## Related Skills - -- [Set Up Messaging Channels](references/messaging-channels.md) to connect Telegram, Discord, or Slack. -- [Workspace Files](references/workspace-files.md) for persistent OpenClaw files inside the sandbox. -- [Backup and Restore](references/backup-restore.md) for snapshot and restore workflows. -- `nemoclaw-user-monitor-sandbox` — Monitor Sandbox Activity (use the `nemoclaw-user-monitor-sandbox` skill) for observability tools diff --git a/skills/nemoclaw-user-manage-sandboxes/evals/evals.json b/skills/nemoclaw-user-manage-sandboxes/evals/evals.json deleted file mode 100644 index 891606460ed..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/evals/evals.json +++ /dev/null @@ -1,212 +0,0 @@ -[ - { - "id": "docs-manage-sandboxes-lifecycle-001", - "question": "I'm managing a NemoClaw sandbox. Help me check status, health, logs, ports, providers, upgrades, and uninstall paths so I can operate the sandbox safely after quickstart.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user check status, health, logs, ports, providers, upgrades, and uninstall paths and gives enough concrete guidance, decision criteria, verification steps, or risk framing to operate the sandbox safely after quickstart.", - "expected_behavior": [ - "The output directly addresses the user's situation: managing a NemoClaw sandbox.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user check status, health, logs, ports, providers, upgrades, and uninstall paths with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to operate the sandbox safely after quickstart.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-manage-sandboxes-lifecycle-002", - "question": "I'm choosing a lifecycle command. Help me understand which commands inspect, restart, rebuild, or destroy state so I can avoid accidental data loss.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user understand which commands inspect, restart, rebuild, or destroy state and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid accidental data loss.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing a lifecycle command.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand which commands inspect, restart, rebuild, or destroy state with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid accidental data loss.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-manage-sandboxes-lifecycle-003", - "question": "I'm planning an upgrade, rebuild, or uninstall. Help me know when to preserve workspace files first so I can recover useful agent state after disruptive changes.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user know when to preserve workspace files first and gives enough concrete guidance, decision criteria, verification steps, or risk framing to recover useful agent state after disruptive changes.", - "expected_behavior": [ - "The output directly addresses the user's situation: planning an upgrade, rebuild, or uninstall.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user know when to preserve workspace files first with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to recover useful agent state after disruptive changes.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-manage-sandboxes-runtime-controls-001", - "question": "I'm changing a running sandbox. Help me know which controls can change without rebuild or re-onboarding so I can make safe adjustments with minimal downtime.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user know which controls can change without rebuild or re-onboarding and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make safe adjustments with minimal downtime.", - "expected_behavior": [ - "The output directly addresses the user's situation: changing a running sandbox.", - "The AI coding assistant loads the expected_skill and references/runtime-controls.md", - "The output helps the user know which controls can change without rebuild or re-onboarding with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make safe adjustments with minimal downtime.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." - ] - }, - { - "id": "docs-manage-sandboxes-runtime-controls-002", - "question": "I'm reviewing a runtime control. Help me classify it as hot-reloadable, rebuild-only, or onboarding-only so I can choose the correct operational path.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user classify it as hot-reloadable, rebuild-only, or onboarding-only and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose the correct operational path.", - "expected_behavior": [ - "The output directly addresses the user's situation: reviewing a runtime control.", - "The AI coding assistant loads the expected_skill and references/runtime-controls.md", - "The output helps the user classify it as hot-reloadable, rebuild-only, or onboarding-only with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose the correct operational path.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." - ] - }, - { - "id": "docs-manage-sandboxes-runtime-controls-003", - "question": "I'm responding to an incident or risky agent behavior. Help me use `shields up`, `shields down`, and `shields status` correctly so I can tighten or inspect controls without confusion.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user use `shields up`, `shields down`, and `shields status` correctly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to tighten or inspect controls without confusion.", - "expected_behavior": [ - "The output directly addresses the user's situation: responding to an incident or risky agent behavior.", - "The AI coding assistant loads the expected_skill and references/runtime-controls.md", - "The output helps the user use `shields up`, `shields down`, and `shields status` correctly with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to tighten or inspect controls without confusion.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/runtime-controls.md file." - ] - }, - { - "id": "docs-manage-sandboxes-backup-restore-001", - "question": "I'm backing up workspace files before a destructive operation. Help me preserve agent memory, identity, and useful configuration so I can rebuild or migrate without losing important state.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user preserve agent memory, identity, and useful configuration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to rebuild or migrate without losing important state.", - "expected_behavior": [ - "The output directly addresses the user's situation: backing up workspace files before a destructive operation.", - "The AI coding assistant loads the expected_skill and references/backup-restore.md", - "The output helps the user preserve agent memory, identity, and useful configuration with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to rebuild or migrate without losing important state.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." - ] - }, - { - "id": "docs-manage-sandboxes-backup-restore-002", - "question": "I'm handling a workspace archive. Help me understand credential stripping and integrity checks so I can trust the archive without exposing secrets.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user understand credential stripping and integrity checks and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the archive without exposing secrets.", - "expected_behavior": [ - "The output directly addresses the user's situation: handling a workspace archive.", - "The AI coding assistant loads the expected_skill and references/backup-restore.md", - "The output helps the user understand credential stripping and integrity checks with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the archive without exposing secrets.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." - ] - }, - { - "id": "docs-manage-sandboxes-backup-restore-003", - "question": "I'm restoring workspace files. Help me verify the agent's useful memory returned so I can continue work without reintroducing sensitive host data.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user verify the agent's useful memory returned and gives enough concrete guidance, decision criteria, verification steps, or risk framing to continue work without reintroducing sensitive host data.", - "expected_behavior": [ - "The output directly addresses the user's situation: restoring workspace files.", - "The AI coding assistant loads the expected_skill and references/backup-restore.md", - "The output helps the user verify the agent's useful memory returned with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to continue work without reintroducing sensitive host data.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/backup-restore.md file." - ] - }, - { - "id": "docs-manage-sandboxes-workspace-files-001", - "question": "I'm inspecting workspace files. Help me understand where personality, identity, and configuration live so I can predict how the agent will behave across sessions.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user understand where personality, identity, and configuration live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to predict how the agent will behave across sessions.", - "expected_behavior": [ - "The output directly addresses the user's situation: inspecting workspace files.", - "The AI coding assistant loads the expected_skill and references/workspace-files.md", - "The output helps the user understand where personality, identity, and configuration live with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to predict how the agent will behave across sessions.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." - ] - }, - { - "id": "docs-manage-sandboxes-workspace-files-002", - "question": "I'm adding durable instructions for the agent. Help me know which files persist and who owns them so I can put guidance in the right place.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user know which files persist and who owns them and gives enough concrete guidance, decision criteria, verification steps, or risk framing to put guidance in the right place.", - "expected_behavior": [ - "The output directly addresses the user's situation: adding durable instructions for the agent.", - "The AI coding assistant loads the expected_skill and references/workspace-files.md", - "The output helps the user know which files persist and who owns them with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to put guidance in the right place.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." - ] - }, - { - "id": "docs-manage-sandboxes-workspace-files-003", - "question": "I'm restarting, rebuilding, or migrating a sandbox. Help me understand how each action affects workspace state so I can avoid losing or duplicating important files.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user understand how each action affects workspace state and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid losing or duplicating important files.", - "expected_behavior": [ - "The output directly addresses the user's situation: restarting, rebuilding, or migrating a sandbox.", - "The AI coding assistant loads the expected_skill and references/workspace-files.md", - "The output helps the user understand how each action affects workspace state with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid losing or duplicating important files.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/workspace-files.md file." - ] - }, - { - "id": "docs-manage-sandboxes-messaging-channels-001", - "question": "I'm connecting a messaging channel. Help me let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel so I can support real-world always-on interactions.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel and gives enough concrete guidance, decision criteria, verification steps, or risk framing to support real-world always-on interactions.", - "expected_behavior": [ - "The output directly addresses the user's situation: connecting a messaging channel.", - "The AI coding assistant loads the expected_skill and references/messaging-channels.md", - "The output helps the user let users reach the sandboxed agent through Telegram, Discord, Slack, or another channel with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to support real-world always-on interactions.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." - ] - }, - { - "id": "docs-manage-sandboxes-messaging-channels-002", - "question": "I'm configuring channel credentials and processes. Help me understand what OpenShell supervises and where secrets live so I can trust the messaging integration operationally.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what OpenShell supervises and where secrets live and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the messaging integration operationally.", - "expected_behavior": [ - "The output directly addresses the user's situation: configuring channel credentials and processes.", - "The AI coding assistant loads the expected_skill and references/messaging-channels.md", - "The output helps the user understand what OpenShell supervises and where secrets live with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the messaging integration operationally.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." - ] - }, - { - "id": "docs-manage-sandboxes-messaging-channels-003", - "question": "I'm testing a new messaging channel. Help me send and receive a message through the full path so I can prove the channel, gateway, and sandboxed agent are wired correctly.", - "expected_skill": "nemoclaw-user-manage-sandboxes", - "ground_truth": "A NemoClaw-specific answer that helps the user send and receive a message through the full path and gives enough concrete guidance, decision criteria, verification steps, or risk framing to prove the channel, gateway, and sandboxed agent are wired correctly.", - "expected_behavior": [ - "The output directly addresses the user's situation: testing a new messaging channel.", - "The AI coding assistant loads the expected_skill and references/messaging-channels.md", - "The output helps the user send and receive a message through the full path with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to prove the channel, gateway, and sandboxed agent are wired correctly.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/messaging-channels.md file." - ] - } -] diff --git a/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md b/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md deleted file mode 100644 index 830f35e1f47..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/references/backup-restore.md +++ /dev/null @@ -1,164 +0,0 @@ -# Backup and Restore Workspace Files - -Workspace files define your agent's personality, memory, and user context. -They persist across sandbox restarts but are **permanently deleted** when you run `nemoclaw destroy`. - -This guide covers snapshot commands, manual backup with CLI commands, and an automated script. - -## When to Back Up - -- **Before running `nemoclaw destroy`** -- Before major NemoClaw version upgrades -- Periodically, if you've invested time customizing your agent - -## Snapshot Commands - -The fastest way to back up and restore sandbox state is with the built-in snapshot commands. -Snapshots capture all workspace state directories defined in the agent manifest and store them in `~/.nemoclaw/rebuild-backups//`. -Agent manifests may also declare durable top-level state files. For Hermes, -snapshots include `SOUL.md` and the SQLite database behind `.hermes/state.db` -using SQLite's online backup API, then restore that database through SQLite -instead of copying a live raw database file. -Treat snapshot directories as private local data: the Hermes database can -contain session metadata and message history needed for a faithful restore. - -```console -$ nemoclaw my-assistant snapshot create -$ nemoclaw my-assistant snapshot list -$ nemoclaw my-assistant snapshot restore -``` - -`snapshot list` prints a table of version, name, timestamp, and path. Versions (`v1`, `v2`, ..., `vN`) are computed from the timestamp order, so `vN` is always the newest snapshot. - -To tag a snapshot with a human-readable label, pass `--name`: - -```console -$ nemoclaw my-assistant snapshot create --name before-upgrade -``` - -To restore a specific snapshot instead of the latest, pass a version, name, or timestamp prefix: - -```console -$ nemoclaw my-assistant snapshot restore v3 -$ nemoclaw my-assistant snapshot restore before-upgrade -$ nemoclaw my-assistant snapshot restore 2026-04-14T -``` - -To clone a snapshot into a different sandbox name, pass `--to `. -If the destination sandbox already exists, NemoClaw refuses to overwrite it unless you pass `--force`: - -```console -$ nemoclaw my-assistant snapshot restore before-upgrade --to my-assistant-clone -$ nemoclaw my-assistant snapshot restore before-upgrade --to my-assistant-clone --force --yes -``` - -The `nemoclaw rebuild` command uses the same snapshot mechanism automatically. -Snapshot restore performs a targeted repair for legacy `.openclaw-data` symlinks that were created by older images. -Unsafe symlinks and hard links inside sandbox state are rejected during backup creation before they can enter a snapshot. -Credential-bearing Hermes files such as `auth.json` are intentionally excluded -from snapshots. NemoClaw-regenerated Hermes config files (`config.yaml` and -`.env`) are also excluded; model/provider and messaging credentials are -recreated from host-side onboarding and OpenShell provider state during rebuild. -For full details, see the Commands reference (use the `nemoclaw-user-reference` skill). - -## Manual Backup - -Use `openshell sandbox download` to copy files from the sandbox to your host. - -```console -$ SANDBOX=my-assistant -$ BACKUP_DIR=~/.nemoclaw/backups/$(date +%Y%m%d-%H%M%S) -$ mkdir -p "$BACKUP_DIR" - -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/SOUL.md "$BACKUP_DIR/" -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/USER.md "$BACKUP_DIR/" -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/IDENTITY.md "$BACKUP_DIR/" -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/AGENTS.md "$BACKUP_DIR/" -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/MEMORY.md "$BACKUP_DIR/" -$ openshell sandbox download "$SANDBOX" /sandbox/.openclaw/workspace/memory/ "$BACKUP_DIR/memory/" -``` - -## Manual Restore - -Use `openshell sandbox upload` to push files back into a sandbox. - -```console -$ SANDBOX=my-assistant -$ BACKUP_DIR=~/.nemoclaw/backups/20260320-120000 # pick a timestamp - -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/SOUL.md" /sandbox/.openclaw/workspace/ -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/USER.md" /sandbox/.openclaw/workspace/ -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/IDENTITY.md" /sandbox/.openclaw/workspace/ -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/AGENTS.md" /sandbox/.openclaw/workspace/ -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/MEMORY.md" /sandbox/.openclaw/workspace/ -$ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/memory/" /sandbox/.openclaw/workspace/memory/ -``` - -## Using the Backup Script - -The repository includes a convenience script at `scripts/backup-workspace.sh`. - -### Backup - -```console -$ ./scripts/backup-workspace.sh backup my-assistant -Backing up workspace from sandbox 'my-assistant'... -Backup saved to /home/user/.nemoclaw/backups/20260320-120000/ (6 items) -``` - -### Restore - -Restore from the most recent backup: - -```console -$ ./scripts/backup-workspace.sh restore my-assistant -``` - -Restore from a specific timestamp: - -```console -$ ./scripts/backup-workspace.sh restore my-assistant 20260320-120000 -``` - -## Verifying a Backup - -List backed-up files to confirm completeness: - -```console -$ ls -la ~/.nemoclaw/backups/20260320-120000/ -AGENTS.md -IDENTITY.md -MEMORY.md -SOUL.md -USER.md -memory/ -``` - -## Multi-Agent Deployments - -When OpenClaw is configured with multiple named agents, each agent has its own -workspace directory (`workspace-main/`, `workspace-support/`, `workspace-ops/`, -and so on — see [Multi-Agent Deployments](workspace-files.md#multi-agent-deployments)). - -`nemoclaw snapshot create` automatically discovers every `workspace-*/` -directory under the sandbox state tree and includes it in the snapshot bundle -alongside the default `workspace/`. `snapshot restore` re-applies the full -per-agent set. No manual per-workspace backup pattern is needed. - -The sandbox entrypoint ensures every per-agent workspace lives directly under -the persistent `.openclaw/` tree, so state also survives `openshell sandbox restart`. - -### Shared files across agents - -Files that operators typically want consistent across every per-agent workspace -(`AGENTS.md`, shared skills, common templates) are **not** synced automatically. -Each workspace is independent; changes in one don't propagate. Operators that -need this either copy the shared files explicitly to each workspace after -editing, or maintain a host-side sync layer. Tracking shared-file tooling -(shared mount, `workspaces list` command) in -[#1260](https://github.com/NVIDIA/NemoClaw/issues/1260). - -## Next Steps - -- [Workspace Files overview](workspace-files.md) to learn what each file does -- Commands reference (use the `nemoclaw-user-reference` skill) diff --git a/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md b/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md deleted file mode 100644 index 80047e4609d..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/references/lifecycle-details.md +++ /dev/null @@ -1,24 +0,0 @@ -# Manage Sandbox Lifecycle: Details - -## What Changes During a Rebuild - -Each rebuild destroys the existing container and creates a new one. -NemoClaw protects your data through the same backup-and-restore flow as `nemoclaw rebuild` (use the `nemoclaw-user-reference` skill): - -- NemoClaw preserves manifest-defined workspace state. Before deleting the old container, NemoClaw snapshots the state directories and durable state files defined in the agent manifest, typically `/sandbox/.openclaw/workspace/`; for Hermes this also includes `SOUL.md` and the SQLite database behind `.hermes/state.db`. Stored credentials (`~/.nemoclaw/credentials.json`) and registered policy presets live on the host and are re-applied to the new sandbox automatically. -- NemoClaw does not preserve runtime changes outside the workspace state directories. This includes packages installed inside the running container with `apt` or `pip`, files in non-workspace paths, and in-memory or process state. If you have customized the running container at runtime, capture that as `Dockerfile` changes for `nemoclaw onboard --from` or a manual `openshell sandbox download` before the rebuild starts. - -Aborts before the destroy step are non-destructive. -The flow refuses to proceed past preflight if a credential is missing or past backup if required manifest-defined state cannot be copied, so a failed run leaves the original sandbox intact and ready to retry. -When a backup command reports partial archive output, NemoClaw keeps the usable entries and reports only the manifest-defined paths that could not be archived. - -See [Backup and Restore](backup-restore.md) for the full list of state-preservation guarantees, snapshot retention, and instructions for manual backups when the auto-flow is not enough. - -**If the rebuild aborts with `Missing credential: `:** - -The rebuild preflight reads the provider credential recorded by your last `nemoclaw onboard` session. -If you have switched providers since onboarding, for example from a remote API to a local Ollama setup, the preflight may still reference the old key and fail before any destroy step runs. - -To recover, re-run `nemoclaw onboard` and select your current provider. -This refreshes the session metadata. -Your existing container keeps serving traffic until the new image is ready. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md b/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md deleted file mode 100644 index c7fc4c1898f..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/references/messaging-channels.md +++ /dev/null @@ -1,279 +0,0 @@ -# Messaging Channels - -Telegram, Discord, Slack, WeChat, and WhatsApp reach your OpenClaw or Hermes agent through OpenShell-managed processes and gateway constructs. -For token-based channels, NemoClaw registers credentials with OpenShell providers. -WeChat captures a token through a host-side QR scan during onboarding. -WhatsApp pairs inside the sandbox via QR scan and intentionally stores mutable session state there. -NemoClaw bakes the selected channel configuration into the sandbox image and keeps runtime delivery under OpenShell control. - -**Experimental Channels:** - -WeChat and WhatsApp are experimental. -Both rely on QR-based pairing flows that are more fragile than token-based bots, and the upstream client libraries can change behavior without notice. -Interfaces, defaults, and supported features may change, and these channels are not recommended for production use. - -You can enable channels during `nemoclaw onboard` or add them later with host-side `nemoclaw channels` commands. -Do not run agent-specific channel mutation commands such as `openclaw channels add` or `openclaw channels remove` inside the sandbox because NemoClaw generates `/sandbox/.openclaw/openclaw.json` for OpenClaw and `/sandbox/.hermes/.env` for Hermes at image build time, and changes inside the running container do not persist across rebuilds. - -`nemoclaw tunnel start` does not start Telegram, Discord, Slack, or other chat bridges. -It only starts optional host services such as the cloudflared tunnel when that binary is present. (`nemoclaw start` is kept as a deprecated alias.) -For details, refer to Commands (use the `nemoclaw-user-reference` skill). - -## Prerequisites - -- A machine where you can run `nemoclaw onboard` (local or remote host that runs the gateway and sandbox). -- A token for each token-based messaging platform you want to enable, a personal WeChat account on your phone for the host-side QR scan during onboarding, or a phone you can use to scan the QR code for WhatsApp pairing. -- A network policy preset for each enabled channel, or equivalent custom egress rules. - -## Channel Requirements - -| Channel | Required tokens | Optional settings | -|---------|-----------------|-------------------| -| Telegram | `TELEGRAM_BOT_TOKEN` | `TELEGRAM_ALLOWED_IDS` for DM allowlisting, `TELEGRAM_REQUIRE_MENTION` for group-chat replies | -| Discord | `DISCORD_BOT_TOKEN` | `DISCORD_SERVER_ID`, `DISCORD_USER_ID`, `DISCORD_REQUIRE_MENTION` | -| Slack | `SLACK_BOT_TOKEN`, `SLACK_APP_TOKEN` | `SLACK_ALLOWED_USERS` for DM and channel `@mention` user allowlisting, `SLACK_ALLOWED_CHANNELS` for channel ID allowlisting | -| WeChat (experimental) | None. Captured via host-side QR scan during `nemoclaw onboard` | `WECHAT_ALLOWED_IDS` for DM allowlisting | -| WhatsApp (experimental) | None. Pair via QR after rebuild | None | - -Telegram uses a bot token from [BotFather](https://t.me/BotFather). -Open Telegram, send `/newbot` to [@BotFather](https://t.me/BotFather), follow the prompts, and copy the token. -For Telegram group chats, disable privacy mode before testing group replies: in @BotFather, run `/setprivacy`, choose the bot, then choose **Disable**. -After changing privacy mode, remove the bot from each Telegram group and add it back so Telegram applies the new delivery setting to that group. -`TELEGRAM_ALLOWED_IDS` is a comma-separated list of Telegram user IDs for DM access. -Group chats stay open by default so rebuilt sandboxes do not silently drop Telegram group messages because of an empty group allowlist. -Set `TELEGRAM_REQUIRE_MENTION=1` to make the bot reply in Telegram groups only when users mention it. -Pairing and `TELEGRAM_ALLOWED_IDS` still govern direct messages. - -Discord uses a bot token from the Discord Developer Portal. -For server channels, enable Developer Mode in Discord, right-click the server, and copy the Server ID into `DISCORD_SERVER_ID`. -By default, NemoClaw configures the bot to reply only when mentioned. -Set `DISCORD_REQUIRE_MENTION=0` if you want it to reply to all messages in the configured server. -Set `DISCORD_USER_ID` to restrict access to one user; otherwise, any member of the configured server can message the bot. - -Slack uses Socket Mode and requires two tokens. -Use `SLACK_BOT_TOKEN` for the bot user OAuth token (`xoxb-...`) and `SLACK_APP_TOKEN` for the app-level Socket Mode token (`xapp-...`). -Set `SLACK_ALLOWED_USERS` to comma-separated Slack member IDs to authorize those users for DMs and for channel `@mention` events in channels where the Slack app is present. -Set `SLACK_ALLOWED_CHANNELS` to comma-separated Slack channel IDs to restrict channel `@mention` handling to those channels. -When both Slack allowlists are set, NemoClaw requires the mention to come from one of the allowed channels and one of the allowed members. -Channel messages still require an explicit bot mention. - -WeChat (experimental) delivers messages over Tencent's iLink gateway via the upstream `@tencent-weixin/openclaw-weixin` plugin baked into the sandbox base image and the built-in Hermes iLink WeChat adapter. -The supported mode in this release is **personal WeChat** (`bot_type=3`). -WeChat Official Account and WeCom/Enterprise WeChat are not wired up. - -Because the bot token only exists after a successful iLink QR handshake, NemoClaw runs the QR login on the host during `nemoclaw onboard`. -You scan the QR with WeChat on your phone (Discover → Scan), confirm the login, and NemoClaw captures the token, `accountId`, `baseUrl`, and `userId` from the iLink response. -NemoClaw registers the token as the `-wechat-bridge` OpenShell provider and substitutes the `openshell:resolve:env:WECHAT_BOT_TOKEN` placeholder for it inside the sandbox, so the token never lands in the image or on disk inside the running container. -The non-secret per-account metadata (`WECHAT_ACCOUNT_ID`, `WECHAT_BASE_URL`, `WECHAT_USER_ID`) is baked into the sandbox image so the in-sandbox bridge can pre-seed the per-account context tokens without re-running the QR handshake. - -WeChat is DM-only (`allowIdsMode: "dm"`). -NemoClaw adds the operator who scanned the QR to `WECHAT_ALLOWED_IDS` automatically, and you can append more comma-separated WeChat user IDs through the same env var. -You can silence the host-side `[wechat]` diagnostic lines (poll status, IDC redirects, swallowed gateway errors) by exporting `NEMOCLAW_WECHAT_QUIET=1` once the flow is stable in your environment. - -Tencent's iLink gateway is a third-party service. -Review your organization's terms-of-service, compliance, and data-residency constraints before enabling WeChat. - -WhatsApp (experimental) Web does not use a host-side token or OpenShell credential provider. -NemoClaw advertises WhatsApp for both OpenClaw and Hermes sandboxes, and each agent completes pairing with its own in-sandbox command. -Pairing happens inside the sandbox after the rebuild completes and creates mutable session credentials there. -Run `openshell term` and then use the agent-specific pairing command to render the QR code in the terminal: - -```console -$ openclaw channels login --channel whatsapp # OpenClaw sandboxes -$ hermes whatsapp # Hermes sandboxes -``` - -Session credentials are generated and stored inside durable agent state (`whatsapp` for OpenClaw, `platforms/whatsapp` for Hermes), so they survive rebuilds without re-pairing. -This is the runtime tradeoff of enabling WhatsApp without a host bridge: a paired sandbox can use that WhatsApp account until you unpair it or clear the durable state. -NemoClaw cannot detect cross-sandbox WhatsApp conflicts the way it does for token-based channels. -Pair only one sandbox per WhatsApp account at a time. - -## Enable Channels During Onboarding - -When the wizard reaches **Messaging channels**, it lists Telegram, Discord, Slack, WeChat, and WhatsApp. -Press a channel number to toggle it on or off, then press **Enter** when done. -If a token-based channel token is not already in the environment or credential store, the wizard prompts for it and saves it. - -If you enable WeChat (experimental), the wizard does not prompt for a paste token. -Instead, it renders a QR code in your terminal, polls Tencent's iLink gateway, and captures the bot token after you scan the QR with WeChat on your phone. -The login has an eight-minute deadline, refreshes the QR up to three times on expiry, and follows iLink's IDC redirects automatically. -Keep the terminal in the foreground until you see `✓ WeChat login confirmed`. - -WhatsApp (experimental) uses QR pairing instead of a host-side token, so the wizard does not prompt. -It prints pairing instructions and you complete the pairing inside the sandbox after rebuild. -NemoClaw also selects the matching network policy preset during policy setup so the channel can reach its provider API. - -For scripted setup, export the credentials and optional settings for the channels you want to enable before you run onboarding: - -```console -$ export TELEGRAM_BOT_TOKEN= -$ export TELEGRAM_REQUIRE_MENTION=1 -$ export DISCORD_BOT_TOKEN= -$ export DISCORD_SERVER_ID= -$ export SLACK_BOT_TOKEN= -$ export SLACK_APP_TOKEN= -$ export SLACK_ALLOWED_USERS= -$ export SLACK_ALLOWED_CHANNELS= -``` - -This release does not support non-interactive WeChat configuration because the iLink QR handshake requires a human to scan the QR on a paired phone. -Run `nemoclaw onboard` interactively when you want to enable WeChat. - -Then run onboarding: - -```console -$ nemoclaw onboard -``` - -Complete the rest of the wizard so the blueprint can create OpenShell providers where needed (for example `-telegram-bridge` or `-wechat-bridge`), bake channel configuration into the image (`NEMOCLAW_MESSAGING_CHANNELS_B64`), and start the sandbox. - -## Add Channels After Onboarding - -Run channel commands from the host, not from inside the sandbox. -Use `channels list` to see the supported channel names: - -```console -$ nemoclaw my-assistant channels list -``` - -Add the channel you want: - -```console -$ nemoclaw my-assistant channels add telegram -$ nemoclaw my-assistant channels add discord -$ nemoclaw my-assistant channels add slack -$ nemoclaw my-assistant channels add wechat -$ nemoclaw my-assistant channels add whatsapp -``` - -`channels add` collects whatever each channel needs. -It prompts for Telegram, Discord, and Slack tokens, runs an interactive host-side QR scan for WeChat, and collects nothing for WhatsApp because pairing happens in-sandbox after rebuild. -It registers bridge providers with the OpenShell gateway when tokens were captured, records the channel in the sandbox registry, and asks whether to rebuild immediately. -The command accepts mixed-case input such as `Telegram`, then stores and prints the canonical lowercase channel name. -If a matching built-in network policy preset exists, `channels add` applies it to the sandbox automatically before the rebuild so the bridge has egress to its upstream API. -If applying the preset fails, NemoClaw warns and tells you to re-apply manually with `nemoclaw policy-add ` after the rebuild. -Choose the rebuild so the running sandbox image picks up the new channel. -If you need optional channel settings such as `TELEGRAM_ALLOWED_IDS`, `TELEGRAM_REQUIRE_MENTION`, `DISCORD_SERVER_ID`, `DISCORD_USER_ID`, `DISCORD_REQUIRE_MENTION`, `SLACK_ALLOWED_USERS`, or `SLACK_ALLOWED_CHANNELS`, export them before the rebuild starts. -If you defer the rebuild, apply the change later: - -```console -$ nemoclaw my-assistant rebuild -``` - -In non-interactive mode, set the required environment variables before running `channels add`. -Missing credentials fail fast, and the command queues the change for a manual rebuild: - -```console -$ NEMOCLAW_NON_INTERACTIVE=1 TELEGRAM_BOT_TOKEN= \ - nemoclaw my-assistant channels add telegram -$ nemoclaw my-assistant rebuild -``` - -For Discord server access after onboarding, include the server settings when you add the channel and rebuild: - -```console -$ DISCORD_BOT_TOKEN= \ - DISCORD_SERVER_ID= \ - DISCORD_REQUIRE_MENTION=1 \ - nemoclaw my-assistant channels add discord -``` - -### `channels add wechat` - -`channels add wechat` (experimental) follows the same shape as the other channels with two differences driven by the iLink QR handshake. - -First, the command does not prompt for a paste token. -Instead, it renders a QR code in your terminal, polls Tencent's iLink gateway, and captures both the bot token and the per-account metadata (`accountId`, `baseUrl`, `userId`) once you scan the QR with WeChat on your phone (Discover → Scan). -The login has an eight-minute deadline and refreshes the QR up to three times on expiry. -Keep the terminal in the foreground until you see `✓ WeChat login confirmed`. - -Second, the command requires an interactive terminal. -Non-interactive mode (`NEMOCLAW_NON_INTERACTIVE=1`) fails fast with a clear error because the QR handshake needs a paired phone. - -```console -$ nemoclaw my-assistant channels add wechat -``` - -If `WECHAT_BOT_TOKEN` is already cached for this sandbox (the operator onboarded with WeChat earlier), `channels add wechat` reuses the cached token and skips the QR scan to keep the upstream plugin's existing iLink session intact. -Re-running QR would invalidate that session. -Use `channels remove wechat` first if you intend to acquire a fresh account. - -## Rotate or Remove Credentials - -Running `channels add` for a channel that is already configured overwrites the stored tokens and registers the updated bridge provider. -For WeChat the cached-token short-circuit applies. -See [`channels add wechat`](#channels-add-wechat) for how to acquire a fresh account. -Rebuild the sandbox after the update so the image reflects the current channel set. - -To remove a channel and clear its stored credentials, run: - -```console -$ nemoclaw my-assistant channels remove telegram -$ nemoclaw my-assistant channels remove wechat -``` - -`channels remove wechat` clears the bot token, deletes the `-wechat-bridge` OpenShell provider, and drops `wechat` from the sandbox's enabled-channel set. -The next rebuild produces an image without the WeChat channel block in `openclaw.json` and without the per-account state files under `/sandbox/.openclaw/openclaw-weixin/`. - -For in-sandbox QR-paired channels (today: WhatsApp), `channels remove` destructively clears the in-sandbox session directory before the rebuild so the next rebuild does not restore stale auth files and reconnect the channel. -The cleanup targets `/sandbox/.openclaw//` for OpenClaw and `/sandbox/.hermes/platforms//` for Hermes. -The cleanup tries `openshell sandbox exec` and falls back to SSH if that does not produce the success sentinel. -If neither transport can reach a running sandbox for a QR-paired channel, the command exits non-zero and asks you to start the sandbox and re-run. -NemoClaw deliberately leaves the registry, policy preset, and `session.policyPresets` unchanged on that failure path, so a follow-up re-run completes the removal cleanly. - -`channels remove whatsapp` clears the client-side Baileys session inside the sandbox; it cannot deregister the linked device with WhatsApp's servers because that requires an active Baileys connection to issue the logout RPC, which we no longer have once the session files are gone. -The phone account will continue to list the sandbox as a Linked Device until you remove it manually from your phone (Settings → Linked Devices → tap the entry → Log out) or until WhatsApp's 14-day inactivity timeout expires. -Removing the entry from the phone is recommended if you plan to re-pair the same phone with a different sandbox. - -Use `channels stop` when you want to pause a bridge without deleting credentials: - -```console -$ nemoclaw my-assistant channels stop telegram -$ nemoclaw my-assistant channels start telegram - -$ nemoclaw my-assistant channels stop wechat -$ nemoclaw my-assistant channels start wechat -``` - -For WeChat specifically, `channels stop wechat` followed by a rebuild keeps the per-account state files under `/sandbox/.openclaw/openclaw-weixin/accounts/` intact even though the bridge is no longer wired up in `openclaw.json`. -A subsequent `channels start wechat` plus rebuild revives the bridge against the same iLink account without a fresh QR scan. -The bot token is held by the OpenShell provider across the stop/start cycle. - -Telegram, Discord, Slack, and WeChat each allow only one active consumer per channel credential. -Multiple sandboxes can use the same channel type at the same time when each sandbox uses a distinct bot/app token (or a distinct WeChat iLink bot account). -For example, two Telegram sandboxes can DM the same `TELEGRAM_ALLOWED_IDS` account as long as they use different `TELEGRAM_BOT_TOKEN` values. -For WeChat, each sandbox must own a distinct iLink `accountId` (bot identity). -Running two sandboxes against the same WeChat account causes one of them to lose messages. -If you enable a messaging channel and another sandbox already uses the same token, onboarding prompts you to confirm before continuing in interactive mode and exits non-zero in non-interactive mode. -If NemoClaw only has legacy channel metadata and cannot compare credential hashes, it keeps the conservative warning. -Re-run `channels add ` with the intended token to refresh the stored non-secret hash. -`nemoclaw status` reports cross-sandbox overlaps so you can resolve duplicates before messages start dropping. - -## Stop Messaging Delivery - -Use `channels stop` when you want to pause one bridge and keep the sandbox running. -Use `nemoclaw tunnel stop` or its deprecated alias `nemoclaw stop` when you want to stop host auxiliary services and also ask NemoClaw to stop the OpenClaw gateway inside the selected sandbox. -Stopping the in-sandbox gateway stops Telegram, Discord, Slack, WeChat, and WhatsApp polling for that sandbox until you restart the sandbox or gateway. - -## Confirm Delivery - -After the sandbox is running, send a message to the configured bot or app. -If delivery fails, use `openshell term` on the host, check gateway logs, and verify network policy allows the channel API. -Use the matching policy preset (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`) or review Common Integration Policy Examples (use the `nemoclaw-user-manage-policy` skill). - -## Tunnel Command - -When the host has `cloudflared`, `nemoclaw tunnel start` starts a cloudflared tunnel that can expose the dashboard with a public URL. -Set `CLOUDFLARE_TUNNEL_TOKEN` before running the command when you want to use a Cloudflare named tunnel instead of a generated quick-tunnel URL. -`nemoclaw tunnel stop` stops the tunnel and asks NemoClaw to stop the in-sandbox gateway for the selected or default sandbox. -The older `nemoclaw start` still works as a deprecated alias. - -```console -$ nemoclaw tunnel start -``` - -## Related Topics - -- Deploy NemoClaw to a Remote GPU Instance (use the `nemoclaw-user-deploy-remote` skill) for remote deployment with messaging. -- Architecture (use the `nemoclaw-user-reference` skill) for how providers, the gateway, and the sandbox fit together. -- Commands (use the `nemoclaw-user-reference` skill) for `channels add`, `channels remove`, `channels start`, `channels stop`, `tunnel start`, `tunnel stop`, and `status`. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md b/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md deleted file mode 100644 index 5f0e37085d4..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/references/runtime-controls.md +++ /dev/null @@ -1,39 +0,0 @@ -# Runtime Controls and Sandbox Mutability - -This page explains which parts of a running NemoClaw sandbox can change immediately and which changes require a rebuild or re-onboard. - -## What you can change at runtime - -NemoClaw applies its security posture in three layers — what is baked into the sandbox image at onboard, what is hot-reloadable on the running sandbox, and what requires a rebuild or re-onboard. -The table below maps each commonly changed item to the layer that owns it and the command that changes it. - -| Item | When the change takes effect | How to change it | -|---|---|---| -| Inference provider (cloud, NVIDIA Endpoints, local Ollama / vLLM, compatible-endpoint, …) | Rebuild required (`openclaw.json` is locked at sandbox creation) | `nemoclaw rebuild` after picking a different provider via `nemoclaw inference set` | -| Inference model on the current provider | Rebuild required for OpenClaw; hot-reloadable for managed routers | `nemoclaw rebuild` (OpenClaw) or `nemoclaw inference set` (router-based) | -| Sub-agent (Hermes / OpenClaw / …) | Re-onboard required (the sub-agent and its workspace are baked at onboard) | `nemoclaw onboard --recreate-sandbox` | -| Network policy preset (slack, discord, telegram, brave, …) | Runtime — applies on the next request; rebuild only required if the preset adds bind-mounted secrets | `nemoclaw policy-add ` / `policy-remove ` | -| Network allow-list (custom hosts) | Runtime — picks up at next request | `openshell policy set` or interactive approval prompt at the gateway | -| Channel tokens (Slack / Discord / Telegram bot credentials) | Rebuild required (tokens are baked into the sandbox image at onboard so they never leave the host clear-text) | `nemoclaw channels add ` then accept the rebuild prompt | -| Channel enable/disable (turn a configured channel off without removing the token) | Rebuild required (`openclaw.json` is the source of truth at runtime, see #3453) | `nemoclaw channels stop ` then rebuild | -| Dashboard forward port | Runtime — port is re-resolved on next `connect` | `NEMOCLAW_DASHBOARD_PORT= nemoclaw connect` | -| Dashboard bind address (loopback vs all interfaces) | Runtime — applies on next `connect` | `NEMOCLAW_DASHBOARD_BIND=0.0.0.0 nemoclaw connect` (see #3259) | -| Web search backend (Brave, Tavily, etc.) | Runtime via `web.backend` config flag; rebuild only if `web.fetchEnabled` flips | `nemoclaw config set --key web.backend --value tavily` | -| Filesystem layout (Landlock zones, read-only mounts, container caps) | **Locked at creation** — no runtime change | Re-onboard with `nemoclaw onboard --recreate-sandbox` | -| Sandbox name | **Locked at creation** | Re-onboard with a different `--name` | -| GPU passthrough enable / device selector | **Locked at creation** | Re-onboard with `--gpu` / `--sandbox-gpu-device` | -| Agents allow-list (`agents.list` in `openclaw.json`) | Runtime — hot-reloaded by OpenClaw on config change | Prefer agent or NemoClaw commands that keep host and sandbox state aligned | -| `openclaw.json` keys (general — model, agents.list, web.backend, channel config, etc.) | Mixed. Individual keys still follow the rebuild rules in the rows above, such as provider switch requiring rebuild even after editing the JSON. | Prefer NemoClaw host commands so the host registry and rebuilt image stay aligned | - -If a row above conflicts with what you observe, the runtime source of truth inside the sandbox is `/opt/nemoclaw/openclaw.json`; the host registry caches metadata but the image and OpenClaw read from the in-sandbox file. - -## See also - -The mutability table above is a consolidated index of information that lives in more detail on per-topic pages: - -- [Manage Sandbox Lifecycle](../SKILL.md) — full rebuild / re-onboard / upgrade workflow. -- Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) — the rebuild path for provider and model changes. -- Customize Network Policy (use the `nemoclaw-user-manage-policy` skill) and Approve Network Requests (use the `nemoclaw-user-manage-policy` skill) — runtime policy editing and operator approval flow. -- Security Best Practices (use the `nemoclaw-user-configure-security` skill) — the per-attack-surface posture table that this page complements. -- OpenClaw Security Controls (use the `nemoclaw-user-configure-security` skill) — application-layer controls that operate independently of NemoClaw. -- CLI Commands Reference (use the `nemoclaw-user-reference` skill) — full flag surface for every `nemoclaw` command, including the env vars that affect runtime behavior. diff --git a/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md b/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md deleted file mode 100644 index 9b25555a2df..00000000000 --- a/skills/nemoclaw-user-manage-sandboxes/references/workspace-files.md +++ /dev/null @@ -1,103 +0,0 @@ -# Workspace Files - -OpenClaw stores its personality, user context, and behavioral configuration in a set of Markdown files inside the sandbox. -These files live at `/sandbox/.openclaw/workspace/` and are collectively called **workspace files**. - -## File Reference - -| File | Purpose | -|---|---| -| `SOUL.md` | Defines the agent's persona, tone, and communication style. | -| `USER.md` | Stores information about the human the agent assists. | -| `IDENTITY.md` | Short identity card — name, language, emoji, creature type. | -| `AGENTS.md` | Behavioral rules, memory conventions, safety guidelines, and session workflow. | -| `MEMORY.md` | Curated long-term memory distilled from daily notes. | -| `memory/` | Directory of daily note files (`YYYY-MM-DD.md`) for session continuity. | - -## Where They Live - -All workspace files reside inside the sandbox filesystem: - -```text -/sandbox/.openclaw/workspace/ -├── AGENTS.md -├── IDENTITY.md -├── MEMORY.md -├── SOUL.md -├── USER.md -└── memory/ - ├── 2026-03-18.md - └── 2026-03-19.md -``` - -## Multi-Agent Deployments - -A single NemoClaw sandbox can host more than one OpenClaw agent. -When OpenClaw is configured with multiple named agents (e.g., a shared `main` agent -plus per-user agents for a Teams-integrated deployment), each agent gets its own -workspace directory alongside the default `workspace/`: - -```text -/sandbox/.openclaw/ -├── workspace/ # default agent (single-agent deployments) -├── workspace-main/ # named agent "main" -├── workspace-support/ # named agent "support" -└── workspace-ops/ # named agent "ops" -``` - -Each per-agent workspace contains the same Markdown file structure as the default -(`SOUL.md`, `USER.md`, `IDENTITY.md`, `AGENTS.md`, `MEMORY.md`, `memory/`). -Files are per-agent — changes in `workspace-main/AGENTS.md` are not visible to -`workspace-support/`. - -Persistence and snapshots are handled automatically for per-agent workspaces: -the sandbox entrypoint provisions each `workspace-/` directly under the -writable `.openclaw/` tree so state survives sandbox restart, and -`nemoclaw snapshot create` discovers every `workspace-/` directory -and includes it in the snapshot bundle alongside the default `workspace/`. - -**Note:** - -Files that operators typically want consistent across every agent workspace -(`AGENTS.md`, shared skills, common templates) are not synced automatically. -Each workspace is independent; changes in one don't propagate. Tracking -shared-file tooling (shared mount, `workspaces list` command) in -[#1260](https://github.com/NVIDIA/NemoClaw/issues/1260). - -## Persistence Behavior - -Workspace files live in the sandbox's persistent state volume, not in the container image. -This means they survive normal container restarts, but they are deleted when you destroy the sandbox. - -### Preserved During Restart, Rebuild, and Upgrade - -Sandbox restarts preserve workspace files because the persistent state volume outlives individual container restarts. - -The `nemoclaw rebuild` command and the sandbox upgrade flow also preserve workspace state. -Before replacing the container, NemoClaw snapshots the workspace state directories and restores them into the rebuilt sandbox. -If NemoClaw cannot archive any requested state file or directory, it reports the backup failure and stops before replacing the sandbox. -It does not continue with a partial backup. - -### Deleted During Sandbox Destroy - -Running `nemoclaw destroy` deletes the sandbox and its persistent state volume. -Workspace files are removed from the sandbox unless you created a snapshot or backup first. - -**Warning:** - -Back up your workspace files before running `nemoclaw destroy`. -See [Backup and Restore](backup-restore.md) for instructions. - -## Editing Workspace Files - -The agent reads these files at the start of every session. -You can edit them in two ways: - -1. Ask your agent to update its persona, memory, or user context. -2. Use `nemoclaw connect` to open a terminal inside the sandbox and edit files directly, or use `openshell sandbox upload` to push edited files from your host. - -## Next Steps - -- Set Up Task-Specific Sub-Agents (use the `nemoclaw-user-configure-inference` skill) -- [Backup and Restore workspace files](backup-restore.md) -- Commands reference (use the `nemoclaw-user-reference` skill) diff --git a/skills/nemoclaw-user-monitor-sandbox/SKILL.md b/skills/nemoclaw-user-monitor-sandbox/SKILL.md deleted file mode 100644 index de5ea1de444..00000000000 --- a/skills/nemoclaw-user-monitor-sandbox/SKILL.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -name: "nemoclaw-user-monitor-sandbox" -description: "Inspects sandbox health, traces agent behavior, and diagnoses problems. Use when monitoring a running sandbox, debugging agent issues, or checking sandbox logs. Trigger keywords - monitor nemoclaw sandbox, debug nemoclaw agent issues." -license: "Apache-2.0" ---- -# Monitor Sandbox Activity and Debug Issues - -## Prerequisites - -- A running NemoClaw sandbox. -- The OpenShell CLI on your `PATH`. - -Use the NemoClaw status, logs, and TUI tools together to inspect sandbox health, trace agent behavior, and diagnose problems. - -## Check Sandbox Health - -Run the status command to view the sandbox state, gateway health, and active inference configuration: - -```console -$ nemoclaw status -``` - -For local Ollama and local vLLM routes, `nemoclaw status` also probes the host-side health endpoint directly. -This catches a stopped local backend before you retry `inference.local` from inside the sandbox. - -Key fields in the output include the following: - -- Sandbox details, which show the configured model, provider, GPU mode, and applied policy presets. -- Gateway and process health, which show whether NemoClaw can still reach the OpenShell gateway and whether the in-sandbox agent process is running. -- Inference health for local Ollama and local vLLM, which shows `healthy` or `unreachable` together with the probed local URL. -- NIM status, which shows whether a NIM container is running and healthy when that path is in use. - -Run `nemoclaw status` on the host to check sandbox state. -Use `openshell sandbox list` for the underlying sandbox details. - -## View Blueprint and Sandbox Logs - -Stream the most recent log output from the blueprint runner and sandbox: - -```console -$ nemoclaw logs -``` - -To follow the log output in real time: - -```console -$ nemoclaw logs --follow -``` - -## Monitor Network Activity in the TUI - -Open the OpenShell terminal UI for a live view of sandbox network activity and egress requests: - -```console -$ openshell term -``` - -For a remote sandbox, SSH to the instance and run `openshell term` there. - -The TUI shows the following information: - -- Active network connections from the sandbox. -- Blocked egress requests awaiting operator approval. -- Inference routing status. - -Refer to Approve or Deny Agent Network Requests (use the `nemoclaw-user-manage-policy` skill) for details on handling blocked requests. - -## Test Inference - -Run a test inference request to verify that the provider is responding: - -```console -$ nemoclaw my-assistant connect -$ openclaw agent --agent main -m "Test inference" --session-id debug -``` - -If the request fails, check the following: - -1. Run `nemoclaw status` to confirm the active provider and endpoint. - For local Ollama and local vLLM, check the `Inference` line first. - If it shows `unreachable`, restart the local backend before retrying from inside the sandbox. -2. Run `nemoclaw logs --follow` to view error messages from the blueprint runner. -3. Verify that the inference endpoint is reachable from the host. - -## Related Skills - -- `nemoclaw-user-reference` — Troubleshooting (use the `nemoclaw-user-reference` skill) for common issues and resolution steps -- `nemoclaw-user-manage-policy` — Approve or Deny Agent Network Requests (use the `nemoclaw-user-manage-policy` skill) for the operator approval flow -- `nemoclaw-user-configure-inference` — Switch Inference Providers (use the `nemoclaw-user-configure-inference` skill) to change the active provider diff --git a/skills/nemoclaw-user-monitor-sandbox/evals/evals.json b/skills/nemoclaw-user-monitor-sandbox/evals/evals.json deleted file mode 100644 index 72aed43b0dc..00000000000 --- a/skills/nemoclaw-user-monitor-sandbox/evals/evals.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "id": "docs-monitoring-monitor-sandbox-activity-001", - "question": "I'm monitoring sandbox activity. Help me understand what the agent and sandbox are doing now so I can detect unhealthy or unexpected behavior early.", - "expected_skill": "nemoclaw-user-monitor-sandbox", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what the agent and sandbox are doing now and gives enough concrete guidance, decision criteria, verification steps, or risk framing to detect unhealthy or unexpected behavior early.", - "expected_behavior": [ - "The output directly addresses the user's situation: monitoring sandbox activity.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand what the agent and sandbox are doing now with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to detect unhealthy or unexpected behavior early.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-monitoring-monitor-sandbox-activity-002", - "question": "I'm diagnosing a runtime failure. Help me use health, logs, and traces to locate the failing layer so I can separate host, gateway, sandbox, policy, and inference issues.", - "expected_skill": "nemoclaw-user-monitor-sandbox", - "ground_truth": "A NemoClaw-specific answer that helps the user use health, logs, and traces to locate the failing layer and gives enough concrete guidance, decision criteria, verification steps, or risk framing to separate host, gateway, sandbox, policy, and inference issues.", - "expected_behavior": [ - "The output directly addresses the user's situation: diagnosing a runtime failure.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user use health, logs, and traces to locate the failing layer with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to separate host, gateway, sandbox, policy, and inference issues.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-monitoring-monitor-sandbox-activity-003", - "question": "I'm collecting debugging evidence. Help me gather enough information without weakening controls so I can investigate safely and share useful diagnostics.", - "expected_skill": "nemoclaw-user-monitor-sandbox", - "ground_truth": "A NemoClaw-specific answer that helps the user gather enough information without weakening controls and gives enough concrete guidance, decision criteria, verification steps, or risk framing to investigate safely and share useful diagnostics.", - "expected_behavior": [ - "The output directly addresses the user's situation: collecting debugging evidence.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user gather enough information without weakening controls with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to investigate safely and share useful diagnostics.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - } -] diff --git a/skills/nemoclaw-user-overview/SKILL.md b/skills/nemoclaw-user-overview/SKILL.md deleted file mode 100644 index d78c71f291e..00000000000 --- a/skills/nemoclaw-user-overview/SKILL.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: "nemoclaw-user-overview" -description: "Explains how OpenClaw, OpenShell, and NemoClaw form the ecosystem, NemoClaw's position in the stack, what NemoClaw adds beyond the community sandbox, and when to prefer NemoClaw versus integrating OpenShell and OpenClaw directly. Use when users ask about the relationship between OpenClaw, OpenShell, and NemoClaw, or when to use NemoClaw versus OpenShell. Trigger keywords - nemoclaw ecosystem, openclaw openshell, nemoclaw vs openshell, sandboxed openclaw, how nemoclaw works, nemoclaw sandbox lifecycle blueprint, nemoclaw overview, openclaw always-on assistants, nvidia openshell, nvidia nemotron, nemoclaw release notes, nemoclaw changelog." -license: "Apache-2.0" ---- -# Ecosystem - -## References - -- **Load [references/ecosystem.md](references/ecosystem.md)** when users ask about the relationship between OpenClaw, OpenShell, and NemoClaw, or when to use NemoClaw versus OpenShell. Explains how OpenClaw, OpenShell, and NemoClaw form the ecosystem, NemoClaw's position in the stack, what NemoClaw adds beyond the community sandbox, and when to prefer NemoClaw versus integrating OpenShell and OpenClaw directly. -- **Load [references/how-it-works.md](references/how-it-works.md)** for sandbox lifecycle and architecture mechanics; not for product definition (Overview) or multi-project placement (Ecosystem). Describes how NemoClaw works internally: CLI, plugin, blueprint runner, OpenShell orchestration, inference routing, and protection layers. -- **Load [references/overview.md](references/overview.md)** when users ask what NemoClaw is or what the project provides. For ecosystem placement or OpenShell-only paths, use the Ecosystem page; for internal mechanics, use How It Works. Explains what NemoClaw covers: onboarding, lifecycle management, and OpenClaw operations within OpenShell containers, plus capabilities and why it exists. -- **Load [references/release-notes.md](references/release-notes.md)** when users ask about recent changes, the release cadence, or where to track versioned assets on GitHub. Includes the NemoClaw release notes. diff --git a/skills/nemoclaw-user-overview/evals/evals.json b/skills/nemoclaw-user-overview/evals/evals.json deleted file mode 100644 index c87001a0d8e..00000000000 --- a/skills/nemoclaw-user-overview/evals/evals.json +++ /dev/null @@ -1,212 +0,0 @@ -[ - { - "id": "docs-index-001", - "question": "I'm first arriving at the NemoClaw docs. Help me understand what NemoClaw helps me run and why it exists so I can decide whether it is worth installing before I spend time on setup.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what NemoClaw helps me run and why it exists and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether it is worth installing before I spend time on setup.", - "expected_behavior": [ - "The output directly addresses the user's situation: first arriving at the NemoClaw docs.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user understand what NemoClaw helps me run and why it exists with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether it is worth installing before I spend time on setup.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-index-002", - "question": "I'm evaluating whether an always-on assistant can run safely in my environment. Help me see the core safety, lifecycle, and inference-routing promises up front so I can judge whether the stack matches my risk tolerance.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user see the core safety, lifecycle, and inference-routing promises up front and gives enough concrete guidance, decision criteria, verification steps, or risk framing to judge whether the stack matches my risk tolerance.", - "expected_behavior": [ - "The output directly addresses the user's situation: evaluating whether an always-on assistant can run safely in my environment.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user see the core safety, lifecycle, and inference-routing promises up front with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to judge whether the stack matches my risk tolerance.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-index-003", - "question": "I'm considering the one-command install path. Help me know what the command will install, configure, and launch so I can take the next step without feeling like I am accepting an opaque shortcut.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user know what the command will install, configure, and launch and gives enough concrete guidance, decision criteria, verification steps, or risk framing to take the next step without feeling like I am accepting an opaque shortcut.", - "expected_behavior": [ - "The output directly addresses the user's situation: considering the one-command install path.", - "The AI coding assistant loads the expected_skill and SKILL.md", - "The output helps the user know what the command will install, configure, and launch with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to take the next step without feeling like I am accepting an opaque shortcut.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the SKILL.md file." - ] - }, - { - "id": "docs-about-overview-001", - "question": "I'm explaining NemoClaw to a teammate. Help me summarize the product, stack, and value in plain language so I can align on whether NemoClaw is relevant to our agent workflow.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user summarize the product, stack, and value in plain language and gives enough concrete guidance, decision criteria, verification steps, or risk framing to align on whether NemoClaw is relevant to our agent workflow.", - "expected_behavior": [ - "The output directly addresses the user's situation: explaining NemoClaw to a teammate.", - "The AI coding assistant loads the expected_skill and references/overview.md", - "The output helps the user summarize the product, stack, and value in plain language with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to align on whether NemoClaw is relevant to our agent workflow.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." - ] - }, - { - "id": "docs-about-overview-002", - "question": "I'm worried about security, cost, or operations risks from unattended agents. Help me understand which guardrails NemoClaw adds so I can decide whether sandboxed execution addresses my main concerns.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user understand which guardrails NemoClaw adds and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether sandboxed execution addresses my main concerns.", - "expected_behavior": [ - "The output directly addresses the user's situation: worried about security, cost, or operations risks from unattended agents.", - "The AI coding assistant loads the expected_skill and references/overview.md", - "The output helps the user understand which guardrails NemoClaw adds with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether sandboxed execution addresses my main concerns.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." - ] - }, - { - "id": "docs-about-overview-003", - "question": "I'm comparing NemoClaw with direct OpenClaw or OpenShell usage. Help me see the capabilities NemoClaw owns so I can classify it as the right reference stack rather than generic setup glue.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user see the capabilities NemoClaw owns and gives enough concrete guidance, decision criteria, verification steps, or risk framing to classify it as the right reference stack rather than generic setup glue.", - "expected_behavior": [ - "The output directly addresses the user's situation: comparing NemoClaw with direct OpenClaw or OpenShell usage.", - "The AI coding assistant loads the expected_skill and references/overview.md", - "The output helps the user see the capabilities NemoClaw owns with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to classify it as the right reference stack rather than generic setup glue.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/overview.md file." - ] - }, - { - "id": "docs-about-ecosystem-001", - "question": "I'm comparing OpenClaw, OpenShell, and NemoClaw. Help me understand the role of each layer so I can choose the right adoption path for my project.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the role of each layer and gives enough concrete guidance, decision criteria, verification steps, or risk framing to choose the right adoption path for my project.", - "expected_behavior": [ - "The output directly addresses the user's situation: comparing OpenClaw, OpenShell, and NemoClaw.", - "The AI coding assistant loads the expected_skill and references/ecosystem.md", - "The output helps the user understand the role of each layer with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to choose the right adoption path for my project.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." - ] - }, - { - "id": "docs-about-ecosystem-002", - "question": "I'm deciding whether to use the reference integration. Help me identify when NemoClaw is enough versus when I need direct OpenShell integration so I can avoid unnecessary platform work.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user identify when NemoClaw is enough versus when I need direct OpenShell integration and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid unnecessary platform work.", - "expected_behavior": [ - "The output directly addresses the user's situation: deciding whether to use the reference integration.", - "The AI coding assistant loads the expected_skill and references/ecosystem.md", - "The output helps the user identify when NemoClaw is enough versus when I need direct OpenShell integration with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid unnecessary platform work.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." - ] - }, - { - "id": "docs-about-ecosystem-003", - "question": "I'm planning a deployment with multiple moving parts. Help me separate agent, runtime, and orchestration responsibilities so I can assign ownership and troubleshoot the right layer later.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user separate agent, runtime, and orchestration responsibilities and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assign ownership and troubleshoot the right layer later.", - "expected_behavior": [ - "The output directly addresses the user's situation: planning a deployment with multiple moving parts.", - "The AI coding assistant loads the expected_skill and references/ecosystem.md", - "The output helps the user separate agent, runtime, and orchestration responsibilities with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assign ownership and troubleshoot the right layer later.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/ecosystem.md file." - ] - }, - { - "id": "docs-about-how-it-works-001", - "question": "I'm studying the NemoClaw architecture. Help me understand how the CLI, plugin, blueprint, and sandbox interact so I can reason about failures and maintenance work with confidence.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user understand how the CLI, plugin, blueprint, and sandbox interact and gives enough concrete guidance, decision criteria, verification steps, or risk framing to reason about failures and maintenance work with confidence.", - "expected_behavior": [ - "The output directly addresses the user's situation: studying the NemoClaw architecture.", - "The AI coding assistant loads the expected_skill and references/how-it-works.md", - "The output helps the user understand how the CLI, plugin, blueprint, and sandbox interact with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to reason about failures and maintenance work with confidence.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." - ] - }, - { - "id": "docs-about-how-it-works-002", - "question": "I'm debugging a broken setup. Help me identify which lifecycle boundary owns the failure so I can fix the problem without changing unrelated layers.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user identify which lifecycle boundary owns the failure and gives enough concrete guidance, decision criteria, verification steps, or risk framing to fix the problem without changing unrelated layers.", - "expected_behavior": [ - "The output directly addresses the user's situation: debugging a broken setup.", - "The AI coding assistant loads the expected_skill and references/how-it-works.md", - "The output helps the user identify which lifecycle boundary owns the failure with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to fix the problem without changing unrelated layers.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." - ] - }, - { - "id": "docs-about-how-it-works-003", - "question": "I'm deciding whether blueprint-driven setup is repeatable enough. Help me see how versions, digests, and sandbox creation fit together so I can trust the process for team or fleet usage.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user see how versions, digests, and sandbox creation fit together and gives enough concrete guidance, decision criteria, verification steps, or risk framing to trust the process for team or fleet usage.", - "expected_behavior": [ - "The output directly addresses the user's situation: deciding whether blueprint-driven setup is repeatable enough.", - "The AI coding assistant loads the expected_skill and references/how-it-works.md", - "The output helps the user see how versions, digests, and sandbox creation fit together with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to trust the process for team or fleet usage.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/how-it-works.md file." - ] - }, - { - "id": "docs-about-release-notes-001", - "question": "I'm reading NemoClaw release notes. Help me understand what changed since my installed version so I can assess upgrade risk before touching a working sandbox.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user understand what changed since my installed version and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assess upgrade risk before touching a working sandbox.", - "expected_behavior": [ - "The output directly addresses the user's situation: reading NemoClaw release notes.", - "The AI coding assistant loads the expected_skill and references/release-notes.md", - "The output helps the user understand what changed since my installed version with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assess upgrade risk before touching a working sandbox.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." - ] - }, - { - "id": "docs-about-release-notes-002", - "question": "I'm maintaining an existing sandbox. Help me spot compatibility notes, migrations, or behavior changes so I can decide whether to update now or wait.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user spot compatibility notes, migrations, or behavior changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide whether to update now or wait.", - "expected_behavior": [ - "The output directly addresses the user's situation: maintaining an existing sandbox.", - "The AI coding assistant loads the expected_skill and references/release-notes.md", - "The output helps the user spot compatibility notes, migrations, or behavior changes with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide whether to update now or wait.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." - ] - }, - { - "id": "docs-about-release-notes-003", - "question": "I'm evaluating NemoClaw for a longer-running assistant workflow. Help me see the pace and nature of recent changes so I can judge whether the project feels stable enough for my use case.", - "expected_skill": "nemoclaw-user-overview", - "ground_truth": "A NemoClaw-specific answer that helps the user see the pace and nature of recent changes and gives enough concrete guidance, decision criteria, verification steps, or risk framing to judge whether the project feels stable enough for my use case.", - "expected_behavior": [ - "The output directly addresses the user's situation: evaluating NemoClaw for a longer-running assistant workflow.", - "The AI coding assistant loads the expected_skill and references/release-notes.md", - "The output helps the user see the pace and nature of recent changes with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to judge whether the project feels stable enough for my use case.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/release-notes.md file." - ] - } -] diff --git a/skills/nemoclaw-user-overview/references/ecosystem.md b/skills/nemoclaw-user-overview/references/ecosystem.md deleted file mode 100644 index a409789a59c..00000000000 --- a/skills/nemoclaw-user-overview/references/ecosystem.md +++ /dev/null @@ -1,92 +0,0 @@ -# Ecosystem - -NemoClaw provides onboarding, lifecycle management, and OpenClaw operations within OpenShell containers. - -This page describes how the ecosystem is formed across projects, where NemoClaw sits relative to [OpenShell](https://github.com/NVIDIA/OpenShell) and [OpenClaw](https://openclaw.ai), and how to choose between NemoClaw and OpenShell. - -## How the Stack Fits Together - -There are three pieces that are put together in a NemoClaw deployment: OpenClaw, OpenShell, and NemoClaw, each with a distinct scope. -The following diagram shows how they fit together. - -```mermaid -flowchart TB - NC["🦞 NVIDIA NemoClaw
CLI, plugin, blueprint"] - OS["🐚 NVIDIA OpenShell
Gateway, policy, inference routing"] - OC["🦞 OpenClaw
Assistant in sandbox"] - - NC -->|orchestrates| OS - OS -->|isolates and runs| OC - - classDef nv fill:#76b900,stroke:#333,color:#fff - classDef nvLight fill:#e6f2cc,stroke:#76b900,color:#1a1a1a - classDef nvDark fill:#333,stroke:#76b900,color:#fff - - class NC nv - class OS nv - class OC nvDark - - linkStyle 0 stroke:#76b900,stroke-width:2px - linkStyle 1 stroke:#76b900,stroke-width:2px -``` - -NemoClaw sits above OpenShell in the operator workflow. -It drives OpenShell APIs and CLI to create and configure the sandbox that runs OpenClaw. -Models and endpoints sit behind OpenShell's inference routing. -NemoClaw onboarding wires provider choice into that routing. - -The following table shows the scope of each component in the stack. - -| Project | Scope | -|---------|--------| -| [OpenClaw](https://openclaw.ai) | The assistant: runtime, tools, memory, and behavior inside the container. It does not define the sandbox or the host gateway. | -| [OpenShell](https://github.com/NVIDIA/OpenShell) | The execution environment: sandbox lifecycle, network, filesystem, and process policy, inference routing, and the operator-facing `openshell` CLI for those primitives. | -| NemoClaw | The NVIDIA reference stack that implements the definition above on the host: `nemoclaw` CLI and plugin, versioned blueprint, channel messaging configured for OpenShell-managed delivery, and state migration helpers so OpenClaw runs inside OpenShell in a documented, repeatable way. | - -## NemoClaw Path versus OpenShell Path - -Both paths assume OpenShell can sandbox a workload. -The difference is who owns the integration work. - -| Path | What it means | -|------|---------------| -| **NemoClaw path** | You adopt the reference stack. NemoClaw's blueprint encodes a hardened image, default policies, and orchestration so `nemoclaw onboard` can stand up a known-good OpenClaw-on-OpenShell setup with less custom glue. | -| **OpenShell path** | You use OpenShell as the platform and supply your own container, install steps for OpenClaw, policy YAML, provider setup, and any host bridges. OpenShell stays the sandbox and policy engine; nothing requires NemoClaw's blueprint or CLI. | - -## What NemoClaw Adds Beyond the OpenShell Community Sandbox - -OpenShell ships a community sandbox for OpenClaw. -Running `openshell sandbox create --from openclaw` pulls that package, builds the image, applies the bundled policy, and starts a working sandbox. -This is a valid path, and it produces a running OpenClaw environment with OpenShell isolation. - -NemoClaw builds on that foundation with additional security hardening, automation, and lifecycle tooling. -The following table compares the two paths. - -| Capability | `openshell sandbox create --from openclaw` | `nemoclaw onboard` | -|---|---|---| -| Sandbox isolation | Yes. OpenShell applies seccomp filters, Landlock filesystem restrictions, privilege dropping, network namespace isolation, and no-new-privileges enforcement. The community sandbox bundles its own policy tailored for OpenClaw. | Yes. NemoClaw applies these through the blueprint and layers a more restrictive policy on top (see rows below). | -| Credential handling | OpenShell's provider system replaces real credentials with placeholder tokens in the sandbox environment. The L7 proxy resolves placeholders to real values at egress. You create providers manually with `openshell provider create`. | NemoClaw creates OpenShell providers automatically during onboarding. It also filters sensitive host environment variables (provider API keys, `DISCORD_BOT_TOKEN`, `SLACK_BOT_TOKEN`, `TELEGRAM_BOT_TOKEN`) from the sandbox creation command to prevent accidental leakage through build args. | -| Image hardening | The community image includes standard system tools for general-purpose use. | NemoClaw strips build toolchains (`gcc`, `g++`, `make`) and network probes (`netcat`) from the runtime image to reduce attack surface. | -| Filesystem policy | The community sandbox bundles a policy for OpenClaw. | NemoClaw defines a targeted read-only and read-write layout. System paths (`/usr`, `/lib`, `/etc`) are read-only. The agent's home directory (`/sandbox`) and config directory (`/sandbox/.openclaw`) are writable by default so the agent can manage config, install skills, and write to standard paths natively. | -| Inference setup | The community sandbox includes an `openclaw-start` script that runs OpenClaw's onboarding wizard inside the sandbox. You can also create providers and configure OpenShell inference routing manually from the host. | NemoClaw's onboarding wizard validates your credential from the host, lets you select a provider (NVIDIA Endpoints, OpenAI, Anthropic, Google Gemini, Ollama, and compatible endpoints), and configures OpenShell's inference routing automatically. Credentials stay on the host and are delivered through OpenShell's provider system. | -| Channel messaging | OpenShell provides the credential provider system and L7 proxy that delivers channel tokens securely (including path-based resolution for Telegram's `/bot/` URL pattern). You create providers and configure OpenClaw's channel settings manually. | NemoClaw automates channel setup during onboarding: it collects bot tokens, registers them as OpenShell providers, and bakes OpenClaw channel config with placeholder tokens that OpenShell's proxy resolves at egress. No separate bridge process runs on the host. | -| Blueprint versioning | No blueprint. The community sandbox uses whatever image version is currently published. | NemoClaw downloads the blueprint artifact, checks version compatibility, and verifies its digest before applying. Running `nemoclaw onboard` on different machines produces the same sandbox. | -| State migration | Not included. | NemoClaw migrates agent state across machines with credential stripping and integrity verification. | -| Process count limits | OpenShell applies seccomp and privilege dropping. You set process count limits manually with `--ulimit` or orchestrator config. | NemoClaw applies `ulimit -u 512` in the container entrypoint to cap the process count and mitigate fork-bomb attacks, on top of OpenShell's seccomp and privilege dropping. | - -## When to Use Which - -Use the following table to decide when to use NemoClaw versus OpenShell. - -| Situation | Prefer | -|-----------|--------| -| You want OpenClaw with minimal assembly, NVIDIA defaults, and the documented install and onboard flow. | NemoClaw | -| You need maximum flexibility for custom images, a layout that does not match the NemoClaw blueprint, or a workload outside this reference stack. | OpenShell with your own integration | -| You are standardizing on the NVIDIA reference for always-on assistants with policy and inference routing. | NemoClaw | -| You are building internal platform abstractions where the NemoClaw CLI or blueprint is not the right fit. | OpenShell (and your orchestration) | - -## Related topics - -- [Overview](overview.md) contains what NemoClaw is, capabilities, benefits, and use cases. -- [How It Works](how-it-works.md) describes how NemoClaw runs, plugin, blueprint, sandbox creation, routing, protection layers. -- Architecture (use the `nemoclaw-user-reference` skill) shows the repository structure and technical diagrams. diff --git a/skills/nemoclaw-user-overview/references/how-it-works.md b/skills/nemoclaw-user-overview/references/how-it-works.md deleted file mode 100644 index 01c02704974..00000000000 --- a/skills/nemoclaw-user-overview/references/how-it-works.md +++ /dev/null @@ -1,102 +0,0 @@ -# NemoClaw Architecture Overview - -This page explains how NemoClaw runs OpenClaw inside an OpenShell sandbox and how the gateway connects the agent to inference, integrations, and policy. - -NemoClaw does not replace OpenClaw or OpenShell. -It packages them into a repeatable setup with a host CLI, a versioned blueprint, default policies, inference setup, plugin configuration, and state helpers. -You can use that setup directly or adapt it for your own OpenShell integration. - -## High-Level Flow - -NemoClaw keeps the user workflow on the host while OpenShell enforces the sandbox boundary. -The gateway sits between NemoClaw control, the sandbox, inference providers, and external integrations. -That placement lets NemoClaw configure the environment without giving the agent direct access to host credentials or uncontrolled network egress. - -![NemoClaw High-Level Component Diagram](images/nemoclaw-highlevel-component-diagram.png) - -The diagram has the following components: - -| Component | Role in the flow | -|-------|------------------| -| Users and operators | Start from the CLI, installer, dashboard, or an end-user channel. | -| NemoClaw control | Collects configuration, runs onboarding, prepares the blueprint, and asks OpenShell to create or update resources. | -| OpenShell gateway | Owns sandbox lifecycle, networking, policy enforcement, inference routing, and integration egress. | -| NemoClaw sandbox | Runs OpenClaw with the NemoClaw plugin, the selected blueprint contents, and supporting tools. | -| Inference | Receives model requests through the gateway, using NVIDIA endpoints, NIM, or compatible APIs. | -| Integrations | Reach messaging services, MCP servers, GitHub, package indexes, or model hubs through gateway-managed egress. | -| State and artifacts | Store configuration, credentials, logs, workspace files, policies, and transcripts outside the running agent process. | - -For repository layout, file paths, and deeper diagrams, see Architecture (use the `nemoclaw-user-reference` skill). - -## Design Principles - -NemoClaw architecture follows the following principles. - -Thin plugin, versioned blueprint -: The sandbox plugin stays small and stable. Host-side orchestration uses a versioned blueprint and runner that can evolve on its own release cadence. - -Respect CLI boundaries -: The `nemoclaw` CLI is the primary interface for sandbox management. - -Supply chain safety -: Blueprint artifacts are immutable, versioned, and digest-verified before execution. - -OpenShell-backed lifecycle -: NemoClaw orchestrates OpenShell resources under the hood, but `nemoclaw onboard` - is the supported operator entry point for creating or recreating NemoClaw-managed sandboxes. - -Reproducible setup -: Running setup again recreates the sandbox from the same blueprint and policy definitions. - -## CLI, Plugin, and Blueprint - -NemoClaw is split into three integration pieces: - -- The _host CLI_ runs onboarding, validates provider choices, stores configuration, and calls OpenShell commands for gateway, provider, sandbox, and policy operations. -- The _plugin_ is a TypeScript package that runs with OpenClaw inside the sandbox. - It registers the managed inference provider metadata, the `/nemoclaw` slash command, and runtime context hooks. -- The _blueprint_ is a versioned YAML package with the sandbox image, policy, inference profile, and supporting assets. - The runner resolves and verifies the blueprint before applying it through OpenShell. - -This separation keeps the sandbox plugin small while allowing host orchestration and blueprint contents to evolve on their own release cadence. - -## Sandbox Creation - -When you run `nemoclaw onboard`, NemoClaw creates an OpenShell sandbox that runs OpenClaw in an isolated container. -The host CLI and blueprint runner orchestrate this process through the OpenShell CLI: - -1. NemoClaw resolves the blueprint, checks version compatibility, and verifies the digest. -2. The onboarding flow determines which OpenShell resources to create or update, such as the gateway, inference providers, sandbox, and network policy. -3. The runner calls OpenShell CLI commands to create the sandbox and configure each resource. - -After the sandbox starts, the agent runs inside it with all network, filesystem, and inference controls in place. - -## Inference Routing - -Inference requests from the agent never leave the sandbox directly. -OpenShell intercepts every inference call and routes it to the configured provider. -During onboarding, NemoClaw validates the selected provider and model, configures the OpenShell route, and bakes the matching model reference into the sandbox image. -The sandbox then talks to `inference.local`, while the host owns the actual provider credential and upstream endpoint. -If you select the Model Router provider, `inference.local` routes to a host-side router that chooses from the configured NVIDIA model pool for each request. - -## Protection Layers - -The sandbox starts with a default policy that controls network egress, filesystem access, process privileges, and inference routing. - -| Layer | What it protects | When it applies | -|---|---|---| -| Network | Blocks unauthorized outbound connections. | Hot-reloadable at runtime. | -| Filesystem | Restricts system paths to read-only; `/sandbox` and `/tmp` are writable. | Locked at sandbox creation. | -| Process | Blocks privilege escalation and dangerous syscalls. | Locked at sandbox creation. | -| Inference | Reroutes model API calls to controlled backends. | Hot-reloadable at runtime. | - -When the agent tries to reach an unlisted host, OpenShell blocks the request and surfaces it in the TUI for operator approval. Approved endpoints persist for the current session but are not saved to the baseline policy file. - -For details on the baseline rules, refer to Network Policies (use the `nemoclaw-user-reference` skill). For container-level hardening, refer to Sandbox Hardening (use the `nemoclaw-user-deploy-remote` skill). - -## Next Steps - -- Read [Ecosystem](ecosystem.md) for stack-level relationships and NemoClaw versus OpenShell-only paths. -- Follow the Quickstart (use the `nemoclaw-user-get-started` skill) to launch your first sandbox. -- Refer to the Architecture (use the `nemoclaw-user-reference` skill) for the full technical structure, including file layouts and the blueprint lifecycle. -- Refer to Inference Options (use the `nemoclaw-user-configure-inference` skill) for detailed provider configuration. diff --git a/skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png b/skills/nemoclaw-user-overview/references/images/nemoclaw-highlevel-component-diagram.png deleted file mode 100644 index e1d4a43fc152ba6f58f1d2c1c74e7ae97c66b7e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880587 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ⅇ6WgkpE3}>#Ve22YZ3m{MP;IjdH zR5Q-X@~5zk@r?EcWz##@0R-x5YqLD-X%HRTw4g&7(Lg^x{dxNE!(XL)=xVIzz~Df7 z^VG?7^ym@N^#$F-u0#HA#cO{nd#G2jZMVk9(%=8&C+Rd1)F$AA_MPc>!*37oKbQvl z`{7SJBYN%6fA!1QR$2R7I7(9w`&hk*ePCc7Z8hGLw|h-}$neN;=&D&0NZ{m4UIRH;;o@e}$P6?-(m`a3olP4USiab2C@Bfv19pZ+XeyLmli zZ=G!h1_$By{nV`^Y%Mx_t9vnM%wFVIgP9E97*4Z_<;9&^3}e6=5o z@f*6N(B(L01?Fli%=SDZ>N)NO#5#sU=Ms4+BkMSge2N^eE_Mn){G-RSj78QCh=>*R zx#JPF5j!3{Nq6tF%O|p>?~6biv`LIf`U)FlHDlKGPbCh1%2SI=>*yF~*bRhe%{Wg% zZPMqL2C**W=sC77*Fn+UI0Sd8+ti^bzw-i#d>3;&eIM;x^@Z(it{2$FbfazBv3@Fs>-6DgpQKrMKm&nXI$BuQ@90i@hW13H_U*_8v*i7cU^~v8 zI~OvT4SbGm#vm&SPgUq2lo1LiY`7>y$fx?dD)kbW_mtOURl$Sd2~AB^sb_aLJJs~z zD9bLF=p&Q~ks2cssyhQHV^yPz6KiFTd#P7-l!bi>{hHsAG{Yg@-K}3BA1ZU!qwC0R z*@fd$V?;M4v$P1$pGWtxOxg%2L}zHf+=6`7f(!zy4P9Y1azJYfyAXosv2Av){7K#& zzxl4NLFX8lHlWRgG(0v6U>bRi>qh4F(2n~2*@N_W=24m;qN;jD`I&)vbPf{C3%4gP zbbZJQPtZT!S2jgnh+sYRq1GJbSjUyv5@kUH=P9eAKn$5`m1lK|s-lfSH`*lA%ywhy zjQk>Pt-HEP?A;W)<-*= zHnSD%UfQ#@54!WF%Fz98NF0vj7`;j>IUnok=HqE7>llz zDz(KiqC#hB-y)a|4em*8$klJW^G+JQGnsB8hYt^rq&v4K(sbp0%9%rUMhD4UqFjFu z(DcuK{_|ADSUNg5ly+d-RJWY%`3iav4Be@8blnkC5Z{%1VlX>E%14<3-;n~0s6X$+ zMTchrEC>Y$O%l*)bTB7@Vv*seKuf`i2y+?(#{3h&Ele5$ z00JNiGj&qakZv0DvP>5xE^taEwmM@`+~40Hz&<108NJNKus{qKL!RR(v%Tj+QxJ%! zz!TB={71Rnkxqi#*E>}(hNlz06O#*JL9c=n^}^i@pa}2PjXdm8L6>>L3ky@!*J~}*^gJ~V}DzuvD4;58{s(eQu(O=S9K$TlbI5vD21zb5U z%sbjj)>Jhglph88QC#zT`6yGMOo4wU1>)uU9eMb|ZBFxTFW@WJLxTRMY>T{#&mzsM zzl-bnGf#h{;eVckDR0vwMyEY~oGoft96QfA2g)0quQWOY-&3Gx0&%|bw>-kR*^HdG zlvMR2d?N$(~h(M$Q{`w9b*2r7>xH z3Vd*mi+em0pvq8ClZZu+_3~u)fB6|(6>Ib$ic1a3-AF?rDsHEyrim(h7mz@Aw9B-D z9%oSM3&N3yx`>np@^ry6TZrQ2+%F$!A=;kKIr2I4b^93?RRRT+SpE3?(Ef%FmkY9EOIQHt*Ysi`7k#BB?w9ImIR%c4b+`qW1(y0t86_1mV5W=act6 zl2z5!Rny(uJLX;T;=Omxx##4`dooYvH}g1wchVXg&ybGxxB8)Nuszb$Yy7T$CQqt= z$!pe2{bF=<3_3PI=VlE4I#STvnCN~BwTVs&(M^IRQNO!VQ27s%PH@5y{d-^qjS_Pxt3+V1Sw zD;>kS$i?beY60@Mo9|7=!@ftawwJ$Nd*{8+YwaTqG16I{${YvMBjYiTW%qL)8VQz_ zZ&hq~TF2Sh{}WZtC3Ef^i&&FM5GP zwuWc}FyKKHuQ=~fQkDL_NC)P zM?=@rF~83I+hw6QsjIdj=geg|(FG(5VBG>#)GenEdh90jCW)9`9iw**=2%m?m?^CkeSQ#07r4Q)B+@|+ylU}hJfBW^(&U3 z-M0$Jq=xJpGssJ_otlZ(zCvCJ44}$<*A9TwglxFGJIEC>&}M-pnO=}1YF0V>mK{=u zVO!(22|BXn-;mwZ)l7V5>YF2@?Un&I=%;2tLS3d zof6KTJp`?|M4*{iU8W9_K@%P(T>vFRjriv`H#7)OcoBQ9|2^TROpkLmlKnNg%@2+V zhAu{jtOA(Q2&joH9+j>N;C)*F44&YOx`Mt@25;1G4fX?Md`%7Yt8Ikk0oc;E$tSLC zwHkZ$S;%!%1X#1EB7G>Ey`aG;(5yV6mapi2k|? z4Fncd2*?oO3~#8>g#X7X`vB-6-OZRM6$Hd?qJM2`w}WPcHV073EGnulksVjt2G`5u zI!I2893yDIEy|1e!NM|pjQx*bbe(Ob(5KAzO+$~mUFez(oZAI>JC*K^ z-e}A3+iwlA`dt(pz83qbZenM z2M78ImVUrhHzSkaF5uhIu}6SiDhLF468E-Y=NUNIpE}6U%PTIi;0$OSWl}8fN`P_I zRfF&4G0q47@KM+b6ev)jK!M+p0_saT&SO|%oC*0$nH~=@#`u$cSFSibG4^5eF(9HD z@P^4TdV6{!GpoV5>LwfL9$~v+UhloyGMvkY4W6={-Z-;w7%ZW53qhmNF!0|%o; z+Lla^BA8+wIjx?viA?uiWqf%KtmysLDfUbVX7%)YuI^YnXd{Cxhn)92#AYq@4DDjG zzFy-zKHtWo3S=^}Rv>`&7eFkC!@6ppSRtEwmOb@3pv76n{?-WYDdL=fz*+nV`mbJK zoAHqXYqjxL&<6b=emA&ztla8u3e3LdU_6^KQ(YY^+!QnhbGgr(=3I2 zD}4b_=EB9#(!{gJtSLZ%Eiz;T5Uy>~Q7>J!uSA<9M~*(W#Xi@cU^d*FH*Z8{yBcg8 zE}J`abcm&J-$afL5`f)^o_r(y^1}}TbStgA-=e}#s7^pzYUvZf*(Qil{%5wqt?*TN zy>=pf8~R)PwB4@k7`7&SVrE?vxUs@@wE%+jIqLrq_$H5l zLDvE#nwV4c_4X1Jg?@m|)1*cER&U?FmHBvc{Ajy>yhrL9lo=ZzewS9-Af>f-Naq8#^*P!7=a^eGQ%Au&TYz#Gn2St3pMnpe1w5-C zTEMOJjJbexWH->zPw6RuYl|hG=Li~{nVkteOB#EA5fG2ZUH}GPB>2ew5!kC;x1qiv z{G-y(_GiK8*)r6wMEV3BtE;mse2?nVE=_Jm?Z*>CIkm1V@w+lj zJ$*ueGWH+zI7dmxPsdAbWF9fF$c&w_^Gt)--92uS5v!-KVG0}2{n0Tp;XX*k%Fe!JBS(*?6T>Hv^IZTt%K(^;q2G}R2OUk>>=R?7AnhetrgL=3sE2Zbv&vDO;6n)?k`hqLsh%3@()rjBJpyFPV)KpO)jbPf5 zv;lUZ>nLBXZ{V1C9$zv#qt_V@UIa#H0sTlijX$0U?1uqjCV_Kx$FdS_bvz#(d^6Wa zmZhGl99G|sWG?i~GCI*?`q%8ZmDr)wEhV?IKM%$=z{OPssALdZ-N@al#m2L=^F&8* zP+e19+0)uaq-p4Ed`dg@tMCD49hdbR_rx*Uoyq;IAJl;?+C9pJHtOQ5n=9CM9s~$i zoopFAj5?jzpcAaB{=K)}NWJLHTNnp7Na}ZMbS!+6)>%F=DHB~7Jf`0(64hXrk-t}0 z*9aC`1Y?6;6`cm92Jo~#PI&m)bgVx51mEbo{!o01hYk*;!TtegfUQPegz-Zkp)70f z{xZ`qb0B@ci_8nwwy-_sc+&(7`|WtT^NH=uU>=K!Dl_E2FfP~baK;2%8@S3rfE1Apv}L~Mdrnuz!? zBEkuJyfj>+G1=&kuCC6=OuL7OzYPWl!5F@D0kW8w2vCG235E~^hC-@YAD zf`TUmR+{$uhd=m1OfD_UWspZ1yg&Kmlk}@!{ffxZ*{F*EU$bsHNfuzBpxWG;3c(>D z_weB()UBJ({xIr4XAl@09ZL_VAH|?#B(S5ck+@m*wJd{P2tYl1v%DotXH0<~G^rS!gvp-AU|Ni%5Vl~6$%O!NKVl?>RgAZc~W(eTu z9)J*miCz1&j2M3g?S@WUMa{1dfVU8(HWWXB*pkR%jqEuolIW5 z_yv7ck+_80 zdCHP}w#DaVz^Q8bbO|09g|8lj@krx??KB!Y1Ee+t*u}}c!rM04XVOxzs8PE8{RhL? zV)j0H^X{EHI2)gaFwn5p#*#?#xDl^XMdc^JEnFXI^fk;O3^QKPSOhqU3BL{*or(%V zfi<>Afa}P}NIHN1e9%bajrGv*rNK|*T>gENHqqC7hA@W~K@)|1uKwQRce*lk4(sNf zl0zi`06+jqL_t(Doap;5S(cfM0$4OUM%w$^09^;T27@660F71xr$_IP#&_E#t<2JA zhR94oK@ieD`P^NQn(dO7(%L$0&_16h@7#g!U8>;;(M>KBrNW^?cjolz^cG+$ubUx? z&5VPe!!OrwTt}fDjpdaDu|Gx8^PRVk?SG#w4@i6W*j|3gANZC}-iN|gpg@5F-$a4$ z`htAhi}#iDVX^&n&&)qB|M}~#QQ!8x&zG6|j4>g*PXJ^X=NadmMl)0dfOKf+SO7*p zMmI31M|tR`yz-uGLM2F`G(aFt&3hSdYT}%-)p4|nNxKoHf+byQS6R70_PGZS9G7rlEd6jqw-re z&g&R(vTj*|ei@GS)f?vOQ)s zx1F_sOI)r`LxsD`=N-aXul^E&PRJPz_E)Z4g%(W!Vuu1?tKQ(4Juxw!u3WtmVBJN6 ziUd5CkwV=+SUKC|lf=7g^Q|jSRGre#>vl`6o=IU*POfmUyizFZA~Ir1#%{ zAD!Y*(8#Q|qW}#ap+A|y*S5LcN3j8)piNI)e zQTffjP!GLw`APtaGZ|V&Mx5U0Pv!aa)bq#){Lx1r@|~#H3S=?5fl<*tJ$>kLC&K6> z$V9zEy+__rUaM!BnYb6Dkh)C;{jj=PgtOpjx_#?*=xNqZ*(&|j70gy#MFvCZCLQA( zJghN5@Q8*H8)x}>P_6tZpBr$+na~S1=?iHlZ#wbu8foHkfl6;48K3@Dr?TypWmRdp zSbc(WVuEeG1Q^R7maQHN7#O`neaQCK)z$|%#(Hv+db9ci{d)KAU3AEO!Jp-1+%ueN z?!{aLq^XbF@7^P@*mrv$jOM%({BPxBzj(tg%K31m2eHU<)EB1Sj?B6C-4HA5N{cZE0m^A>Bi7x%B8_ ztZuY~9Y=$HJ>~4dzTbCXU)0AeXlD6vca3M%u#y?V z2_|OVFYtxYot0X~(;ethTiZF9iD-=Mm;1s2&v~6RmWEPi*UYDQugrwn(aw_2 zt&QlF0J0ae%y*BW*-w8u7Y6^T3WD5@9s!uLk8C!q27s^Q&p51_<>(LcX2-tH^n*Y8<8=1y2>M(LnP}$H{V%Sh zN9gNofI9L#B7d5>SKUWlN8QO!Y2h_~uHpz;#{s1iEF}W;0Fu`L#!=UB6^U{(-kPmh z8|2DzcLZpS96uJ6(0+08;w6B><7xf{0mrV8Z zdIH8a)&WbQ-#^6}rB3VWL`7>X>qz~FM~2fM|H&VRgG@T!dpL>CemAnPZNhKrKLU;I z>r&n`_2X*hF;!&TRT0|T_<88tTN?Ek8wB~zp@Yr?luJnU!VIbZ#urQ^&P>g8@M?XI7V_jtt|u`=~GHth3+?%lG={4}tb&L?Q2(JmhI#CH zX0MfQW)#c%(*8BzSN#m>PasqiW$6Dg+p)UB3w&ML<&^D_WeghH9(_gHQuM3L)3@_4 z=A$fmVsB$9Wi$m~N6@pfPMeK3hOm3UZDCWe?`R{Z=o?p-s3ZW6pcm-rF#)&+k*}hk z7Hf<<|MN%| zvji~p31tWXwJgEo@=yi+;`6kFX`Tr?NpO}jKF@QuEql*i+D&W|{G8Q?I;mT6y|j0e z_P#IDSs#{uS$%_QntmUL=L8|^GZU!t;32@BiAUI0sTX>RYDB#E`ao%G@B-&}MCkL< zOkl5ID(^R`fXSi+$y?LWu~FVjRwUqAW{3+A5EB>c;&TOBS$8)a@4Vy0nyXf@)naEggR+^FrJ<{4-oJM*-2{ZIE@qZ#X`=m7 z{<1B;`}eqJgN%j!*!7McIvV4Z^)_>`RyJ2W@%;-P7WBnCq^|XH%Z7#cNjLn)?ORU& z#(N7V3lu0&;P*=bXWTJZeyvzXfN$P@)44C-%ZfszxSW7mXLqC z$K!kcz-uKdCc{sL-c^d=(I;Tm`Fmsc3FNI~OwR(S9c%m56<8g}EVB%<7!SZ?EN#b% zh~h}p5wr+39=A=FY4h{Pim87Q za$Df3^1?vum?xt@sE;YHlqtuUcN^fmfZgNf_3P;&@=Q#WJ{by54cMpJkvj;(=t0}4 zy{9;ShNA0PTn=s4K7^ew56+^4?kmC9&!6~WZ8VrA<-0HS7m zMYvIO<+l_vE5BfD?Qt8};YJx6_ouE}=QcjPp6ZoPZ6};fN%6E_CFHz+_)KmZRO}tKFh>I zDu=F2u?IU(E!PT8mrjf5Ix_%Z9i^9H{0hZE>_*f=|Av;8YggZ?}%R2b>af7|Mo`^bJ2 z{uU_k9Vn1#?%(0Uf2fx@z_`W4iWkD)?oLFUq%`ni`*P=BjyVR$2TXFVAq<>wGy!zb zkRVV~5XfC78(Bo>YBup=V(gN?POu#CoZOfyULfuVAAArKW+yrVYEPa#iO?bCIlB`M zuM}2I$p^ui?STpCCZ%ZkshU z_!$GOZRaix84i3Nw+ufbdWB;Om?fMbC(aqRRJIhAb}7L z_Li@(b~5U3w>+(VP6kSNb<NEokYIQPR>j zD7=hpzIXqA^sR06UZaNu%@}>G5yh-}wE$s^8kP03uakQcG%KFqkuiAgI`4`A zbZKRK-SbsqM2eS5O&e|-i;ppgCM5Oz! z$!8ji%x3M<2m+JZ+baT`WOhOO!*Wze1YN!4eag>hLHX1n=>CclkvPCdCo)x z`ER!KVn7h#Y-S7-9O&4kqgsP(ORGUesB6@_1X-$)dTeYI1A9$mn^HG%67RTrNuj`pe4Tt&wlg(yK<2qIZgPd!`@`R{`JM4FjHs^;a>_oblhJL61CbU zbhiDB|4wQH=x9r5O5R9pd!$XCF3JLFZT8iWFHWZ87yt#pvpP_eWq0n}4rhW(VOv)4 zL`Lx(jkf9AssPZAPmHHqcW$ER2*Ayjwh-bG4PSAO;e?BSmf%YQ{hJ4zxh3~Q=7wJ*y zs>OcWK)^-;a3GM?phF|II>dJ5HZQ0;+BG)|>qeThD{gQvSRX2a30*i5pGr2mxR~3_ zem&=XTof6}2;pO$DtNaX>pX5va>9pQyRO!_0u)I=?6b{Dp9J+};6|*CwHtB~kCP7SNyNC({lkSsO{9+_ zzi_H=H=Fc4lBpgHQ1Z3?dFC=Numsfy084UDsp4TCafxzOU`k=J1BM7BioES0R~Tt& zLUKTqXYsK+0$SYJ!ah+jo;VV0aLxcwd%GTAXAb>MM3M6r!U;eNYe&l`ItW+P6vrjp7=L6q(QtwgX)U`%Bkt?Q4Zcr@?4 zf=OCNwDW16YP&me43=W9321N7NJ($B_tp{@IlChz76a+!nD=8+#wx?g% z((ihV1IF5I3}rAL(V3aDt*IcFe?QjexDRFq+h12a`7bqjf1Hr+p%CS6(II+H|Iy!; zUm?!1=;se3j4;>iOuP08>dQWNC{m*>|8rE>1@v8$053~!IvKv3c zZQ-%L*9}TXBf7Rkb@-AQGDi_s)Dqtks9?w)PYylStroXMzDtSu0y89*OY`5zmgSOiiMoCwBW0>J*Ura;i9_HP0pIzZ3NEvYB3$o=`$Ezp{Gqmm#pxU`82~F>r5ko zF4*lPjN*C)S5uwX^7#VczLSuvHYcQ8;uD9(4c(__QYQkJLp;78eBvH;B<})oFS4jlDtuak(9)p+a*9*>yM*zYJXS(J$kZ?^=7SJkG6pH^+5|7NNO?SwOLU zqMsH%2$8~Ata;qy?Z~7I*5LnYdtG*N{wdLUZB1VyOgu)Z32d(Z;X~+_{X?TyNw=v) zQ8|iBDkvBaVgWk@vo8_V91z$_Jv*(W9Q`ftnn38b?T0o?B9Cq)AWaaa>HWu@UP%Bs z7!nm}&f)noB?;>aPp4kRERy2bZ|7h0%VgwUS19C3V1ECY`0iqr8)Oeg^|a|=_LVx- zFSTQ$WhCdlXRSH-L{!^LN^Uh5cnM!(d7>}0(jrejAYWF4CbQ(x0F-_*INPF{G9X`^ zL+M%0^7OhCjcJo0R5K|(I2lyepVc>lz(t37CD?I4oTa5+r-S7-v;jKw=hM3*hiR_d zpz1jdJ=wuIfTx#Nubr9!I=&uvZC~6~jc(ODh&kM3S@~7{GfX8}Vz$3E~WAbO;U+u~m zXL{<*Y1A^qPN3gwv#&3B#D{JNG-Sg%Qy3ncZVI|XZina1lcViP4LCWa;LN{%8&sU= z_cu2|Xa(*4Z;omT8hq{EyNay6 zH)wQPz?(YRhe8_#5VJMoMCMzO$M2l#VETTMdBP>zQ{GeQ@{9Kf#w!Y}eLkLICxfFV z>^oi!-&u3d+u=FBj-V)PXA`8|rnr5~XNmNi!0Kw}+bgvbRrJY`s*!J^fln=IEj{YH z_{Q0SS(YZMw5P|1@PIi9F@36Y5tEn~R&+4dJt0HQOy*a(!jHJd^$UACICgfb-!Xdcq`HI6v*$~v;vot-c24-^B$ISEaAp>M}^ z22V_RSnsefN0=+y%6jnW*};YKfr}AqO}V&-4cZO!t4=is$B zs$Pr;yNs5=a~t7{`SRFJ>yQK+@(+u`RZHpcea);Obsm**xlV$Oz&i)E{t=I~kO>Xp z*=IV=m+Zy1jMl-8_yhi}3>0#XMIBK)oYGXSUyQOgPMI$Yp$1iXrO3)m{(^N=^7V2D z;rFuIH|&fG@*r}&pbB3X#LT0uImTG1T_mIn&3Tnt9dGfcQuvgh9=P{vj{B8T;e;_T z$-DB$q|08_ztH_wr*p-pNBGWPWkYkD<40A%Y!6@D%y>20%hKO~7Ef{NJCWDX=|WW$ zLYwvAEK4h3#`-PE;_w5fiTVc4tyK2gkCEd0Be%ag{-Dk%-tht$d%c!T(P06M#=fI<*R~ahC=wYn|+v@!v za#e9yOU5n;;rkOu+!hfF$kuP_GJX3jDcJN9P9Q%vy$3Ni{{~JaAMk_&`sbSeErW|- z#JJ~J8t~52`bNe^{;KqEkH#gM{YBDdHH<5`*-=X=05FE{Rt7{1J`!f@2a?Y zP$;l^G^?vJv$avW1o0deataw5BHzV&A7c_B4 z^htRzL$f;p(Nr9X4R>s*LM~UT5Z?$4W?IMZPIBZZQHZe7azhCK@2N#{8|+Vhw`Bj) z%IG^o%NorE9O#Xo$F8UQWE;Hsxwx<~JEZ3MQs?>dgHZu^TH-Ivs~`A-_SzhO3(JE2IE+8%9!@7A+0CRPS`0pvC2 znYAnLhTEz!LQbw5*e?8Kd~q_Lp;i-7EBveF&ga&DtSBVHbU~4AorI(;65&OBsJklN zUq~`DWie82rkhGYTY?GvOto*QQqNI-SLb7HZEf~i{-A#-bQfkn?;5Qx8r!twKfb-` z$Q#87%uYO;1ozO2)(%CQ3E-w)Vte!!K{RS3(r~(-6NuQqZ+_`^w`+f;={qSjc)d!F zIL4odr3$!))v#rcUD;}tJ0vw6{fc&OL~mvW#rl027IIkmZ^j_D{u#7?AF}DkB@&gz zhV>K)m8Pw&2e`CPn9UeF+RU?OeJ5a_f)&d{na#0jHJzz-?A@_@?AYQ;2ZO~pyh#$Xb_9Z&7J%I}TI&klF11xm3lFDmf%pt6k8 zKbPzho3m@JZZq5w48uORn3bp!a4#4FC_Z#4%UvH(@yvx>Rg&v$?;=~Dq+ph!bl#)3 zqokZMc2fa_9#-(4wrt{RWW!?kHdF9dF{f3chZV&|uX(Er1je+sc~p{nRk=9sWdiMw zd+EAb32%FLZ@6Oj@A$jz0QbURP|l2;*v}=KD=fR(D~9Yu|0A{l@^?O3#lXM-c4QIF z?5x^k;8XO=jY>cV4XMS%4*y-B(!2XHX5cEirBERF>+HPRKny{6Yl|RNxV6FL22j};It>)$JwV|7Fd9uXlIU?$+r^YA9#Lx{o$7aq%^Ho4}2l(Rie(dSTxt_F#0`+i^e=O=e6=WX2exr&Mk1jE`jkw0#?yU4QbYbQExyc=?U53yc0 z!Y_%;ezzKEc)qy*%W}#92WBR{n*t{Atq9EU1x+@MBF5lI0$ipLwY7gZV7tZnn_$=< zeB35uJeQBBz$PE4Es{GN@Vj?tc^Fz7{P_3bIHgT$9*&brXrUyW1=?0wTGBJPkrhQE zk`fhf(@{{uUS63JhDasAgVPP7hA%mud{e_(9ZT@fK`XW#g5KQU^ZV zL@MTrRE1XiArfqhgrFKd@s}bg7X-r*i>{58lom19$K2i=Vnyt%FiGpQ`NtAG!dHEu z2(4bFPN}C)yiV6PqSZ7)vwexGiCxY)HtYmKMq0w^f}of+RwTl%Z0(vE3T^|WaolI5 zTujuO9*nQ28*ls0+smh#NU2DL((x11d}5e3Oij_>ysRXaH~O~5O&#e=|CpewR#`3MlM-8bpIH{^TRn$hgOeVQabP5bXnf?YXI+^BS&h zM~Ts!VB#h^>^|^$!h?cuGCT#6eQ(@4zmWO3gMDn3R%^rbp=Zr?4WYfG5vDho?MFXg zrz%}vS29QI?#7!7l!i@)|lNN zAjb|0NsqDK_#L!Ktb`xredwC4-eDJj{Al8dAb7g}_tN=B1{imn_BwA5)YnZK&k&5C zZw#OLiJWW5I}_VjZO(H);xwm3bpsd*Yr+>IG6(r(N>qI7~xFLLX|C0U*>LXXY<+*?&_k?v^#fLfKh{rCifLYuG~oJpzCr z3F+uQch<>yrdH7Bw!Hz-Cx;f_Q_qL2h9>gO(x*ic;`2P7qig*K)_8zo;sxC97*a!7VEm)i>&d6L z1LP*(XSfD9KvvzD1u~7Ewyq+c$g_}XI0Wg~T8c$OsOEIIF(*%)U0%R;Kr$zQu09wIJG1QQ!OR_Il}eWn%XVil+8|6=br{i7>z^T!lAWy*GO`5fF;?&3^f{q^75 z#=nrN*d@G$3jNOuoeBjz4sm4NMCN8ViyIpPYK z9kZviTXdu9rTRNFZO03fvbqI!DZNi8|BcpKWP>flU}Fq z3TZ7hNTLwKt86h7n1>9dPe`HUI9pVV0p|uQ93T3yI$SI4|3gcG-~5%k*f;N+clBTJ zDd_I+^<|@^xd^uT;I2e0ubL4Ho2G@6wyj4aC`K5+@dodO>tty8-1rybQ@|0G` zDmdHq_qK-8Y$G19HJkt3JH)0rZ?VPv$2NoR8nO6-bj!qTli8z^#FM_6af+#M_WJoA z8mCE+DvA;+NxZ@w2>6tc{PSOOnA3oTBU1hQJBINRnPv-+a>}HPe1eJHUA27sayA<4J(-;5b`M3N8eqT8DEd zn2dgYIuGA>823C}(NR73Lc9C5X$Y)`qf5_h>MWwolvj4XnG4#U zn5i7sYxB2(C1*f;b3CNlWe*n%Yumr`I_=wu?$ZY2WvAQLwG9ydpth>3fbtnn zKY>ib4>|4kMk(j?ds)FFd$`@taxs6qJh2pt&eL2!rv2-9LR4S}hQQ*OfEQs%(?%qN zbB*nv+%9!+OqVXLSoLm4I@)@uMr~|bjvAZ)NDE&vAL5VgKAebUR7<5Qe*jVPpRZ!4 zp8TVl;*(E%i!e^}Th=luYZij}mCK?)U0Obq}#=49cABQk&GB;aV z|0cp`a3unY9zdDWUDXqzu8QO&wbO02@RIxp1G^Mnh-B(Z65~llyF%DIg_3rxgmH zEMB-sr$a$3^%2ZD5Mj^VqXDgx+ikzxBa(N1=7djFYS4dq2a#J52mN`b)s#awDS@9n zE~*xW4DJ#E%A92~5|3hRNvQ!59|e59`Iddp*IxnF_-jJpU(EteoTe4vW1J_8jXXdp zuz!)Z>J1D>ij@Gi%_1;`ZAbTP0pi(03O1#1=o{$C-?&CHwJgW}FlLV8GV1Mo_Rz#g zp1^j`GmnRO3-fhLhim_F$D5+y9is_o5%1n~*F%>)OUg^UP_YdbTR_Y4TE(7R;@e=V zR7Uqe6j?8%T>Ozk9M_!K&Eo?VcWg+4k(QY}0`UeILTZ+K%(w6U-VrrhPTzmbo+M5b zX`y6H?rN>>YUOMrHE>`rtC{=e%tR-e@k6^|BvF&#n9xNv0?sC(xnam@cz3k8{S-FX zWQl)5F63m!DII|33|$EZ_&EMt>K{At2t}OQ4xQ(@tP0?W+4!KfF8A6!kD%n;(WqESz^b*k={u=u9f?Ud_3;bE>Y75o+QW2r6e@7<#*DFFwhJ>eSS=AXO3TY3^BXcIW=+|O$~ImkU0St8ZmzDBBgfwd94D`) z9(tQ5yb?17h%z)8OY_hs|2!uq21Lx24nrdWnzT*RgI>IubkiGBrfJL?+d;2|8Ap-SLs{?}i+--rVuVP^b=CyY!I&BQ9-3)L#Z}SPl}jFT z;Vzz!I+^O3Qp%+QlKOra2@LPe6g58fh8UAa_OKnPeM=Uy=i z(t(7_YR_#CoG%LB^Tck41YKrDnU2jgEavE6nE!_q^_4?1g&~sAju=Z_4-^X%-%FH7 zjCLb7L5ozNiuI}aZl@r?;~e9Vy=zB+Zigq_6;<`i--W+Dg|N5k1wt{yF2_s>Gyl2J zS1bgCGxp6MS_Ct2WhlTQW-raDs3(S6@R@0$U$fXqfXIvaClnhtli|VwK-t)gLe~cjWIF#U~%MQF7$(ccL1=i$ns%BO7Vm|PZv(9w_H`S zj%w&7$Ty)GwaY0SrLe&4Kxxp01R3Pe$df$9{(E|fv)5=rbAzsD@Fhs#;|}eT44?xE zm+d_|(Fq72*7AkE->tj6qHS`1Daq3lAQ??8RZ+#zO$rl`Kv0_S9fMwQLN)kz@)=a+ zpMd{qaDWLa>?*E>Jk!$TDM&2(SrH0QO^c0JhF z&EWz|CecSa%oG3nDM8=8qd>;iwK;o&-^R1c6hI-Vhq!~ zB5p&l4GMZ6=Xh?f-1_}~OAvG(@n59h4vdmz`y%@!-lhEQY%dR+!-xXqx(9Udkpgrb zCne{1N{S%F-X9mt6zKy-0q6-DiE(;O!PW*o87iHyC%xZ%h=@iG&<>&n13toXa~YPB z$NPCw!y^wB_Md=0e)^e`ijfe4k5*d;+^0h8TH+~4j)kp45|QjW)6Z~4*Ygu zO^kGwR7XK!ZJt0{7&oTnMy??6_OVvlh|O4gq$kW2)3T&wOnv=VmPV5 zcJxLcv=H*Zl3p}rT(N-sVdhB^hn)W)6}ONK^!mt#o;ckfVNlf!_w+wd4b{G zkcpc_>cEE_Tvkyb6UjYWL@?=XV#DzF{)|WKM;mW&^+T^ci0s?E90|jOq9-K@tjP%3 z=qr==|JVpYeq=~&tCC4FaM_dk_=K6Q{J3CcbPtNb@v^Ec^q~UVZd+$aOK@sBtP&bA zF#_8@A9+M`;$uuZ+@vjtl*_5CR~<)89)=bU-dsx$nk`@I1f0BhQK+#-nw?QM0*`vq zr?7LBb7VE}G{PNdK&dLs83xs6N4#$J47CxPtw`1^ky>klrxLAP%V416B!OR8`KrtHgSGRS$2F==mFMMW+&Q2%l+1O^MD+xqGG#9_SPEG77)uk<^$^rp%RpN(fkSOy%jF?=3G&URFV#a9c|(Fz3`)m z-droa?G#85-x6bT$TJ>dn4TUUV+dHk2tzU@>J*z4rA zPuBq3CDRgeq(`WxOOc?BVS#N1U9R+lIIV}&exD|iuh{s$vQ#t6=pWF?Xp*7`rn(|x z)7Hig71abw0{YT%sUb~K6b3yMi+W^~qy+4m* z#_%h^`BmmSDWmMrCU6mZTdlw-S0)ekE1SC8)LGT>GiM7~8eOE}_+$t|s zNb!`<>bc95|9X8aUb&YMK<>ZDjP)xkdd*dk6HUnusP+j!1l(wp5a~2{A30PmpzWQ- zB3T;i?QMc<--cL-JdUP{vR#!&ot0@u_JB^|O2tP+L|`@-ck< zb{%zE-{M;%8t7H;Rn_mJN(@f~94$&~fA#L(f!tJno;QM_wo!q3dZKWDJ4vk_o$#c* zKA$UH$m_J(c%7<7_(a^LWUj7TdooR3he9~>_3Ux%yy1x(ZY10DmcF*S-BrgGdeQjb zB@a=B{C+E>E+=(^4`51rrSUHq`Cs_tky`yrKVQ@fqcO2{*FV>%KSLLs2NJCV5653- z;|E_5?a^o~FtKuXdrb|8F*Rc5|EUcWZ-Tt@Ts9 z%e;C0h}-UUo1x)&`DS=Al;w7G19h?7<6CB-g2u0`7ZP)M@%EBPEw5+#(^AvcQQ#r z(M9GL1NvZZE>8QTRP2b*f$tI!wby*+l|_-8*CiT1uk3FK`UW>2rfkC+M^u|hj6jX=w_comcC;0Dr2!9=A8-X0JR=db zx;`?Z$*x)&7o^0*GVyhX1TNWq|AhP}PLQ*>!H{|WK9sH_7xxY8?z`GLgU{yeo8V4oz z^DzHInv`kUW7{QAX~F4LI6*+8<`k({>Ql39@!hu4Y>2*qF!-VoCG$Ym6QFp^<8mrq z6wh+?!toS$r(Da$o0m=s*e@cHCp+fxw^HVyN()l6xCzuA7R(46Ga=yIMZ*?(pR{q2 zUgAMp0x~TY<0Q2GeWrhf@TWQydBB?b9p0(CZf7A9?Fbaxp{y~ilyncP(}VsHAz0-} z>+iH-o(H1tG0B;#2W#b%SAGU=Cl;JIUfNRvK-=n~q+IW`FSw zc?U?zBYv4+-0Ej?1SqY$Z$~=c5o3~rWWFcI%Y4t!2zWWY^=)|+8u(c0V(R$G)@Kx9 zJ4kP{7tKZv|BE-!qI;>*~s4V?G^x0?!>y}IvT*wFT2v#O{-4EXA=fR z%;UIIC=IbHMlc&}kF8ul%+g)vBAkzJ(z{N`UM@m_H9T0Ev)6AC+1M8lXS&`o9wgIx z*3qU0^vz-r9tpe&LaGilTMDULJK#^dQkraMS!GkqzheX(R8rc%w1*{Z*`G1Wdtjs} zT5ljzwMpk6B+RYSB@l=bkNG{+$sbE*id2-8>~u}q^8*1S$1LdQVr1VLs?@gQHg#!l z{9b7NKA8PGu@DWXE}W;^D3iEKdv9rbEGO2^%*|?eB(B3ksQlU^fS~Q9#o({mfebn> z&$Fo^KHT#9`pKgM9dr;md)bQAmD%bR*5VP6`=t(hp`0=U47-mimt^Gi1UT=w#ntjb zN9$sdG&Dk)ao@TVK;JvoePH^}bS=sSuDNITV%WeD*=TW?I&SQ{CB4{tvFM07=}DHZ zuh_SB&CTzgWw*vL6DeoI#bY)#ROomANc9=1Yp~yl7TrAI{PZ-8>B&67y<5^e5D_Pk z%p~0~3YY6q!-!P#H;yMbTPoA!E&vf{^HB;7or)iBN5upGm? z+7`KrlZk=DmmMAJ&Y-o^n?n_dG#W)Z13m8yQ3R|DUVd9mO-cixu}qn4H{?nOUjE*< zCbw4A)j~rW5&?RUn=OS4v4^9uN(`i;8lZwoW!grDF_OS2@3Q+VnjV8u%0$f6^-+lf zzQanJG|MoxeR%r8i6sdv;exw5H%2Kj3eYCuN|xp+HoP_h2fZ$D5Uqk+U!KY8y zZup!R0=4xNI$M*5td-2*k2YxtyGOe9x>Y)VfHDc0?-_6kTOnx24FHF&0j|sIL+(QB z@K57E9#~{%jJwzr6ukacWAO;ZK%Efj5B!flO+O$sY^Y^`9Swf{ETpr z?F|AMPUkh&r*r?5SJpBTO9gXS&Z|`DwjmJapVY$Mp=0Z0q9@??12%?LO!{tuWtDtp z9%e5H7Pa<7IFLb={8>nBRS%Mrd72sf_5QSRq7Vx%9EzNffG8qPwk(#N`>K;}$|udL zt?xQyY|XxUUT7P)V8SyWt6(bHeFJP-1fb`Ok}r?|GKmsuEtJ4ovg9{o0d ziEUD|79r*ZiN@VN`E2Y`?Vt#K6JI@jbr?VmGKp!Z8s0cafb@^O9j>za6a|(vrj4e7 zN31$R0QX~w;W*`!oPE$H8KGQZ-4`*!cXudlFH7*du~a>oo?38;Mi4rqFuV**(9w#r zDQ@R~y?{SArm~VD^SRJ!@wsMk#OvkDRRG9hUfC1y8$`76w!T#7h?}lH-t<2j-7G~} zo)dCu>*#EXa7JTP1$wsBaS?IRQ;bBsbe9pe6kpp`o#_^NW|$5<)vc0I7Y;j9WnF6302@( zq`MZbHCu$ASZhY)?EwaGglyU=2M8FLsb|ESLUy>jX$-;2*?&(p`=)f*D*!5_1*BCu zP7CH2!K9_2h4lXI7P&!4q6>CcODuq$H=rzCa&k{8vumsUONXTAo^1F+c(a*z z_(EhcojTJC32aeOz^PM7hWhRv=wy;W-p#=L4RDLduefRFf71lITFW8YRsh62q)XCR zF39FR<%7}pbtbomW`I74@M0|76HsU2GAoBDF=nkXPL1^U?>l3n71)uvg^F0ksIY_Y#WvC|i!+HN}Mr1<-t7wMq*@lY4}Gr$)}M_=%#I$?Dfm zPC6e$`xrBUA|N1kDeZn8P?WUSE>xP{P&ZR_AX6MieNZ^1j>Aj9UBsEIHzo15855{? z@^*2`{C_{=xfn1wE+uo9=I;|f+xZ{1yeu=G3ALSUr*<3&k*`KD(uwnrqSK}7At;%D z;{HSyI{L*Zb}8Pt5_zfXHy1Du@-U`%u^t$QE=lt2@Jv?ph3W-GVaznHJw|Fkw|ojh zoRqxFALZt&{(+B*?Rs&t`et45ya0=e7P0L>vceF#3%*8??R2`wQCrg7#w1YF0P_Zt z8Q__d^%V^@SH3o-;=^Pef~HC1uLk~wXe+)6i;w!^lp#43Izw=da#8g!Y~U=NLmOVEkG}0qgv_kib@UOxa6K)( zL1j&OKASTzE~ja$^bO50J<7YfIa41xT!x1qkUU__GSiPhJ|0taP4^#;9G)G0u~5ne zn>sP5b7L2ud=a1G7199&yoDy}b#Xhj9)RU0X=7mmt$MIE{M>(}| zgg@NKl>|rSrG{!A1-44e0|<+>%~4R<=RTgMboTj*(c?o$;i5cmkIy4e-7NmsJc~TOqa$sN*``Mkey_hiO$O*7)a^FArr<2#(dfE?> zRClF6t5Fq=44Lomn(~5+#>>pY8;@MoOFJC8K;`0&@P|+3-n4uiJwKf;=L!+gq%J~>bRF$m*3~N zv|nbQ&PKJH8h(i?i4uM(y|3WlU5rLQem!p|6T8T&fKgs+9X zPfh%&32q!`SI^0fe6LRwPk(ps>f>1_u>YH?)g-(LF!*+M&3OL6tJBcw`1icz zbVHkAPL=eBRZTxg!3tj|nw0RPd-5jY30>r7R0T%WMUec?6Cn>z9gJB6`K#QM`~w2O z5Raz}vwzHOq9Znnv*S#{V1l?9{L2L=Io89egu)~;O0~O z(7?yWKq;$-)0@vMn<}2L?Ozz@vz5=Bn*g( zA|ihnV3Ap;_caECkc(A4v8nQCn<|jKM;T5l$lWc{edFMCU|%Yk=5qpJxaQnOSh5-X z$KF~4*K7UHTE7F@oIp=908Uio)?`HZq~dM5p~HRv?Xg9DR-PNs&1uxsrQ%|JZYgzm z3Q<~`%rL}9GQC=*TSKW@XKY;FA&Q*;CDX3c0nNuW8HZ97;ccah*Fuk{YKh6%a@w~k zJj=A|FU5=hzSimc{IY?dEKrZSVS)u%vyFQ%qc*k;$ovL)6nMLEInkS_dJMH#{w%$^ z-)euP3bAH27-$gm6lGHsoIM81qPki(o(FY!+59#~I)ia$GRO)P9fPzXXIrsOPn>Y*136aukV6nNfj5Gi=mJkKU6t}V^d z7@UoT3-94Z>qc0bX?+f^qPRGJdAu%pw}k|VMK>=`imL7%?5-x|JubQ(MMr9wIB)2+Vw$Ll5V7C7k5Rn}_yWsG$edR@ zXwk~`YZn0|0x#^{0Qdj|5yWiI*>7{MUb~<{C?}kI&Ob8#^RBGc1u{wlkq+GtPYmhT z_mU1^2sjMRU+!Pdy&tDpX`B+y`J-DOzjOVZu$87~@0owAS_6rJe=SFYa!(lH=MLQ9 z40t))mNfP^_$Gq9*oLdTspL=bc%MfsT9?#;O?M7L=v{SK=j?z?2A-=Fsv0id){Par zP7%)M2%~fG~>eMRpgs<;;`#k^!z2C_sU}QQjiC&>yiM&E9 zTyMTDEEFTpS@p;2=BP4po4!b_0qoL~K7u7`%Z0B0megXJxN=7dn2sj zMjP5_ey_T&=cOF_oxxL_XAYkZ+~g)5PQP`-hqhn^Jz8&Io4A-s{!0YxI1xMVm{pnj zepkmrsg_>_J7@9n_tfv2QuyJTG;ZH?`}_7c{HEK`PPv?Q%;ZCYaDSSRuZqf!QnPKC zsaC+)ytrWVhq3$fU^_!q6MH=B$t|{I{(FXvkxh*)mp~J&j`UPp&doQEzD0*;s2$PW z)R??$yR3unrPTwLvts&+^1%>&MEaiWM0_uj&D9o^dnk#fOuBFiz{TuZ6gTJLY(=ug zd7MH(F#I)2lZs|^>|N1~cc2n6K@0555b+|^att+$Y_QCJQkK;EVn-wL{tb_5RY*M} z9H;nypJu@&K#7M;Gq-EEIpCak3du9YX{U)!03FKw1(VuODSxkp)`XM)k!SrK5+O(>*vZmsDRi!-!!t6=R*|51V61$DIF;`$hEtf zn)2NY8UbX7^>`;9H6J^E`=Xn<}noPf@B6+f{8gmkJpW5Uw`*dsc0*bw9!O@66 z8g1wI2V;93vg?jcPf^!3EM{b=Q1d#Q=lB1KG`ysIU+T2=dTm>HSb0sa_~&AV9ra&- zu&6xJ!~8({gnL^13>wSH5t}b%h{>A3OogBf`yIb(itwC)g2L?qrs4q@ zcvNjf6UlZ({`)cwN$Nnd)i^ivVwwbbpPwTx1$-2;(Lt3EZ{P z`7xC)U`$X)-GzoacvVqBb0hH^IY#wS{_8g+!5PvdMbfUxSHQlH4&b-w>MzuIU? zEHyQs-Vs2EG!)6#@LwmrZC@rtz9lh)JJN{-|--WHM?K96Ad16FrNp}z`8jM?Vk z2Z`y8@h+gNvO2Y0)rZ5vFJ4KQa`KZlVgSNEDr7QEc#)zwuq&UTOD=!}B|=+w5)D9N znGWZAiw5I|sxA=LeiX?&5hAj&t{tx8FJi}}2;-wy0u-SO43P_;WCVz0i*o*PbC!aL z*YcI0I04B!7y_j|0Z5S;O$`X>9pv~A4mF4hke+)U_3gnPIH1x>rGn|7Q>xm_60DF( zoX{N3JPNcBN)EXDT$Op_dp0L)&V`anrYw?v%>42=Ggz`ni*vby?wiUwDCtq1T^kUJ zAbdyeVi$yWsac&Tn$!81fm@?}PhzPsP<(tf?erj8D}hFKy8j?TjLo7pE~v0k5B$(@ zZmwy&yvgw0GfhN9v0b561 zxZnATi`=b?FVY3#Gz?oh3iDL{%er67-1ISE?7js56+b3cEUvIWojB;;zAXPs%^9?n zWY_1wl=Pb}CF%i8RxdS*I)Os2$`1A|KHC0cf9;(H@u=Q#<^QukqhSvYQN!W7&W zTKL%+ERx=QwX{0#3Nhl*4m3^BiIVV5E19t_48Q@SiTM6u_+ct{&fk9Zj*hdbjleT{N=41h6hSH>tvNzQr_onPP+*X83%3p$dj1*&~!SSwT!f z(%Eyk09lx-=(wr^QnLK8?^)Z)mVe*+ettgKd^Ios{Fp2Ji~8A()zG-RAH)DIN|78e zrM`=W%tydieZM$y1?99UX2ohSJ>$QwF3jLHFs@*FOFfEES(cvNEGIeGy6Sh7bKLDXX zUcV=LG5>v+&8RC__7vdoK?1ojH$rPb$nb|iZ0(Q&Znf36V|zPw>NG3F4##_JeSBBn zUmD*|XU@^g6py<<~Fz@^^3W zwlA}%M+;kl0tE{E0V$BZy{{hl+rO6il5(G4dAIXtUp?s`#<%?Vs_Ya9Yu3^#{2b~M zj*|vAX;Yd2-(&JMu|BT0quk(z7{kQVG@}Cz^kM%R!gh1=R65Yn3BVHD6FQpqwrcEX zM+V41k1#SgVlOrohx0w?O|6XQE$C#`*bM5CHOBxGt}HL|yA*uScx3bpI|${dTb{vp z;|kst(6|8~i8vi)PY3eLGD@(mVaiDz;75*-?e_7+5dfO25xk|sx`Z8~jUb*{=JT3^ z%8@~{$X4+2S!N181pP{RRs(H001(y{c?8Dt;P4ZAul^VNCey18 zwz3~`bALarE4v`o7W9wf=ww~^!YTln9;3cJ_>vki{#ZL#vb1lkkKW*I6kL-9)nGF^ zgsfgej#r?QO-;3hs2W7?K`T!s=mu@*A%kFcwg9XyLeIMD8vIn9*t1Z$RXC_8g=64= zexW#T#JR)tZ2*Hg>k386bpz)c(0!ZHfy&{fDrnwMJl(79-?im z4xelvbl5y|HuPup;ECqRNIJQN{w7bVo`il%TdT049fvpHI(;S$^!8xSWR(K+pG?p4 z{f0m2Updq+@%@%}g9kW~jRl-6Yy}E@M+y}E4?lacI}HPW@%aUi@JkHdeQ9Xm0E0a# znfC&CV{*z26^8Q#f#Kx5>|6E;<7LBF{Pb0dvyp9pZ}4kw%f97?x-Xr{F38G_XXJ1B zhR^(!aoU%FEkEgqAN+B`9g}Vb9A2G>vK3S?3rJFDyMQ|hxj!_3X!OaA^27+HBh7rV0n2b0P7$aa&4egVXa`pTJ9{WYP^A-6v${E975wRWCuUx2+XR3L%+bi=^$ubh zB?Q&xHz#B6aUT;UpS1vR)8|T;#YNi0afOogH_Acb>~mWXmOeY90mG0&ku3%yJ}uWR zCVPB3uw}<+DCLEc!dHOeIvqTCFo2?O5=9{|K0)C!+T1ql#4!TNG6j{&1JcHZ**7jRsgXqh z>+=~?`On2}R^#9&`cs-)H~T_9aycTGu9gOQIvaic6o-cGHB+2XwO(IK+iZ*d8U4VM z?K9~mz)3z9EabZ(P(+#t7Lj)av`PavkLPJ-m&li0on5i?xpdZG;PW+}`t!+NXu z*?!wD?^Y_{D^UJQkf3BlC-M!I@; zI$gi}h)jUDQyGrmbI1DAnV|#e#F2feqag!3d!Hj{Hp*wuiwb!n%FRZ6f9AJ*eIQ8g zQ0~ZAe&#Fw)x-I6{yBbrjTZR>-$abBkT!qWt3Jpd$v!h)Vyw&^_PS{Rl2`BFNEh#3 zO`qPplokOMn3eJ<%Kq`*!PL=+ArIrXx`6ziDa={La_T@Fv&j7KT=5xBBP#Ri`j>Uf zU&QCPHS@Jgf6dodcgK64=l|Ro=NOdN4`f-{GA42y_wDf>&-E zQ!ogW;fT;_P+AIj7~U}pu63Rz!BP(-wtWn)YKe0jDTXVHPf-WrhH;ws^2J+y;fP` zW`91SPn50J$K%pbneDPY>ZG!O0E|cDkD{Hth8Q;p7C}ZD5F@};z-br*pow&G({SOl zGd4x$!-Lsz!OKj>j-9SQI}B8+h+CdCU`&)m+i^(x6UfF!>A|w3^Q~H-nAZP z_g7!Y-Yxi-@?F+%o?X4lcR+ncoxt}(r$wyFKp!o`H)iaYk9;4^5G~)iRFdz8!8htB z6BCo6v)DgAx2dTy-Y>6}&S6A=J<-UZxB4BydpOtBYozBCI+pVd^+L1!I-fA`&wAC7 zJ){w%j80VN9+s&=kHXk@>5CV!gtk0xe^vp&mG<(nZO?$nz8IQ<o$;Lw`0chYIb>*(vL!1m`~na3H@6YT97T zb4k!!_wT1mw{E7f#}lzM=Goy>=~N$%=g$6Ar<06-z88hccqQ);Eyq4-BN@N|xZnm@ChyBgGc4VU7XgK&C5eT+V)GJet?W zUfE1?=kqVXehm7B+**FqkgqBH5|QWdeTuVV9>d31#*!f6ab-3fb<%hTyhLs3`Se5z1X9f69SrG$)Ys= z@I|_O>3;g_|M$n~CqMrnJ!5R$%kp9W_P_tP>EHaD|BgDXr^$&i#>~tfQVGb?OzW-a zVyy(T*mu?C+Gy-!4f5z?1RE`racq8W3AwI($7VprH^*CLqH?7iy~hBf7Ru-#3w=XF z4Zv9R6Ty9eQndrkAt!C?{1Vx;(0P=XE$ABu00EjAp21NVAo#!HG{f?_X(5|M1O2PqGz-dtdK-F|OZK_agZ*6vy*fJgMX*sZnM_y7ApCgp382*} zz%Mv@O3nC&t^jDW4t=DW46XKOBJ1xi08!_^f;RZWTp7mPMi-&WgPV~BMU-jajM-77 z>+~~pIY79}WJ8-p*P27-YeO+GO5jI5`iQ|>2E{>5GK8?y;G#Oi90vXh03fVxKs^Ld zuUqCKnPlgdu|3Vl(tV4R=WAl{dlUNFzRq^uk8SjsXS@%~shG-D5O5`3T@9gyJ}gJq zQV*S5SZ3u5^nNnvEfFBLh2A3cx{-Qyp_@9-sN%aEEiFUez^O^!p;-kqW>nHSkmeJkUZwU3C=+1mr2| zH~EZr=7mf9(KqNdP0SVc@;=w%B&mc44HVN=Wl%V5haNZ|8G8lqE&xh$EYM-59_L)3 z8GDQ1?FHzjt}XvsPx(hD*d8+Rs@sB}%R@O?>*rVC>zyBZqH~U{gugB<8d&uf| zF8#%y{}6}G5mqJxlrG{K&@X9D*wwLYtvy4#;T1>m*c`*+m*?4IJkGAmF8D+KwGM9i z&#aD_O~~Wf?_ABfEPtJ!`Q6L%_vNq5-RFc-h%Z>JtTNKeP^rH6OPEKU-Fp58;L zd+l3NG~V)R%igf;ca9fdo#b0~bv7csy7T2b`lW0CkUw74<<~zo|9)j> zV~Ba}!fbxQ0p7=uw_NW0c#`Z=&Rz8jD9>HdPkVuLMC~atmw_hvY-%QAaeg^X(69D? z=_QCydyVsHfu06y=I7C2b3#v<2|LUz`i}k(Z5`OXog?FsDmYPaqw;(M@ZB78agK~#wk7NaIMw%55jfn^7IR!~3!B+I z!4=AUmos)HBJK0lIPzPYvET0{$VvSG`+@r827w~8WKN%XJ{^7vfdB^N3dVIVs$Ie? zu-3nYdA_z7fwBf^sI{sm8N?Mf%v|?mHUP>+PEO5CMSTT)y0Vk{To&+*ZUGIdk$cip z8-n2I%5t*6^G~p){u^y#u4?sgd^`gwP<6ozX^q#=P74wyRt{!S@n80ByAeY8%i_A^#|k zwZmu^dqM^^?Ky6OQ7tp;b8UM9a^Np^tV7X0ud|)Lit(9!iMH&bS9;2XHmiViEZ_dL zO$HfB%gnAxU>SX+ozG|NLFbfTv{TCC+QaOZ=p%SQdxCAUU$miVi(19!`v0@{w$GLv z$DQ7}Z!?3zJ1_u203<;YqD0c`kYnwQ@XLpdaM=I#`l})~>@N;`Eorsk4X?D4mZB(; zB7m8>bFZK0_p3ao@5}(00YH$TPThODtE;jyv$Co)v#YAB^}B3m=QUkeF5mj-`Z?~b z?0B6EOr3M>7~ieTFZ~stm%h(fjN?Au7y3QYR4y5#f}Zz*^GJ>%%Cml}_nc#f&j0v~ zB3~{_{e%T8%240f@jEx3G0(YU$FQ91a(qfz+W+-~9dC0y_EmVZPdFCm*E1cHm9{q9 zc~JYDv}df*^3fOcC&$VhBXwtH$H~05PXQhn+roR?KI6S5Z>baaNypo`S16MWn3NN^ zeCbJ9nr0t!G0w=`u`}^0cl+c${8qv>fr@iIyNnZB0fM-DUpub=I z{A0f2@He}E|7UzP?N9#`&mDL8I@XVOKmFr(cYpN9%)!5n@$}gyH8x(0DE7~$CdBW5 zczO$v>Wwjh`wyeDd-&&nzWb+t`)_xD@xT8c`3l+#^#2ds_5CM5*}cu?R%hG?bb7iP za~yPBZBKsU0i8WC;~$9?x%vMb!_<1tTN&6dKdo;*E-v-H!bRlK4Z*W1Jo+tX4(e?E zCd;W)3;|cKY~sn-915@F+8`c(rk97wdG@n)DNT;x(I>mchFxQe?qe%{rCq@m{sZGl z`gqz%=kZ)SsYXqjM*&Ee#B3oR$s++VSkTZb4<@V zJcNHYOne2K=?hFRA)|9>>m_Avg*@4Zk)wXBbHMWQkN7dZNafg@i+i=R&exq&=a2N6 zw4vm8EEJxR&3mlxdG#(Y+29w#aO!;x-Yf9lcf1Vy{tIyb4FBVo^es2E(IVV|Z^y%Y zS;w7e|AMcC{_W2?es>p}{q1|KL!*!AfBBs7kox|LzWATnP)HlDn4NpPhkvAh@gmP4 z`cw#c_YwU6_0N93`)k_t7y2yhu6sh?yTzD{eOABfF8$Z_aXwc#hpc<3U#q|6i*~md z3pxS*A?=`i^`CzBGyHkmOkbY9ZCki;gU=%NQ@{4`CTGV-_2l)p?V~5i;_oT<*Yq=a z*JpnKPRG$+!>4?Q{{04J<;%IvU*Ur}p7js(O;N0?F=lu}I;gGHiG<{(G9t(D@s}Gj{q=P^m3@)rtVY?VtXTh?{)rW55Ds2@| z;zX6Rp$~?2Y-;E<5z3A>fq&E7`OTf<)bU(`mzO0TxJwugu(%0e$axNPW%&sMJ87Ox z^OxOjk-P2w784bwiC-h_PiM$M5g(3SD60W-agK1-b8zX1BtW)qp8S#qLo?|rtP4Ec zG5FP2U%78g)6f_%f2U! z?b@@BP!S-a)WJc5>0{z?mtJ8^+tM>`J>}EjwL3z))AA30@I(5Xp9623*hcb|fi;~p z+C@2ubLwJWkT2WTMYnc6f2P|sE{qe8bcUw=$$>XHP>$X+`BWj-eme5+{_ba?;e953 z2OjLFwx3SFxTY^iC%s_=lI!E)D1oB{zFrCRPCU?5_p2=qVSoRtw8+VcgXit-J8*MW zU#U^tHFVNql}PtG`i6KXP1K`zvuMBv5eKmi?$+k+7v0%X+Ad&q$9s2jdx#!#S5tO< z#ZIYTWSr-%=yvUVKHrCJutw@&7XtX%8Fia}f)6v=3U#3a%kto)f%S5SZ*`_LMXc}Q zuD$QP^Do2SBPOEFSEot4cBwm*zQV)EzkK_Tu_Z1RwJbIXnl4y%=T9egPO&quvDm|1 zS=~AA0OtZ5?1Fv*ze{&c1CKlEzW4sO;GItk^Vwz}z8s9OoP+Z&Ky(6L-nBu>M|$RG z@ehLWoa#^)VXU|EaHmv~g4>5cad$TczhJ-s2NM!5TGd~A#A1U-yoG5UGBC{9w$9>G z?5~SjE>?Y%jeKZl{nV}SF2s%xIYKcjwtlU zaT9LzWAmKuAv>Sm14h5~4R(HemmSm0)gQE<=^JY6?St`W@Ex<$EQG|boE|YzcEBIX zk)3HS-f^eC@9~*scS-TV*#W5x&d??f4!IcD9aS8}P)4?W?g_c%+FgNv^oM`I4l4f@ z59IFO$EUbiP@&JPG^AtOTGQ8Pqk9bW*cKTW$pDTMTkN*St{o4uYoqrJz8Q6KXKHC# z$NRpeOJDO%;PF}A<@pCc{62KsMt;J^1t|7GCq?BYBosW??PDyaVnE@Yci-B*OTWK- z-kBQ^iLT{)^A| zaedGQ>M-=^%j^{T%4_#nnDaI^nL&MCa`Dr+KJRIxyOWa>*e|n~kOf|DBkCgPOI}RE z=3*qGW26~<%(*U&y!jl?7j913q5U;?@#mAU7kAmU_H8DhonZJCV;H=I!!A_r+H|6w z;zhHo2TX!c4}G<)-GrWl&M%>>-}~;n)ah*ZF*fh#?2zVX@tlx%(Vza+ZMTi0URkur z4z%v7d(C3uyLVYc`P$pN_jvJ$rHGY{$kEZ)*c^9%h_2MmBBS@-c@tXi16Lm_ivq!w zok_1)U`xF%dyYMPlZDA|zWq9|*nVW_VrD=4?B}cXB^^}PF6-x9;0Iz%`XJ0;`L%uq zO@_OciIW%J#!vn3cSxwuh7sdi#e8!QUn7ELg7}&p#%?j@@S{KaaQCB&KUB#>8(F(+ zD(!09UdPrtxxzp-&&w~o;6h>+^RghqPfg3CV=T7WYuNsmY2V7tdf8XR#pDLKUuRMC z>+B-CJOAFI1-bMA<;&*=k)LkQhabL|-P0;xhcCeeugb*F0Lx`wHnor1A4yQ=Bb07p8a{h7FJ z!o6{&F9Of^UT5+0x85KfpNFv$KihXfA9ZnuUa{edU1#;r-ef1+H`$r_5B}i&d}i<; zSs0_As*QGnLqFBA4H}J7l!XpA8n`(-Xyh$TXJPYXCL{QY)H^>RLDfie; zaKUfnvpfAZ^sS?QFTsWR)CWwki;s#f`Sr(+U7oNA{2%DbzXFT>(%Yar;{Nal-^(I* zbs0h}Z_0f2ha#>lE6p~8H;#Wv^FWbfI7;9sfujVzj08q!i^JzPeGwN#-uoASgl;4e zU4yFcVB~tqnzN zb#u(89oz}ds<=C@FB!l8y?3FnE09-F=^3+CKV-g;6X7 z_MVhC=jrb7$q2fR;GrvTwu$qyx>+s^IblrnJMX^F?t0(^Hus4%g|iO8x%+e4kIL%5 z>5nQi@k-DBF#d_PaNJ3s&~|o1gAafBePn-?#kk%tjwiaX#xXA!&^yLuu#VDFrjGgg zWvcIehcU_34<#sHOsl~cJaIFR%%t^$?|(Nk6Pq$lp8}_6$F#gngwNkpRL-r0m65Q= z#1ri`$8FL!E`Zl9>D4hDC2*9$H&O!o8~JdDM>kNJJikY|lc&Cj-tZI)B)}m~n(#vH zQKn1~aVWmQ?e#Y9^%o8*K7#7a=TgT4+ij)yh`ax~_*mOxzPMaq>4IZ@s|4m;^7R@R%FeZEUzoGq zNV7gJz?5CbY_uU{q}e@(K1uF;>UySA?3;@;YrLrgyk;&597i0u3qf^ z_>X?P+x-+Q3wIm_>4RH;)SYwPLH8{dti}n^?}G+|Obqq8D?U8Nc(c9;zxBiKB9Hg+ zc^H3j&XJMA@Z*BWiCo_JhQ?~s*y&VPR4dIglVQW}pl(<1m^Wl(O^i1Kr!F_Wvll9!F z-rAp_08bxEfS))Q{@i21qb~5l9uvg1518KjfMyYigB&T%&Fa8L7ft$r)Ww(KO=Y(X zfIMHiu!R))aY7>tUooCOfVnWjZQae!gDUVEd4u#-uvxUhwW%lWiB1r2CK`H~w3~+| zuc8VbcL0@^1NDaCXC~R@eGHfRsmtO;7=H$7&o3~fMJDii%7dSBadCvsfi@xa0LJ=0 z5f=Z$<`elOZ28#dD;EkWt9c+-S<0geJFS}oEAlBX?gSWFQYPhS_zc=p#s^7ju&SE4 z4u^vUE*df0x4?ZXCHUak#XOes4H{`_3~a8-Lq57NN_Y{cpAuCb2Jx0pj0u18EuPRb z1)`QsdqlX!txT`n{U!BZFbBqqd>!Q_^uf|k^zrEf+TL{K;ld#6od;Rjkth?>2vuGW?$CQIS8-fxZ z4Q!PeXTB4Ppk8U zM`bL$KC|}a1oefxin*xL36;~!>W$b2XiFERk#gelQ_2q*%~WT&+lP7!Z4`PgbdAkc z-$;zJHfZ#ka9A^RmiB|4zuEmvUN3o}A@;(D7W9>i11+Zxw?6e7#AQX@ozw?r^`~|M zj6SHw_AZT0ntIX2ikD7Wue$p}i2UWZ9zU$}170^R$V};VdvkG0dTn+mIKSD z?4HII6YUHJ^AP637OSehy{1zkYy0F?UaW(X(vB)JJ~7A6 zu-08(Y-`{8&Ca^uaRH@o-AZGEaof=WYIpH7e&2;K@=ZVRdVDFnQ|rhq55XO}T=?v6 zdD`bJt_5{`8R}|%DtF3ZJJMg^OJL8ag zc2dmy&IQqzFf*`DdPtj+B9zJC^(>4b{hq~3XZBNqyRo?|;3YdN%7c31jGg)ViFFrW zS!Vny3dk!#zFj12e>Q{%`fcyW(vsJ&GN}KgGi@%f#!Xko)sJmE)0MAj)qSn+SIN&2 z*HHpT34F~GSo){>P1^f}10(w+Bj_Oh^*^-F#xGg8#|SBDQRGa*yECURmGX>?eeG^y zj+FrXh=sT4KO+32?>M^~s=IL-)Gz8nQE3-kaOYt0HH#1*v2gd%Ll%@?U^lNmVzS&_ z4&052#S@R%ne~ciT5#aqq37{df&`w$7rUUH$6oW(uH8C+#4Zf%B*vf5n&|=W3~w|83w`g>*4p7Sb|Aib#I7szFs^L) z-v@c49(h=gjT_u+Fg*Srb;pjMoWcV;2txs0@ z=geBX^ddVY^ZiLuVw-QJovB0m2Z`3jcJ!AD3Td35C)*|Mx)zty4^Hhb$V}`Se^BOxGSLg^gNt9dI>RqyW8LibVy)c0Ig7Meuob3d$M%;8WO+^B zcBeoW_1L%n_P_ki?oa>hKkokD|M<7N|L`CFX7}&@??0m$U;AJ&%!@DZMT@uC@rp%H zZ!%$X_0Y-B@{y{B0Qe!5sOJgNU1754`glG{;3$Ek1ilIhL^Gpn^lL7$wLDry7sVW) zKKm@W6cc(q>JVM%GnaoZBz$-ukAjSp0aTT~9j~^uHc7kJPanV?AU>;4EL7J%e;`BNg>fe}ebv0Z1 z4dGMR1-JKsBue@tY{E4aby2Ac1N?mLgWHV%!<*0gw|sG&vf)X;i!yqB=IeVX*!pG+ z51ys(f=*xV+A&sWITt@$ATp8$Na8mj50deplvz!z0urC~S5`ehS9F?mO|8is^0TnG z({F4K#wu}5HNl1h96+mYNvm>CEO7gF=+*w1zDYUHS1vZj-^myS^>TsmDL(jZ7En75 zY8yCj=B~KTYue_ISR^|A*!)x!>>1;O$Iu0T7ExOjDw?|6#?n-djEA{foZK43n|T`R z&7bZpqS=S$iyOT96cr+Tv;&$S7;ARZHu^De6@l`H*ovwp% zVYiE)ec>^i`rtG9(%uE>-e=;mk5~_Rl4I)+i=ih^Rw7-=gXy-pl(}Za4VuWsQvYtWRsy@e$QHS~hm2*|TWNkgcgx=LgsbKK|q(jX-t7YAh zKe{^gQ6TFYW$r45yUbDDLXQ4URq%#^-8v2!g!+8QACOb%o!~bl5I>`=@|2^{(~gi* ze-r=cAzXUA8_tZ zS>y#9(hV6?bZibDP8>rqNY;Gknz#rK^Vvv11mYInI@H1fo(hv5#$4(h#zxobv^3#`|DL}q(%GUYT%%@V1EB$%o!3;LL<-WALWK2gNMS0%FH#?`C zvOA+b%41|v8CnB)vE1#m&UctpfIj^Aj5`nskDvyE1ga;oM~2(3!{p-f{*NpymBtdR9>Z z=VAh3V+4SUk|$l<##5eiaFCvRTpTDKZ_ztBhpF~H@(Y}-$`V>n9SD1qOe1iZm--iN)1dy8t*e7G`A z4PuBs<=7j%3ZnOXa|1MoDuH!XI_e#1s+&@d%M3^|;;SyYWTGGo`PU$?;8Ui&XKWL`f`c-tb96~IL2uup`QBu&2t zunk-2_!neK_koK|L>>TTVI;(et#p#CyPpkg{hBZ6jq63w+;yWe#sC0707*naRLb83 zWq`d$ruIq8I0vtDKzZXV%W! zSH>o%pOcgOw89S!>tx@(q#tF_hqg;L?JJ&?v#)r+#BZpq;zP(U{n^iucV`^#1@2eN zh%>Y)bIt_UDT}_8hwW1G<;|Cm43*((2k1&W>Fb=6Z6F`W#ocWmaUm|{;XQlqq(}N; zWz+@SeGU+pWg~n~1ncm?9R#<*x)Q|sn+(%8az9atIh(G|GI-BbE~`B^*S|^Lj<}B! zI7;9*BmvdxVNq5>MN;QiH%9}aBVwP?9r07pu^BMs`8z>W=(oHW zlILU}%FrvItPjDYJqppd`ZS9iW2c;~VL(|G#F_0s@kLnlOStBI!6L-lzL0~Rx@3`{ zL*FV^v1GBI3OPYtULPr{6uaQ_Bu}60P=;JQoLd;R!XO zjx|;Y1313pY?T<);d#D{hu1I!eHXO4Ktcb712FtNo2S3VUtajaaG$W)HSH(gGL!bF zh#Yz;A;$-x;{p=@#C6Kp$1Mi713~*d!VX^JciIOseI!joP;#&x%GC&BDty#?|yBw@%2_#n;)5RRol=)CJqY-ezZG z%Vt817qd=~Y4KBEXzS0&w7!GsS?m&dD@W4#62$a-nY(oh+^I9=keAIAzk|5&w^G3+7Lt?-|2Xa{-1s+Z0!E>FaK)yCx7xMyFdNY|8Mt~fAw>|Z1fAN_kf*JUf%uS zgLik|eg7R6RlUU8ZFGSTUUiY4!Ru_WArAcj z?XmIX6u+uDi+MxLJaS<$e~X?AKIN;mA;Qfk36uuw!{3HF3s3<@Cpq;=SYO&QW;p^na6QAG{*xp;aB(<9Y@sX(pCaX z8RuRM);aASIa;G|6MjN>({)x3r9eQCN2B%^Uq;`CZF?xCG=uQ@$@3QaX1sMTUN

%IW`O(%c>@}|M@1of&d<*N*wjc_< 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

hJn<1FHR-=4h`;H}ub;aXehgBtzcKl(Pt{YGRC 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

J+`jeJTj{qpQ)xyP;c?xpoMt)F4t|9# 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 z `FAnn=+*4Yb@Ew7`9EXx1* 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¬OyZ?6MH^W!t7Rkyw?hn(L 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 rebuild` to pick up the new OpenClaw runtime in existing sandboxes. -- Hermes sandbox startup is more reliable on the v0.14 root entrypoint. NemoClaw precreates `hooks`, `image_cache`, `audio_cache`, and `logs/curator` under `HERMES_HOME`, makes `/sandbox/.hermes` sticky group-writable so the `gateway` user can create runtime state without removing sandbox-owned config files, stops precreating `/sandbox/.hermes/gateway.pid` as a symlink that Hermes v0.14 treats as a PID race, and clears legacy PID and lock state before launch. -- `nemoclaw onboard` ready output points users at `nemoclaw dashboard-url --quiet` again, restoring the dashboard guidance that regressed during an earlier onboarding refactor. -- Slack onboarding validates preconfigured Slack tokens before treating Slack as configured. Invalid `SLACK_BOT_TOKEN` values from the environment or stored credentials no longer cause onboarding to skip the Slack prompt, so the wizard re-prompts for a valid `xoxb-...` token instead of silently advancing with a token Slack cannot use. -- The Windows bootstrap script defers first-run Ubuntu account setup to a separate WSL handoff window again, which keeps PowerShell prompt alignment intact during install. The default distro is `Ubuntu-24.04`, and `bootstrap-windows.ps1 -DistroName Ubuntu` reuses an existing `Ubuntu` distribution. -- The blueprint private-network blocklist reloads when `private-networks.yaml` changes on disk, so long-running NemoClaw processes validate SSRF and private-network rules against the current file instead of stale cached data. - -## v0.0.51 - -NemoClaw v0.0.51 improves messaging controls, local inference setup, sandbox diagnostics, policy validation, and onboarding recovery: - -- Slack setup now supports channel allowlisting. During onboarding, `channels add slack`, and non-interactive rebuilds, set `SLACK_ALLOWED_CHANNELS` to restrict channel `@mention` handling to selected Slack channel IDs. Combine it with `SLACK_ALLOWED_USERS` when you want both channel and member checks. -- Local Ollama setup now detects host installations that are below the minimum supported version and offers an explicit upgrade path. On macOS, NemoClaw uses Homebrew. On Linux, NemoClaw uses the system installer for upgrades and refuses non-interactive upgrade paths that would require a hidden sudo prompt. -- Non-interactive Linux Ollama setup can use a sudo-free user-local install path when passwordless sudo is unavailable. The docs now describe `NEMOCLAW_OLLAMA_INSTALL_MODE`, the user-local install trade-offs, and the manual `zstd` requirement. -- Managed Ollama model selection now uses a memory-aware registry for starter models. If a known bootstrap model does not fit currently available GPU memory, NemoClaw warns and falls back to the largest known model that does fit instead of starting a model that is likely to fail. -- `nemoclaw onboard` restores the managed vLLM menu entry for DGX Spark and DGX Station hosts, which had been hidden after a previous onboard refactor dropped the `gpu.platform` value the vLLM menu builder relies on. -- `nemoclaw resources` and `NEMOCLAW_RESOURCE_PROFILE` expose sandbox CPU and memory profiles. Profiles can be selected during onboarding, and `NEMOCLAW_CPU` or `NEMOCLAW_RAM` can override the selected profile for scripted runs. -- Cloudflare named tunnels are supported through `CLOUDFLARE_TUNNEL_TOKEN`. `nemoclaw tunnel start` passes the token through the environment and expects the named tunnel route to already point at the dashboard port. -- Jira policy validation guidance now matches the maintained preset. Use a Node HTTPS status probe for Atlassian API access and an explicit status-only curl probe for `auth.atlassian.com` when validating approved requests manually. -- Sandbox logs merge OpenClaw gateway output and OpenShell audit events into one stream, and `--tail` applies once to the merged result so policy denials appear beside gateway logs. -- Onboarding recovers more cleanly across host and runtime edge cases, including root-owned config sync directories, stale dashboard port allocation, unreachable Docker daemons, stale dashboard forwards, default NVIDIA CDI spec directories, and Linux Docker-driver health checks. - -## v0.0.50 - -NemoClaw v0.0.50 focused on onboarding reliability, local inference hardening, messaging diagnostics, and sandbox lifecycle cleanup: - -- `nemoclaw onboard` detects DGX Spark hosts where managed Ollama falls back to CPU execution. Local inference setup fails the Ollama validation step with a tailored diagnostic, adds a Spark `OLLAMA_LLM_LIBRARY=cuda_v13` systemd override when that backend is installed, and enables the managed Linux Ollama service so local inference survives reboot. -- Compatible endpoint setup rejects `host.docker.internal` inference URLs because OpenShell sandboxes do not have a portable host-service route through that name. Use Local Ollama's authenticated proxy path or a policy-managed host service instead. -- Telegram setup now surfaces BotFather group privacy guidance. Disable privacy mode, then remove and re-add the bot to each group before testing group delivery. -- Maintenance commands recover the OpenShell gateway before retrying sandbox-list operations, which makes rebuild, recover, upgrade, and backup flows more resilient after gateway drift. -- NemoClaw no longer writes proxy hooks into sandbox shell startup files. Local proxy configuration stays on supported OpenShell and NemoClaw paths rather than mutating user shell rc files. -- Windows bootstrap installs Ubuntu 24.04 when WSL is present but no Ubuntu distribution is registered. - -## v0.0.49 - -NemoClaw v0.0.49 is a hardening release focused on reliability, clearer diagnostics, OpenClaw compatibility, and stronger validation coverage: - -- Gateway failures now fail faster and explain more. `nemoclaw status` classifies gateway probe failures by layer, distinguishing a named gateway port that is not accepting connections, a named gateway that is present but not Connected, the active OpenShell gateway pointing at a different name, and a named gateway that is not configured at all. `nemoclaw connect` exits early with recovery guidance when the OpenShell gateway is down. -- Gateway upgrade and fallback paths are more stable. The release hardens older gateway fallback coverage, OpenShell gateway upgrade checks, crash-loop detection tests, and Brev GPU bridge gateway traffic coverage. -- Status and doctor now report a fresh mutable sandbox as not configured instead of `down`, and `nemoclaw logs --tail ` is locked in as a NemoClaw line count rather than OpenShell's follow-flag pun. `nemoclaw debug --quick` reports restricted kernel-log access as a skipped section instead of surfacing raw `dmesg` permission errors. -- OpenClaw compatibility is more resilient across runtime changes. Kimi mixed tool calls are normalized more consistently, compatible OpenClaw JSON envelope changes are tolerated in tests, and OpenClaw patch drift is easier to classify during image builds. -- Messaging channel removal is now a clean teardown. The sandbox registry and onboard session policy preset state stay in sync so removed presets do not return during later `onboard --resume` or rebuild flows; QR-paired channels also have their durable in-sandbox session directory wiped before the rebuild and removal aborts cleanly when that wipe cannot be confirmed; and `~/.nemoclaw/config.json` is re-synced from the host across every rebuild resume path so the OpenClaw plugin no longer crashes on the Dockerfile placeholder. -- Hermes sandboxes apply only the messaging channel policies the operator selects instead of pre-enabling every Hermes messaging provider, and dynamic preset application resolves Hermes-specific policy content so Discord on Hermes no longer falls back to generic Node allowlists. -- `nemoclaw snapshot restore --to ` now refuses to overwrite an existing destination unless you pass `--force`, which makes destructive clone restores an explicit opt-in. -- Source-checkout installs bootstrap OpenShell when needed before running preflight, so `git clone` based installs can reach the same managed OpenShell setup path as packaged installs. The Linux installer, onboard preflight, and prerequisites docs also explain why NemoClaw needs Docker group membership and the privilege impact of granting it. -- NVIDIA NIM preflight rejects WDDM placeholder GPU names on hosts without NVIDIA firmware, and Jetson onboarding refuses sandbox GPU passthrough instead of creating a configuration the sandbox cannot use. -- CLI and E2E coverage cover more real user paths. Missing `channels` arguments now print the correct usage, scenario suites use supported sandbox subcommands, scenario tests build against the full repository CLI, and security-sensitive credential paths have broader coverage. -- Release infrastructure now targets Node 24 in GitHub Actions. The E2E advisor also comments with clearer scenario guidance and waits for required PR checks before deciding. - -## v0.0.48 - -NemoClaw v0.0.48 improves onboarding, sandbox builds, local inference, messaging, and day-two sandbox operations: - -- Windows WSL onboarding detects Windows-host Ollama through both the HTTP endpoint and a Windows process probe, so the installer can offer start or restart actions even when the daemon is installed but not yet reachable from WSL. -- Onboarding no longer prints a noisy `No active forward found` warning when it performs best-effort dashboard forward cleanup before rebuilding or recovering a sandbox. -- `nemoclaw share mount` verifies the requested remote path against the target sandbox name, so probes for non-default sandboxes no longer accidentally inspect the default sandbox. -- The OpenClaw plugin tolerates an empty or malformed onboard `config.json` by falling back to default onboard status instead of failing during startup. -- Hermes messaging policies are scoped to Hermes-supported channel behavior, keeping unsupported OpenClaw-specific messaging access out of Hermes sandboxes. -- Onboard session snapshots persist machine-readable state for resume flows, which makes provider and policy decisions more durable across retries. -- DGX Spark GPU sandbox recreation restores the startup path for Hermes by patching Docker GPU state and preserving the marker files the Hermes entrypoint needs. -- Discord messaging routes REST and gateway traffic through the sandbox proxy path, including a loopback proxy for gateway traffic, so Discord channels work through the same policy-controlled egress model as other sandbox traffic. -- Sandbox base images now include Homebrew and a `python` to `python3` compatibility symlink, reducing first-run setup for package and script workflows inside the sandbox. -- The NemoClaw sandbox image includes a Docker health check so container runtimes can report whether the in-sandbox gateway is responding. -- Sandbox startup resolves workspace template files from the installed package when source-relative files are not available, which helps package installs seed a fresh workspace consistently. -- Installer checksum verification prefers `sha256sum` and falls back when needed, improving compatibility on Linux hosts where `shasum` is not installed. -- VM-driver snapshot health checks now use gateway metadata instead of stale local assumptions, so snapshot operations fail less often after gateway state changes. - -## v0.0.47 - -NemoClaw v0.0.47 focused on release hardening and validation coverage: - -- The scenario E2E framework gained baseline onboarding coverage for CLI setup, OpenShell gateway creation, sandbox state, inference routing, and smoke tests. -- Messaging provider scenarios now validate provider attachment, placeholder configuration, secret-leak prevention, bridge reachability, Discord gateway routing, Slack provider state, Telegram injection safety, and token-rotation isolation. -- CLI command registration was refactored so public display defaults stay consistent across sandbox channel, host, log, policy, skill, and snapshot commands. -- PR review advisor automation was added for maintainers, with deterministic GitHub context gathering and structured review comments. -- The release refreshed v0.0.46 documentation, generated user skills, navigation, and version metadata. - -## v0.0.46 - -NemoClaw v0.0.46 improves Windows setup, messaging channels, Hermes sandboxes, inference routing, and command compatibility: - -- Windows users can start from the bootstrap PowerShell script, and WSL installs can accept express install to use the Windows-host Ollama path automatically. -- Messaging channels add WhatsApp support. `channels add whatsapp` records the channel, rebuilds the sandbox, and then pairs through the agent-specific QR command inside the sandbox. -- `nemoclaw exec` runs non-interactive commands inside a running sandbox through OpenShell and exits with the remote command's status. -- Hermes sandboxes can use the managed tool gateway broker for supported tool routes, and Hermes startup recovers its readiness marker more reliably. -- Compatible Anthropic endpoint setup auto-detects Amazon Bedrock Runtime endpoints and starts the local adapter needed for OpenShell routing. -- Local Ollama setup on WSL native Docker now routes through NemoClaw's authenticated proxy, and subprocesses inherit the proxy bypass settings used by onboarding. -- Model Router setup probes supported host Python interpreters and falls back to the next usable one when virtual environment creation fails. -- The NemoClaw OpenClaw plugin registers the `/nemoclaw` command again after package metadata changes, and sandbox extension backups restore compatibility with current snapshots. -- Sandbox builds patch OpenClaw's tool catalog to reduce startup latency for Nemotron-focused sandboxes. -- `nemoclaw uninstall` docs now show how to pass flags through the hosted install script form. - -## v0.0.45 - -NemoClaw v0.0.45 improves onboarding recovery, local inference behavior, channel cleanup, sandbox sharing diagnostics, and uninstall cleanup: - -- `nemoclaw onboard` handles GPU setup failures more directly. It can replace a stale CPU-only gateway when doing so is safe, skips GPU advice when you explicitly pass `--no-gpu`, points working-driver hosts toward NVIDIA Container Toolkit setup, and enforces the 63-character sandbox name limit before names reach OpenShell. -- Preflight checks catch more host setup issues before the sandbox build starts. Container DNS probing uses a fresh `.invalid` lookup so cached DNS answers do not hide blocked resolver egress, and restrictive checkout file modes no longer make model-specific setup manifests unreadable inside the image. -- Local inference setup is more predictable. Managed vLLM accepts `NEMOCLAW_VLLM_MODEL` for supported registry slugs and checks Hugging Face tokens before pulling gated models. Ollama-backed sandboxes now enable streamed usage accounting so OpenClaw token counters update after each turn. -- Messaging channel removal is a clean inverse of channel add. `nemoclaw channels remove ` detaches live bridge providers before deleting them and un-applies the matching built-in network policy preset when it was active. -- `nemoclaw share mount` fails earlier with clearer guidance when the sandbox path cannot be verified or the host mount target is on a read-only filesystem. -- `nemoclaw uninstall` stops host `openshell-gateway` processes, and subprocesses add IPv6 loopback plus wildcard local bind addresses to `NO_PROXY` so local traffic stays off forwarded proxies. -- Diagnostics and internal command output redact more credential-shaped values and use private temporary directories for generated SSH and config files. - -## v0.0.44 - -NemoClaw v0.0.44 improves onboarding reliability, GPU sandbox networking, local inference verification, messaging recovery, and remote dashboard access: - -- `nemoclaw onboard` handles DGX Spark and Jetson hosts more conservatively. Unified-memory GPU detection works for Spark, Jetson defaults to CPU-only sandbox passthrough unless you opt in, and local Ollama validation tolerates slow unified-memory model loads that still fit host memory. -- Linux Docker-driver GPU sandboxes preserve `host.openshell.internal` during recreation and inject a reachable DNS resolver when the host uses a systemd-resolved loopback nameserver, which keeps local inference and external DNS working after GPU patching. -- Onboarding and sandbox builds fail less often on first run. Preflight can guide missing NVIDIA Container Toolkit setup, Docker builds force BuildKit for Dockerfile bind mounts, npm installs retry transient registry resets, and compatible-endpoint onboarding runs a final inference smoke check before reporting success. -- `nemoclaw connect` repairs stale `inference.local` routes before opening the shell, reports local Ollama backend and auth-proxy diagnostics when repair fails, and `--probe-only` keeps dashboard and process recovery from failing just because inference repair needs follow-up. -- `nemoclaw channels add ` applies the matching built-in network policy preset before rebuild, and rebuilds preserve paused channel state so stopped messaging channels stay disabled after destroy and recreate. -- Remote hosts can opt into dashboard forwarding on all interfaces with `NEMOCLAW_DASHBOARD_BIND=0.0.0.0`, and gateway drift checks now stop backup, status, rebuild, recover, and upgrade flows before they trust stale OpenShell state. -- Workspace restore uploads backed-up directories file by file, dashboard forwards retry while stopped ports are still releasing, and the in-sandbox OpenClaw gateway respawns after unexpected exits. - -## v0.0.43 - -NemoClaw v0.0.43 improves GPU onboarding and uninstall cleanup on Linux Docker-driver hosts: - -- The standard installer can repair missing NVIDIA CDI device specs before onboarding by enabling the NVIDIA CDI refresh service, then falling back to direct `nvidia-ctk` spec generation when needed. -- Linux Docker-driver GPU onboarding handles the Docker flags and sandbox policy needed for NVIDIA GPU proof writes to `/proc//task//comm`, which fixes DGX Spark installs that previously failed with a permission error during direct GPU proof. -- `nemoclaw uninstall` removes the Linux gateway state directory under `~/.local/state/nemoclaw`, including gateway PID, SQLite, audit log, and VM-driver state left by Docker-driver gateways. - -## v0.0.42 - -NemoClaw v0.0.42 improves onboarding, status diagnostics, local inference checks, and messaging setup: - -- `nemoclaw onboard` uses the Docker-driver OpenShell gateway path on macOS and no longer requires VM driver helper assets for standard macOS onboarding. -- Dashboard port selection probes occupied ports more thoroughly, including root-owned listeners on macOS, and rolls back a newly-created sandbox if the dashboard forward cannot start after the image build. -- `nemoclaw status` shows `Inference` and `Connected` fields for each listed sandbox, and cloudflared service output now distinguishes stopped, invalid PID file, and stale PID states with a `nemoclaw tunnel start` recovery hint. -- Local Ollama status and doctor checks now probe the authenticated proxy in addition to the backend, so a broken proxy is reported separately from a healthy `127.0.0.1:11434` backend. -- Compatible OpenAI endpoint validation retries reasoning-only smoke responses with a larger output budget before classifying the setup as a model output budget problem instead of a route failure. -- `channels add` and `channels remove` normalize channel names before saving or rebuilding, and `channels add` hints when a matching built-in policy preset exists but is not applied yet. -- GPU recovery and uninstall output now use registry-aware recovery commands and clearer gateway removal wording. -- Onboarding applies selected built-in policy presets in a single policy update when possible, while preserving the final live policy and registry state. -- The installer handles unchanged user-local CLI shims idempotently, avoiding duplicate shim-creation messages during install-plus-verify flows. - -## v0.0.41 - -NemoClaw v0.0.41 improves Docker-driver onboarding and release compatibility: - -- `nemoclaw onboard` can pin fresh OpenShell installs to a published release that fits the blueprint's tested version range, while retaining the installer fallback when release metadata is unavailable. -- Docker-driver gateway startup verifies that sandbox containers can reach `host.openshell.internal` before reporting the gateway healthy, and Linux firewall failures include a targeted `ufw` remediation. -- Local Ollama setup probes sandbox-to-proxy reachability before it commits the inference route, so blocked `11435` traffic stops onboarding with a rerun-safe fix instead of leaving a broken route. -- Linux Docker-driver GPU onboarding can recreate the OpenShell-managed sandbox container with NVIDIA GPU access and leaves diagnostics plus cleanup guidance when GPU readiness fails. -- `nemoclaw uninstall` removes all installer-managed OpenShell helper binaries unless you pass `--keep-openshell`. - -## v0.0.40 - -NemoClaw v0.0.40 improves onboarding reliability, local inference setup, and sandbox recovery: - -- `nemoclaw onboard` uses the Docker-driver OpenShell gateway path on macOS with OpenShell 0.0.37, repairs incomplete Docker-driver installs before startup, and installs the platform-specific gateway asset it needs. -- The Docker-driver gateway startup check waits for the gateway port to accept TCP connections before it reports the gateway as healthy, and startup failures now include child process exit details. -- Local Ollama setup requires the authenticated reverse proxy token on every native Ollama API route, including `GET /api/tags`. -- The Linux Ollama install path preflights `zstd` before running the official installer and explains why each sudo-backed setup step needs elevated privileges. -- The onboarding provider menu offers an already-running local vLLM server directly when `localhost:8000` responds. Managed vLLM install and start options now appear by default on DGX Spark and DGX Station, while generic Linux NVIDIA GPU hosts remain behind the experimental opt-in. -- Policy tier defaults are filtered by active agent support, so presets such as Brave Search are not reapplied to agents that do not support that integration. -- `nemoclaw connect` checks dashboard forward reachability with a TCP probe before it reports a forward as stale. -- Sandbox startup captures a known-good OpenClaw config baseline and restores it on restart if `/sandbox/.openclaw/openclaw.json` becomes empty. -- The NemoClaw OpenClaw plugin package declares compatibility metadata for OpenClaw package tooling. - -## v0.0.39 - -NemoClaw v0.0.39 improves several day-two workflows: - -- The installer checks Docker earlier on Linux, can install and start Docker when needed, and stops with `newgrp docker` guidance when the current shell has not picked up the `docker` group yet. -- DGX Spark and DGX Station users can accept an express install prompt that preselects the local inference path and suggested policy defaults. -- NemoClaw now creates GPU-capable OpenShell Docker sandboxes by default when an NVIDIA GPU is available, with explicit `--sandbox-gpu`, `--no-sandbox-gpu`, and `--sandbox-gpu-device` controls. -- `nemohermes` supports Hermes Provider onboarding and runtime model switches through `nemohermes inference set`. -- `nemoclaw hosts-add`, `hosts-list`, and `hosts-remove` manage sandbox host aliases for LAN-only services. -- `nemoclaw update` checks and runs the maintained installer flow, while `nemoclaw upgrade-sandboxes` remains responsible for rebuilding existing sandboxes. -- `nemoclaw destroy` preserves the shared gateway by default unless `--cleanup-gateway` is selected. -- `nemoclaw connect` repairs stale `inference.local` DNS proxy routes before opening the session. -- Windows-host Ollama onboarding relaunches the daemon with the reachable binding after install or restart. -- Local NVIDIA NIM onboarding passes `NGC_API_KEY` or `NVIDIA_API_KEY` into the managed container without putting the secret in process arguments, detects early container exits during health checks, and prints a per-GPU preflight breakdown on mixed-model hosts. -- The sandbox startup path strips additional Linux capabilities before and during privilege step-down. -- OpenClaw workspace template files are seeded when bootstrap is skipped and the workspace is still empty. -- Kimi K2.6 and related NVIDIA-hosted chat-completions paths include model-specific compatibility handling for reasoning output. - -## v0.0.38 - -NemoClaw v0.0.38 improves several day-two workflows: - -- `nemoclaw status` shows the gateway's active policy version in the displayed policy YAML when OpenShell reports one. -- `nemoclaw uninstall` stops matching Local Ollama auth proxy processes before it removes `~/.nemoclaw`, which prevents stale listeners from blocking a later reinstall. -- Local Ollama onboarding validates structured chat-completions tool calls and rejects models that leak tool-call payloads as plain text. -- Blueprint policy additions under `components.policy.additions` are validated, merged into the live policy, applied through OpenShell, and recorded in run metadata. -- Rebuild backups tolerate partial archive output when usable data was produced, then report only the manifest-defined paths that could not be archived. -- NemoHermes uninstall output uses NemoHermes-specific help, progress, and completion text. - -## v0.0.34 - -Starting with NemoClaw v0.0.34, the `curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash` installer pipeline no longer auto-accepts the third-party software notice when stdin is piped and `/dev/tty` is unavailable (for example, deeply detached SSH sessions or some container shells). -In environments without a TTY, accept upfront in the pipe: - -```console -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash -``` - -Or pass the flag through to the installer: - -```console -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software -``` - -Or re-run from a terminal with a controlling TTY: - -```console -$ bash <(curl -fsSL https://www.nvidia.com/nemoclaw.sh) -``` - -The installer error message in v0.0.35+ surfaces all three invocations directly so users can copy-paste a recovery without leaving the terminal. - -## Component Version Policy - -NemoClaw pins the OpenClaw version inside the sandbox at build time via `OPENCLAW_VERSION` in the NemoClaw Dockerfiles. -The `min_openclaw_version` field in `nemoclaw-blueprint/blueprint.yaml` is the compatibility floor for direct blueprint consumers and may be lower than the NemoClaw runtime target. -Existing sandboxes do not auto-upgrade. -Run `nemoclaw status` to see the OpenClaw version currently running in a sandbox, and `nemoclaw rebuild` to pick up a newer pin from a NemoClaw upgrade. -See Checking the OpenClaw version (use the `nemoclaw-user-reference` skill) for the full policy. diff --git a/skills/nemoclaw-user-reference/SKILL.md b/skills/nemoclaw-user-reference/SKILL.md deleted file mode 100644 index e118eba9333..00000000000 --- a/skills/nemoclaw-user-reference/SKILL.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: "nemoclaw-user-reference" -description: "Describes the NemoClaw plugin and blueprint architecture and how they orchestrate the OpenClaw sandbox. Use when looking up architecture, plugin structure, or blueprint design. Trigger keywords - nemoclaw architecture, nemoclaw plugin blueprint structure, nemoclaw vs openshell, which cli, nemoclaw cli, openshell cli, sandbox commands, nemoclaw cli commands, nemoclaw command reference, nemoclaw network policy, sandbox egress control operator approval, nemoclaw troubleshooting, nemoclaw debug sandbox issues." -license: "Apache-2.0" ---- -# Architecture Details - -## References - -- **Load [references/architecture.md](references/architecture.md)** when looking up architecture, plugin structure, or blueprint design. Describes the NemoClaw plugin and blueprint architecture and how they orchestrate the OpenClaw sandbox. -- **[references/cli-selection-guide.md](references/cli-selection-guide.md)** — Explains when to use `nemoclaw` versus `openshell` for NemoClaw-managed sandboxes, including lifecycle, inference, policy, monitoring, file transfer, and gateway operations. -- **Load [references/commands.md](references/commands.md)** when looking up a specific `nemoclaw` or `/nemoclaw` subcommand, flag, argument, or exit code. Includes the full CLI reference for slash commands and standalone NemoClaw commands. -- **Load [references/network-policies.md](references/network-policies.md)** when looking up a specific default endpoint, filesystem path, or the runtime approval sequence NemoClaw applies on blocked requests. Covers the baseline network policy, filesystem rules, and operator approval flow. -- **Load [references/troubleshooting.md](references/troubleshooting.md)** when diagnosing a reported NemoClaw error, a failed onboard, or unexpected sandbox behavior. Lists fixes for common installation, onboarding, and runtime issues. diff --git a/skills/nemoclaw-user-reference/evals/evals.json b/skills/nemoclaw-user-reference/evals/evals.json deleted file mode 100644 index 9bed541fe47..00000000000 --- a/skills/nemoclaw-user-reference/evals/evals.json +++ /dev/null @@ -1,212 +0,0 @@ -[ - { - "id": "docs-reference-architecture-001", - "question": "I'm using the architecture reference. Help me verify implementation and operations details so I can make changes or debug behavior from the right mental model.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user verify implementation and operations details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to make changes or debug behavior from the right mental model.", - "expected_behavior": [ - "The output directly addresses the user's situation: using the architecture reference.", - "The AI coding assistant loads the expected_skill and references/architecture.md", - "The output helps the user verify implementation and operations details with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to make changes or debug behavior from the right mental model.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." - ] - }, - { - "id": "docs-reference-architecture-002", - "question": "I'm locating the right layer for a change. Help me connect structure, lifecycle, and ownership so I can edit the plugin, blueprint, or sandbox layer intentionally.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user connect structure, lifecycle, and ownership and gives enough concrete guidance, decision criteria, verification steps, or risk framing to edit the plugin, blueprint, or sandbox layer intentionally.", - "expected_behavior": [ - "The output directly addresses the user's situation: locating the right layer for a change.", - "The AI coding assistant loads the expected_skill and references/architecture.md", - "The output helps the user connect structure, lifecycle, and ownership with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to edit the plugin, blueprint, or sandbox layer intentionally.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." - ] - }, - { - "id": "docs-reference-architecture-003", - "question": "I'm modifying architecture-sensitive files. Help me understand the invariants that must remain true so I can avoid breaking sandbox creation or operation.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand the invariants that must remain true and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid breaking sandbox creation or operation.", - "expected_behavior": [ - "The output directly addresses the user's situation: modifying architecture-sensitive files.", - "The AI coding assistant loads the expected_skill and references/architecture.md", - "The output helps the user understand the invariants that must remain true with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid breaking sandbox creation or operation.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/architecture.md file." - ] - }, - { - "id": "docs-reference-cli-selection-guide-001", - "question": "I'm choosing between `nemoclaw` and `openshell`. Help me pick the command surface that owns my operation so I can complete the task without breaking NemoClaw management.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user pick the command surface that owns my operation and gives enough concrete guidance, decision criteria, verification steps, or risk framing to complete the task without breaking NemoClaw management.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing between `nemoclaw` and `openshell`.", - "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", - "The output helps the user pick the command surface that owns my operation with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to complete the task without breaking NemoClaw management.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." - ] - }, - { - "id": "docs-reference-cli-selection-guide-002", - "question": "I'm tempted to run a low-level OpenShell command. Help me understand when it bypasses NemoClaw lifecycle expectations so I can avoid unsupported or confusing states.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand when it bypasses NemoClaw lifecycle expectations and gives enough concrete guidance, decision criteria, verification steps, or risk framing to avoid unsupported or confusing states.", - "expected_behavior": [ - "The output directly addresses the user's situation: tempted to run a low-level OpenShell command.", - "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", - "The output helps the user understand when it bypasses NemoClaw lifecycle expectations with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to avoid unsupported or confusing states.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." - ] - }, - { - "id": "docs-reference-cli-selection-guide-003", - "question": "I'm doing onboarding, policy, debugging, or low-level sandbox work. Help me apply a simple CLI selection rule so I can move quickly without memorizing every command boundary.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user apply a simple CLI selection rule and gives enough concrete guidance, decision criteria, verification steps, or risk framing to move quickly without memorizing every command boundary.", - "expected_behavior": [ - "The output directly addresses the user's situation: doing onboarding, policy, debugging, or low-level sandbox work.", - "The AI coding assistant loads the expected_skill and references/cli-selection-guide.md", - "The output helps the user apply a simple CLI selection rule with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to move quickly without memorizing every command boundary.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/cli-selection-guide.md file." - ] - }, - { - "id": "docs-reference-commands-001", - "question": "I'm opening the CLI command reference. Help me find the exact action, flag, or recovery path I need so I can run the right command without scanning source code.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user find the exact action, flag, or recovery path I need and gives enough concrete guidance, decision criteria, verification steps, or risk framing to run the right command without scanning source code.", - "expected_behavior": [ - "The output directly addresses the user's situation: opening the CLI command reference.", - "The AI coding assistant loads the expected_skill and references/commands.md", - "The output helps the user find the exact action, flag, or recovery path I need with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to run the right command without scanning source code.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." - ] - }, - { - "id": "docs-reference-commands-002", - "question": "I'm choosing among setup, lifecycle, policy, inference, and diagnostic commands. Help me see command groups and examples clearly so I can locate the right command faster.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user see command groups and examples clearly and gives enough concrete guidance, decision criteria, verification steps, or risk framing to locate the right command faster.", - "expected_behavior": [ - "The output directly addresses the user's situation: choosing among setup, lifecycle, policy, inference, and diagnostic commands.", - "The AI coding assistant loads the expected_skill and references/commands.md", - "The output helps the user see command groups and examples clearly with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to locate the right command faster.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." - ] - }, - { - "id": "docs-reference-commands-003", - "question": "I'm using `nemoclaw` in scripts or CI. Help me understand example output and exit behavior so I can automate safely and handle failures correctly.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand example output and exit behavior and gives enough concrete guidance, decision criteria, verification steps, or risk framing to automate safely and handle failures correctly.", - "expected_behavior": [ - "The output directly addresses the user's situation: using `nemoclaw` in scripts or CI.", - "The AI coding assistant loads the expected_skill and references/commands.md", - "The output helps the user understand example output and exit behavior with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to automate safely and handle failures correctly.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/commands.md file." - ] - }, - { - "id": "docs-reference-network-policies-001", - "question": "I'm reading the network policy reference. Help me understand baseline access decisions so I can assess the sandbox's default exposure.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand baseline access decisions and gives enough concrete guidance, decision criteria, verification steps, or risk framing to assess the sandbox's default exposure.", - "expected_behavior": [ - "The output directly addresses the user's situation: reading the network policy reference.", - "The AI coding assistant loads the expected_skill and references/network-policies.md", - "The output helps the user understand baseline access decisions with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to assess the sandbox's default exposure.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." - ] - }, - { - "id": "docs-reference-network-policies-002", - "question": "I'm reviewing default rules and filesystem constraints. Help me know what is allowed before any customization so I can decide what needs to change for my environment.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user know what is allowed before any customization and gives enough concrete guidance, decision criteria, verification steps, or risk framing to decide what needs to change for my environment.", - "expected_behavior": [ - "The output directly addresses the user's situation: reviewing default rules and filesystem constraints.", - "The AI coding assistant loads the expected_skill and references/network-policies.md", - "The output helps the user know what is allowed before any customization with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to decide what needs to change for my environment.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." - ] - }, - { - "id": "docs-reference-network-policies-003", - "question": "I'm tracing a denied request. Help me understand how operator approval turns into policy so I can audit and reason about egress changes.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user understand how operator approval turns into policy and gives enough concrete guidance, decision criteria, verification steps, or risk framing to audit and reason about egress changes.", - "expected_behavior": [ - "The output directly addresses the user's situation: tracing a denied request.", - "The AI coding assistant loads the expected_skill and references/network-policies.md", - "The output helps the user understand how operator approval turns into policy with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to audit and reason about egress changes.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/network-policies.md file." - ] - }, - { - "id": "docs-reference-troubleshooting-001", - "question": "I'm troubleshooting a NemoClaw problem. Help me map my symptom to the fastest safe recovery step so I can get unstuck without making the environment worse.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user map my symptom to the fastest safe recovery step and gives enough concrete guidance, decision criteria, verification steps, or risk framing to get unstuck without making the environment worse.", - "expected_behavior": [ - "The output directly addresses the user's situation: troubleshooting a NemoClaw problem.", - "The AI coding assistant loads the expected_skill and references/troubleshooting.md", - "The output helps the user map my symptom to the fastest safe recovery step with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to get unstuck without making the environment worse.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." - ] - }, - { - "id": "docs-reference-troubleshooting-002", - "question": "I'm uncertain which subsystem failed. Help me run diagnostics that separate install, onboarding, runtime, policy, and inference issues so I can focus on the likely cause.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user run diagnostics that separate install, onboarding, runtime, policy, and inference issues and gives enough concrete guidance, decision criteria, verification steps, or risk framing to focus on the likely cause.", - "expected_behavior": [ - "The output directly addresses the user's situation: uncertain which subsystem failed.", - "The AI coding assistant loads the expected_skill and references/troubleshooting.md", - "The output helps the user run diagnostics that separate install, onboarding, runtime, policy, and inference issues with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to focus on the likely cause.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." - ] - }, - { - "id": "docs-reference-troubleshooting-003", - "question": "I'm asking the community or filing an issue. Help me collect the right logs, versions, and error details so I can give maintainers enough information to help.", - "expected_skill": "nemoclaw-user-reference", - "ground_truth": "A NemoClaw-specific answer that helps the user collect the right logs, versions, and error details and gives enough concrete guidance, decision criteria, verification steps, or risk framing to give maintainers enough information to help.", - "expected_behavior": [ - "The output directly addresses the user's situation: asking the community or filing an issue.", - "The AI coding assistant loads the expected_skill and references/troubleshooting.md", - "The output helps the user collect the right logs, versions, and error details with NemoClaw-specific guidance rather than generic advice.", - "The output gives enough concrete guidance, decision criteria, verification steps, or risk framing for the user to give maintainers enough information to help.", - "The output avoids inventing unsupported NemoClaw behavior.", - "The output follows progressive disclosure: it answers the current request without dumping unrelated details other than the expected_skill and the references/troubleshooting.md file." - ] - } -] diff --git a/skills/nemoclaw-user-reference/references/architecture.md b/skills/nemoclaw-user-reference/references/architecture.md deleted file mode 100644 index cb1d4756d21..00000000000 --- a/skills/nemoclaw-user-reference/references/architecture.md +++ /dev/null @@ -1,258 +0,0 @@ -# Architecture Details - -NemoClaw combines a host CLI, a TypeScript plugin that runs with OpenClaw inside the sandbox, and a versioned YAML blueprint that defines the sandbox image, policies, and inference profiles applied through OpenShell. - -## System Overview - -NVIDIA OpenShell is a general-purpose agent runtime. It provides sandbox containers, a credential-storing gateway, inference proxying, and policy enforcement, but has no opinions about what runs inside. NemoClaw is an opinionated reference stack built on OpenShell that handles what goes in the sandbox and makes the setup accessible. - -```mermaid -graph LR - classDef nemoclaw fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold - classDef openshell fill:#1a1a1a,stroke:#1a1a1a,color:#fff,stroke-width:2px,font-weight:bold - classDef sandbox fill:#444,stroke:#76b900,color:#fff,stroke-width:2px,font-weight:bold - classDef agent fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px - classDef external fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px - classDef user fill:#fff,stroke:#76b900,color:#1a1a1a,stroke-width:2px,font-weight:bold - - USER(["👤 User"]):::user - - subgraph EXTERNAL["External Services"] - INFERENCE["Inference Provider
NVIDIA Endpoints · OpenAI
Anthropic · Ollama · vLLM · Model Router
"]:::external - MSGAPI["Messaging Platforms
Telegram · Discord · Slack"]:::external - INTERNET["Internet
PyPI · npm · GitHub · APIs"]:::external - end - - subgraph HOST["Host Machine"] - - subgraph NEMOCLAW["NemoClaw"] - direction TB - NCLI["CLI + Onboarding
Guided setup · provider selection
credential validation · deploy
"]:::nemoclaw - BP["Blueprint
Hardened Dockerfile
Network policies · Presets
Security configuration
"]:::nemoclaw - MIGRATE["State Management
Migration snapshots
Credential stripping
Integrity verification
"]:::nemoclaw - end - - subgraph OPENSHELL["OpenShell"] - direction TB - GW["Gateway
Credential store
Inference proxy
Policy engine
Device auth
"]:::openshell - OSCLI["openshell CLI
provider · sandbox
gateway · policy
"]:::openshell - CHMSG["Channel messaging
OpenShell-managed
Telegram · Discord · Slack
"]:::openshell - - subgraph SANDBOX["Sandbox Container 🔒"] - direction TB - AGENT["Agent
OpenClaw or any
compatible agent
"]:::agent - PLUG["NemoClaw Plugin
Extends agent with
managed configuration
"]:::sandbox - end - end - end - - USER -->|"nemoclaw onboard
nemoclaw connect"| NCLI - USER -->|"Chat messages"| MSGAPI - - NCLI -->|"Orchestrates"| OSCLI - BP -->|"Defines sandbox
shape + policies"| SANDBOX - MIGRATE -->|"Safe state
transfer"| SANDBOX - - AGENT -->|"Inference requests
no credentials"| GW - GW -->|"Proxied with
credential injected"| INFERENCE - - MSGAPI -->|"Platform APIs"| CHMSG - CHMSG -->|"Deliver to agent"| AGENT - - AGENT -.->|"Policy-gated"| INTERNET - GW -.->|"Enforced by
gateway"| INTERNET -``` - -## Deployment Topology - -The logical diagram above shows how components relate. -This section shows what actually runs where on the host. -NemoClaw's default Docker-driver topology does not place the sandbox in an embedded k3s cluster. -On Linux and Apple Silicon macOS, NemoClaw starts the OpenShell Docker-driver gateway and creates the sandbox as a Docker container. -The gateway normally runs as a host process; Linux hosts that need the gateway compatibility patch may run the same gateway binary inside a small container. -In both Docker-driver modes, the sandbox is a Docker container, not a Kubernetes pod. -Legacy non-Docker-driver installs still use the k3s-based gateway path; the diagram below shows the standard Docker-driver topology. - -```mermaid -graph TB - classDef host fill:#fff,stroke:#76b900,stroke-width:2px,color:#1a1a1a,font-weight:bold - classDef cli fill:#76b900,stroke:#5a8f00,color:#fff,stroke-width:2px,font-weight:bold - classDef docker fill:#2496ed,stroke:#1577c2,color:#fff,stroke-width:2px,font-weight:bold - classDef gateway fill:#1a1a1a,stroke:#1a1a1a,color:#fff,stroke-width:2px,font-weight:bold - classDef sandbox fill:#444,stroke:#76b900,color:#fff,stroke-width:2px - classDef external fill:#f5f5f5,stroke:#e0e0e0,color:#1a1a1a,stroke-width:1px - - subgraph HOST["Host machine · Linux / Apple Silicon macOS / DGX Spark / DGX Station"] - direction TB - CLI["nemoclaw CLI
bin/nemoclaw.js → dist/
onboard · connect · status · logs
"]:::cli - GW["OpenShell gateway
host process by default
credential store · lifecycle · L7 proxy
"]:::gateway - - subgraph DOCKER["Docker daemon"] - direction TB - SANDBOX["Sandbox container 🔒
Landlock + seccomp + netns
OpenClaw agent + NemoClaw plugin
"]:::sandbox - end - end - - INFER["Inference provider
NVIDIA Endpoints · OpenAI
Anthropic · Ollama · vLLM · Model Router
"]:::external - - CLI -->|"openshell CLI
(orchestrates)"| GW - GW -->|"creates/recreates
Docker-driver sandbox"| SANDBOX - SANDBOX -->|"inference requests
placeholder credentials"| GW - GW -->|"egress with real credentials
injected at the L7 proxy"| INFER - - class HOST host - class DOCKER docker - class GW gateway - class SANDBOX sandbox -``` - -Layering from top to bottom: - -| Layer | Runs as | Role | -|---|---|---| -| Host CLI | Host process (`nemoclaw` on Node.js) | Orchestrates OpenShell via `openshell` CLI calls. | -| OpenShell gateway | Host process by default; optional Linux compatibility container when the gateway binary needs a newer host ABI | Hosts the credential store, owns sandbox lifecycle coordination, and provides the L7 proxy. | -| Docker daemon | Host service | Runs the Docker-driver sandbox container and, on affected Linux hosts, the optional gateway compatibility container. | -| Sandbox container | Docker container | Runs the OpenClaw agent and the NemoClaw plugin under Landlock + seccomp + netns. | -| OpenShell L7 proxy | Gateway process | Intercepts agent egress and rewrites `Authorization` headers (Bearer/Bot) and URL-path segments to inject the real credential at the network boundary. | - -NemoClaw never gives the sandbox a raw provider key. -At onboard time it registers credentials with OpenShell's provider/placeholder system, and the L7 proxy substitutes the real value into outbound requests at egress. -The CLI helper `isInferenceRouteReady` (in `src/lib/onboard.ts`) is a host-side readiness check used by the resume flow to decide whether the active route already covers the chosen provider and model — it is not a runtime component. - -For the DGX Spark-specific variant of this topology (cgroup v2, aarch64, unified memory), refer to the [NVIDIA Spark playbook](https://build.nvidia.com/spark/nemoclaw). - -## NemoClaw Plugin - -The plugin is a thin TypeScript package that registers an inference provider and the `/nemoclaw` slash command. -It runs in-process with the OpenClaw gateway inside the sandbox. -It also registers runtime hooks that keep the agent aware of its environment. -Before an agent turn starts, the plugin prepends a short context block with the active sandbox name, sandbox phase, network policy summary, and filesystem policy summary. -When the policy or phase changes during a session, the plugin sends a smaller update block instead of repeating the full context. - -```text -nemoclaw/ -├── src/ -│ ├── index.ts Plugin entry: registers all commands -│ ├── cli.ts Commander.js subcommand wiring -│ ├── runtime-context.ts Sandbox and policy context injection -│ ├── 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 -``` - -## NemoClaw Blueprint - -The blueprint is a versioned YAML package with its own release stream. -The runner resolves, verifies, and applies the blueprint through the OpenShell CLI. -The blueprint defines the sandbox shape, default policies, and inference profiles; the runner performs the OpenShell operations. - -```text -nemoclaw-blueprint/ -├── blueprint.yaml Manifest: version, profiles, compatibility -├── model-specific-setup/ Agent-scoped model/provider compatibility manifests -├── router/ Model Router config and routing engine -├── policies/ -│ └── openclaw-sandbox.yaml Default network + filesystem policy -``` - -The blueprint runtime (TypeScript) lives in the plugin source tree: - -```text -nemoclaw/src/blueprint/ -├── runner.ts CLI runner: plan / apply / status / rollback -├── ssrf.ts SSRF endpoint validation (IP + DNS checks) -├── snapshot.ts Migration snapshot / restore lifecycle -├── state.ts Persistent run state management -``` - -### Blueprint Lifecycle - -```mermaid -flowchart LR - A[resolve] --> B[verify digest] - B --> C[plan] - C --> D[apply] - D --> E[status] -``` - -1. Resolve. The plugin locates the blueprint artifact and checks the version against `min_openshell_version` and `min_openclaw_version` constraints in `blueprint.yaml`. -2. Verify. The plugin checks the artifact digest against the expected value. -3. Plan. The runner determines what OpenShell resources to create or update, such as the gateway, providers, sandbox, inference route, and policy. -4. Apply. The runner executes the plan by calling `openshell` CLI commands. -5. Status. The runner reports current state. - -## Sandbox Environment - -Normal NemoClaw onboarding builds from the -[`ghcr.io/nvidia/nemoclaw/sandbox-base`](https://github.com/NVIDIA/NemoClaw/pkgs/container/nemoclaw%2Fsandbox-base) -base image and layers the NemoClaw runtime Dockerfile on top. The direct blueprint -runner still carries a pinned OpenShell Community OpenClaw image for legacy -`openshell sandbox create --from` compatibility. Inside the sandbox: - -- OpenClaw runs with the NemoClaw plugin pre-installed. -- Inference calls are routed through OpenShell to the configured provider. -- Network egress is restricted by the baseline policy in `openclaw-sandbox.yaml`. -- Filesystem access is confined to `/sandbox` and `/tmp` for read-write access, with system paths read-only. -- The NemoClaw plugin injects sandbox and policy context into agent turns so the agent can report policy blocks accurately. -- The image exposes a Docker health check that probes the in-sandbox gateway, so container runtimes can report whether the agent service is responding. -- The image includes common runtime compatibility helpers such as Homebrew and a `python` to `python3` symlink for tools that still invoke `python`. - -## Inference Routing - -Inference requests from the agent never leave the sandbox directly. -OpenShell intercepts them and routes to the configured provider: - -```text -Agent (sandbox) ──▶ OpenShell gateway ──▶ NVIDIA Endpoint (build.nvidia.com) -``` - -When you select the Model Router provider, the OpenShell gateway routes to a host-side router process instead of a single upstream model. -The router selects from the configured pool, then calls the upstream NVIDIA endpoint with the credential held outside the sandbox. - -Some model and provider combinations need agent-specific compatibility setup. -NemoClaw keeps those declarations under `nemoclaw-blueprint/model-specific-setup//` so OpenClaw and Hermes fixes can be tested and reviewed independently. - -Refer to Inference Options (use the `nemoclaw-user-configure-inference` skill) for provider configuration details. - -## Provider Credential Storage - -Provider credentials live in the OpenShell gateway store, not on the host filesystem. -NemoClaw never writes them to host disk; the OpenShell L7 proxy injects values at egress. -See Credential Storage (use the `nemoclaw-user-configure-security` skill) for the inspection, rotation, and migration flow. - -## Host-Side State and Config - -NemoClaw keeps non-secret operator-facing state on the host rather than inside the sandbox. - -| Path | Purpose | -|---|---| -| `~/.nemoclaw/sandboxes.json` | Registered sandbox metadata, including the default sandbox selection. | -| `~/.openclaw/openclaw.json` | Host OpenClaw configuration that NemoClaw snapshots or restores during migration flows. | - -The following environment variables configure optional services and local access. - -| Variable | Purpose | -|---|---| -| `TELEGRAM_BOT_TOKEN` | Telegram bot token you provide before `nemoclaw onboard`. OpenShell stores it in a provider; the sandbox receives placeholders, not the raw secret. | -| `TELEGRAM_ALLOWED_IDS` | Comma-separated Telegram user or chat IDs for allowlists when onboarding applies channel restrictions. | -| `SLACK_BOT_TOKEN` | Slack bot token (`xoxb-...`) you provide before `nemoclaw onboard`. Stored as an OpenShell provider; never passed directly to the sandbox. | -| `SLACK_APP_TOKEN` | Slack app-level token (`xapp-...`) required for Socket Mode. Stored alongside `SLACK_BOT_TOKEN` during onboarding. | -| `SLACK_ALLOWED_USERS` | Comma-separated Slack member IDs for DM and channel `@mention` user allowlisting. | -| `SLACK_ALLOWED_CHANNELS` | Comma-separated Slack channel IDs where channel `@mention` events are enabled (e.g. `C012AB3CD,C987ZY6XW`). Baked into the sandbox image at build time. Combine with `SLACK_ALLOWED_USERS` to restrict both channel and member. | -| `CHAT_UI_URL` | URL for the optional chat UI endpoint. | -| `NEMOCLAW_DISABLE_DEVICE_AUTH` | Build-time-only toggle that disables gateway device pairing when set to `1` before the sandbox image is created. | - -For normal setup and reconfiguration, prefer `nemoclaw onboard` over editing these files by hand. -Do not treat `NEMOCLAW_DISABLE_DEVICE_AUTH` as a runtime setting for an already-created sandbox. diff --git a/skills/nemoclaw-user-reference/references/cli-selection-guide.md b/skills/nemoclaw-user-reference/references/cli-selection-guide.md deleted file mode 100644 index 98e9812dfd3..00000000000 --- a/skills/nemoclaw-user-reference/references/cli-selection-guide.md +++ /dev/null @@ -1,203 +0,0 @@ -# CLI Selection Guide - -NemoClaw uses two host-side CLIs. -Use `nemoclaw` for NemoClaw-managed workflows. -Use `openshell` when you need a lower-level OpenShell operation that NemoClaw intentionally exposes. - -## Rule of Thumb - -If the task changes how NemoClaw creates, rebuilds, preserves, or configures a sandbox, start with `nemoclaw`. - -If the task inspects or changes the live OpenShell gateway, TUI, raw policy, port forwarding, inference route, or sandbox file transfer, use `openshell`. - -Do not create or recreate NemoClaw-managed sandboxes directly with `openshell sandbox create` unless you intend to manage OpenShell yourself. -Run `nemoclaw onboard` afterward if you need to return to a NemoClaw-managed environment. - -## Use `nemoclaw` For NemoClaw Workflows - -Use `nemoclaw` for operations where NemoClaw adds product-specific state, safety checks, backup behavior, credential handling, or OpenClaw configuration. - -- Install, onboard, or recreate a NemoClaw sandbox: - - ```console - $ nemoclaw onboard - $ nemoclaw onboard --resume --recreate-sandbox - ``` - -- List, connect to, check, or delete NemoClaw-managed sandboxes: - - ```console - $ nemoclaw list - $ nemoclaw my-assistant connect - $ nemoclaw my-assistant status - $ nemoclaw my-assistant logs --follow - $ nemoclaw my-assistant destroy - ``` - -- Rebuild or upgrade while preserving workspace state: - - ```console - $ nemoclaw my-assistant rebuild - $ nemoclaw upgrade-sandboxes --check - ``` - -- Snapshot, restore, or mount sandbox state: - - ```console - $ nemoclaw my-assistant snapshot create --name before-change - $ nemoclaw my-assistant snapshot restore before-change - $ nemoclaw my-assistant share mount - ``` - -- Add or remove NemoClaw policy presets: - - ```console - $ nemoclaw my-assistant policy-add pypi --yes - $ nemoclaw my-assistant policy-list - $ nemoclaw my-assistant policy-remove pypi --yes - ``` - -- Manage NemoClaw messaging channels, credentials, diagnostics, and cleanup: - - ```console - $ nemoclaw my-assistant channels add slack - $ nemoclaw credentials list - $ nemoclaw credentials reset nvidia-prod - $ nemoclaw debug --sandbox my-assistant - $ nemoclaw gc --dry-run - ``` - -## Use `openshell` For OpenShell Operations - -Use `openshell` when the docs explicitly call for a live OpenShell gateway operation or when you need a lower-level view beneath the NemoClaw wrapper. - -- Open the OpenShell TUI for network approvals and live activity: - - ```console - $ openshell term - ``` - -- Manage dashboard or service port forwards: - - ```console - $ openshell forward start --background - $ openshell forward list - ``` - -- Inspect the underlying sandbox state: - - ```console - $ openshell sandbox list - $ openshell sandbox get - $ openshell logs -n 20 - $ openshell doctor check - ``` - -- Run one-off commands or move files without starting a NemoClaw chat session: - - ```console - $ openshell sandbox exec -n -- ls -la /sandbox - $ openshell sandbox upload ./local-file /sandbox/ - $ openshell sandbox download /sandbox/output ./output - ``` - -- Inspect or replace raw OpenShell policy: - - ```console - $ openshell policy get --full > live-policy.yaml - $ openshell policy update --add-endpoint api.example.com:443:read-only:rest:enforce - $ openshell policy set --policy live-policy.yaml - ``` - -`openshell policy update` merges specific endpoint and rule changes into the live sandbox policy. -`openshell policy set` replaces the live policy with the file you provide. -For normal NemoClaw network access changes, prefer `nemoclaw policy-add` so NemoClaw preserves presets and records the change for rebuilds. - -## Common Decisions - -This section covers common decisions when using the NemoClaw CLI and the OpenShell CLI. - -### First Setup or Full Recreate - -Use `nemoclaw onboard`. -It starts the OpenShell gateway when needed, registers providers, builds the OpenClaw sandbox image, applies NemoClaw policy choices, and creates the sandbox. - -Avoid running `openshell gateway start --recreate` or `openshell sandbox create` directly for NemoClaw-managed sandboxes. -Those commands do not update NemoClaw's registry, session metadata, workspace-preservation flow, or OpenClaw-specific configuration. - -### Connect to the Sandbox - -Use `nemoclaw connect` for an interactive NemoClaw sandbox shell. -It waits for readiness, handles stale SSH host keys after gateway restarts, and prints agent-specific hints. - -Use `openshell sandbox connect ` only when you intentionally want the raw OpenShell connection path. - -For a one-off command, use `openshell sandbox exec` instead of opening an interactive shell. - -```console -$ openshell sandbox exec -n my-assistant -- cat /tmp/gateway.log -``` - -### Check Health or Logs - -Use `nemoclaw status` and `nemoclaw logs` first. -They combine NemoClaw registry data, OpenShell state, OpenClaw process health, inference health, policy details, and messaging-channel warnings. - -Use `openshell sandbox list`, `openshell sandbox get`, `openshell logs -n 20`, or `openshell doctor check` when debugging lower-level OpenShell behavior. -When using `openshell logs` directly, `-n ` controls the line count; use `--tail` only when you want live OpenShell log streaming. - -### Approve Blocked Network Requests - -Use `openshell term`. -The OpenShell TUI owns live network activity and operator approval prompts. - -Approved endpoints are session-scoped unless you also add them to the policy through a NemoClaw preset or raw OpenShell policy update. - -### Change Models or Providers - -Use the NemoClaw commands for model or provider inspection and switches so the OpenShell route and the running agent config stay consistent: - -```console -$ nemoclaw inference get -$ nemoclaw inference set --provider nvidia-prod --model nvidia/nemotron-3-super-120b-a12b -``` - -For Hermes sandboxes, use the alias; it updates the route and `/sandbox/.hermes/config.yaml` without a rebuild or restart: - -```console -$ nemohermes inference set --provider hermes-provider --model openai/gpt-5.4-mini -``` - -For a build-time agent setting change, rerun onboarding so the sandbox configuration is recreated consistently: - -```console -$ nemoclaw onboard --resume --recreate-sandbox -``` - -Verify either path with: - -```console -$ nemoclaw status -``` - -### Update Network Policy - -Use `nemoclaw policy-add` or `policy-remove` for NemoClaw presets and custom preset files. -NemoClaw merges the new policy with the live policy and reapplies presets during rebuilds. - -Use `openshell policy update` for precise live endpoint or REST rule changes. -Use `openshell policy get --full` and `openshell policy set` only when you need to edit and replace the raw policy file. - -### Move Workspace Files - -Use `nemoclaw snapshot create`, `snapshot restore`, or `share mount` for normal workspace preservation and editing. - -Use `openshell sandbox upload` and `openshell sandbox download` for manual file copies when you need exact control over source and destination paths. - -## Related Topics - -- [Commands](commands.md) for the full NemoClaw command reference. -- Manage Sandbox Lifecycle (use the `nemoclaw-user-manage-sandboxes` skill) for day-two operations. -- Switch Inference Models (use the `nemoclaw-user-configure-inference` skill) for inference route examples. -- Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for persistent network access changes. -- Approve or Deny Network Requests (use the `nemoclaw-user-manage-policy` skill) for the OpenShell TUI approval flow. diff --git a/skills/nemoclaw-user-reference/references/commands.md b/skills/nemoclaw-user-reference/references/commands.md deleted file mode 100644 index ec171a20351..00000000000 --- a/skills/nemoclaw-user-reference/references/commands.md +++ /dev/null @@ -1,1379 +0,0 @@ -# NemoClaw CLI Commands Reference - -The `nemoclaw` CLI is the primary interface for managing NemoClaw sandboxes. -It is installed automatically by the installer (`curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash`). -For guidance on when to use `nemoclaw` versus the underlying `openshell` CLI, see [CLI Selection Guide](cli-selection-guide.md). - -## `/nemoclaw` Slash Command - -The `/nemoclaw` slash command is available inside the OpenClaw chat interface for quick actions: - -| Subcommand | Description | -|---|---| -| `/nemoclaw` | Show slash-command help and host CLI pointers | -| `/nemoclaw status` | Show sandbox and inference state | -| `/nemoclaw onboard` | Show onboarding status and reconfiguration guidance | -| `/nemoclaw eject` | Show rollback instructions for returning to the host installation | - -## Standalone Host Commands - -The `nemoclaw` binary handles host-side operations that run outside the OpenClaw plugin context. - -### `nemoclaw help`, `nemoclaw --help`, `nemoclaw -h` - -Show the top-level usage summary and command groups. -Running `nemoclaw` with no arguments shows the same help output. - -```console -$ nemoclaw help -``` - -### `nemoclaw --version`, `nemoclaw -v` - -Print the installed NemoClaw CLI version. - -```console -$ nemoclaw --version -``` - -### `nemoclaw resources` - -Display host hardware inventory and configured sandbox resource profiles. -Use `--json` for machine-readable CPU, memory, GPU, Kubernetes allocatable-capacity, and profile data. - -```console -$ nemoclaw resources [--json] -``` - -If the gateway is not running, Kubernetes allocatable fields are omitted and host CPU/RAM totals are still shown. - -### `nemoclaw onboard` - -Run the interactive setup wizard (recommended for new installs). -The wizard creates an OpenShell gateway, registers inference providers, builds the sandbox image, and creates the sandbox. -Use this command for new installs and for recreating a sandbox after changes to policy or configuration. - -```console -$ nemoclaw onboard [--non-interactive] [--resume | --fresh] [--recreate-sandbox] [--gpu | --no-gpu] [--from ] [--name ] [--sandbox-gpu | --no-sandbox-gpu] [--sandbox-gpu-device ] [--agent ] [--control-ui-port ] [--yes | -y] [--no-ollama-autostart] [--yes-i-accept-third-party-software] -``` - -**Warning:** - -For NemoClaw-managed environments, use `nemoclaw onboard` when you need to create or recreate the OpenShell gateway or sandbox. -Avoid `openshell self-update`, `npm update -g openshell`, `openshell gateway start --recreate`, or `openshell sandbox create` directly unless you intend to manage OpenShell separately and then rerun `nemoclaw onboard`. - -The installer detects existing sandbox sessions before onboarding and prints a warning if any are found. -To make the installer abort instead of continuing, set `NEMOCLAW_SINGLE_SESSION=1`: - -```console -$ NEMOCLAW_SINGLE_SESSION=1 curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -``` - -When existing sandboxes were created with OpenShell earlier than `0.0.37`, the installer prompts before running the new automatic gateway upgrade path. -For scripted installs, set `NEMOCLAW_ACCEPT_EXPERIMENTAL_OPENSHELL_UPGRADE=1` to allow the installer to back up registered sandbox state, retire the old gateway, install the current supported OpenShell release, and restore state during onboarding. -The automatic path is disabled if the existing `nemoclaw` CLI does not advertise `backup-all`; preserve sandbox state manually before retiring the old gateway in that case. -To perform those steps manually, run `nemoclaw backup-all`, retire the old gateway with `openshell gateway destroy -g nemoclaw || openshell gateway destroy`, then rerun the installer as `curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_OPENSHELL_UPGRADE_PREPARED=1 bash`. - -The wizard prompts for a provider first, then collects the provider credential if needed. -Supported non-experimental choices include NVIDIA Endpoints, OpenAI, Anthropic, Google Gemini, and compatible OpenAI or Anthropic endpoints. -Credentials are registered with the OpenShell gateway and never persisted to host disk. See Credential Storage (use the `nemoclaw-user-configure-security` skill) for details on inspection, rotation, and migration from earlier releases. -The legacy `nemoclaw setup` command is deprecated; use `nemoclaw onboard` instead. - -After provider selection, the wizard prompts for a **policy tier** that controls the default set of network policy presets applied to the sandbox. -Three tiers are available: - -| Tier | Description | -|------|-------------| -| Restricted | Base sandbox only. No third-party network access beyond inference and core agent tooling. | -| Balanced (default) | Full dev tooling and web search when the active agent supports web search. Package installs, model downloads, and inference. No messaging platform access. | -| Open | Broad access across third-party services including messaging and productivity. Agent-specific unsupported presets are filtered out. | - -After selecting a tier, the wizard shows a combined preset and access-mode screen where you can include or exclude individual presets and toggle each between read and read-write access. -For details on tiers and the presets each includes, see [Network Policies](network-policies.md#policy-tiers). - -In non-interactive mode, set the tier with `NEMOCLAW_POLICY_TIER` (default: `balanced`): - -```console -$ NEMOCLAW_POLICY_TIER=restricted nemoclaw onboard --non-interactive --yes-i-accept-third-party-software -``` - -`NEMOCLAW_POLICY_MODE` controls how non-interactive onboarding reconciles the tier-derived suggestions against the sandbox's currently-applied presets. -The default is `suggested`, which is *additive*. -Onboarding applies tier defaults and preserves any presets you previously added with [`nemoclaw policy-add`](#nemoclaw-name-policy-add) across re-onboards. -Use `custom` with `NEMOCLAW_POLICY_PRESETS` when you want the explicit list to be authoritative. -Onboarding removes any preset that is not in the list. -`skip` leaves the applied set untouched and does not apply tier defaults. -NemoClaw filters tier suggestions and resume selections by active agent support, so unsupported presets such as Brave Search are not reapplied to agents that do not support them. - -| Value | Behaviour | -|-------|-----------| -| `suggested` (default) | Apply tier defaults and preserve any extra presets already applied. Aliases: `default`, `auto`. | -| `custom` | Apply exactly `NEMOCLAW_POLICY_PRESETS`. Previously-applied presets not in the list are removed. Alias: `list`. | -| `skip` | Skip the policy step entirely. Aliases: `none`, `no`. | - -If you enable Brave Search during onboarding, NemoClaw registers a Brave Search OpenShell provider and keeps `openclaw.json` on an OpenShell credential placeholder. -At egress, OpenShell rewrites Brave's `X-Subscription-Token` header with the real `BRAVE_API_KEY`. -Treat Brave Search as an explicit opt-in and use a dedicated low-privilege Brave key. - -For non-interactive onboarding, you must explicitly accept the third-party software notice: - -```console -$ nemoclaw onboard --non-interactive --yes-i-accept-third-party-software -``` - -or: - -```console -$ NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 nemoclaw onboard --non-interactive -``` - -For scripted installer runs, pass explicit acceptance to the `bash` side of the installer pipe: - -```console -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_NON_INTERACTIVE=1 NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 bash -``` - -If the installer cannot prompt for the notice in a terminal and no explicit acceptance is set, it exits before installing Node.js or the NemoClaw CLI. - -To enable Brave Search in non-interactive mode, set: - -```console -$ BRAVE_API_KEY=... \ - nemoclaw onboard --non-interactive -``` - -`BRAVE_API_KEY` enables Brave Search in non-interactive mode and also enables `web_fetch`. -If Brave Search key validation fails in non-interactive mode, onboarding prints a warning, skips web search setup, and continues with the rest of the sandbox setup. -After fixing the key, re-enable web search with `nemoclaw config web-search`. - -The wizard prompts for a sandbox name. -Names must be 1 to 63 characters, lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. -Uppercase letters are automatically lowercased. -Names that match global CLI commands (`status`, `list`, `debug`, etc.) are rejected to avoid routing conflicts. -Use `--agent ` to target a specific installed agent profile during onboarding. - -Use `--control-ui-port ` to choose the host dashboard port for a sandbox. -The value must be an integer from `1024` through `65535`. -This flag takes precedence over `CHAT_UI_URL`, `NEMOCLAW_DASHBOARD_PORT`, the previous registry value, and the default port. - -If you enable Slack during onboarding, the wizard collects both the Bot Token (`SLACK_BOT_TOKEN`) and the App-Level Token (`SLACK_APP_TOKEN`). -Socket Mode requires both tokens. -The app-level token is stored in a dedicated `slack-app` OpenShell provider and forwarded to the sandbox alongside the bot token. -The wizard also accepts optional `SLACK_ALLOWED_USERS` and `SLACK_ALLOWED_CHANNELS` values so you can restrict Slack DMs, channel `@mention` users, and channel IDs before the sandbox image is built. - -If you enable Discord during onboarding, the wizard can also prompt for a Discord Server ID, whether the bot should reply only to `@mentions` or to all messages in that server, and an optional Discord User ID. -NemoClaw bakes those values into the sandbox image as Discord guild workspace config so the bot can respond in the selected server, not just in DMs. -If you leave the Discord User ID blank, the guild config omits the user allowlist and any member of the configured server can message the bot. -Guild responses remain mention-gated by default unless you opt into all-message replies. - -If you enable Telegram during onboarding, the wizard can also prompt for whether group chats should reply only to `@mentions` or to all group messages. -Set `TELEGRAM_REQUIRE_MENTION=1` for non-interactive onboarding when you want mention-only group replies. -Pairing and `TELEGRAM_ALLOWED_IDS` still govern direct messages. - -If you run onboarding again with the same sandbox name and choose a different inference provider or model, NemoClaw detects the drift and recreates the sandbox so the running OpenClaw UI matches your selection. -In interactive mode, the wizard asks for confirmation before delete and recreate. -In non-interactive mode, NemoClaw recreates automatically when the stored selection is readable and differs; if NemoClaw cannot read the stored selection, NemoClaw reuses by default. -Set `NEMOCLAW_RECREATE_SANDBOX=1` to force recreation even when no drift is detected. - -Before deleting an existing sandbox during recreation, NemoClaw backs up the workspace state (agents, extensions, workspace, skills, hooks, identity, devices, canvas, cron, memory, telegram, wechat, credentials) and restores it into the new sandbox once it is live. -This applies whether the existing sandbox is ready or marked not-ready, so cross-version upgrades that pass `NEMOCLAW_RECREATE_SANDBOX=1` no longer drop user files under `/sandbox/.openclaw/workspace/`. -The behaviour matches `nemoclaw rebuild --force`. -NemoClaw aborts the recreate when the backup cannot complete in full — including when individual state directories or files fail mid-backup — so failed entries are not silently dropped on delete. -Set `NEMOCLAW_RECREATE_WITHOUT_BACKUP=1` to skip the pre-recreate backup. -The destination sandbox starts with a fresh workspace. - -Before creating the gateway, the wizard runs preflight checks. -It verifies that Docker is reachable, warns on untested runtimes such as Podman, and prints host remediation guidance when prerequisites are missing. -The preflight also enforces the OpenShell version range declared in the blueprint (`min_openshell_version` and `max_openshell_version`). -If the installed OpenShell version falls outside this range, onboarding exits with an actionable error and a link to compatible releases. -For fresh OpenShell installs, NemoClaw queries published OpenShell releases and asks the installer to use a release that fits the blueprint range. -If release metadata is unavailable, the installer uses its bundled fallback pin and the post-install version gate still enforces the range. - -When NemoClaw finds an existing gateway to reuse, it probes the host gateway HTTP endpoint before declaring the gateway reusable. -If the container is running but the upstream is still warming up (for example, immediately after a Docker daemon restart), NemoClaw rebuilds the gateway instead of trusting stale metadata. -On the Docker-driver gateway path, preflight stays read-only when it detects a stale gateway (for example, a Docker-driver runtime env hash drift). -It prints a `⚠ Gateway will be recreated when sandbox creation starts` notice and defers the actual teardown to step `[2/8] Starting OpenShell gateway`. -This means pressing `Ctrl+C` between preflight and step `[2/8]` leaves the running gateway and existing sandbox containers untouched, so `nemoclaw onboard` is safe to run just to check preflight output. -For Linux Docker-driver gateways, onboarding also checks that a helper container on the OpenShell Docker network can reach `host.openshell.internal:`. -If a host firewall blocks that sandbox path, onboarding exits with a `sudo ufw allow from to any port proto tcp` command before it reports the gateway healthy. -Tune the wait via `NEMOCLAW_REUSE_HEALTH_POLL_COUNT` (default `6`) and `NEMOCLAW_REUSE_HEALTH_POLL_INTERVAL` (default `5` seconds). -The poll count is clamped to a minimum of `1` so the probe always runs at least once, and the interval is clamped to a minimum of `0` (no sleep between attempts). - -#### `--from ` - -Build the sandbox image from a custom Dockerfile instead of the stock NemoClaw image. -The entire parent directory of the specified file is used as the Docker build context, so any files your Dockerfile references (scripts, config, etc.) must live alongside it. -Onboarding skips common large directories (`node_modules`, `.git`, `.venv`, and `__pycache__`) while staging this context. -It also skips credential-style files and directories such as `.env*`, `.ssh/`, `.aws/`, `.netrc`, `.npmrc`, `secrets/`, `*.pem`, and `*.key`. -Other build outputs such as `dist/`, `target/`, or `build/` are still included. -If the staged context is larger than 100 MB, onboarding prints a warning before the Docker build starts. -If the directory contains unreadable files (for example, Windows system files visible in WSL), onboarding exits with an error suggesting you move the Dockerfile to a dedicated directory. - -```console -$ nemoclaw onboard --from path/to/Dockerfile -``` - -The Dockerfile path must exist. -Missing paths fail during command parsing before preflight, gateway setup, inference setup, or sandbox creation starts. - -The file can have any name; if it is not already named `Dockerfile`, onboard copies it to `Dockerfile` inside the staged build context automatically. -To create an isolated build context, create a dedicated directory that contains only the Dockerfile and the files it needs: - -```text -build-dir/ -├── Dockerfile -└── files-used-by-COPY/ -``` - -All NemoClaw build arguments (`NEMOCLAW_MODEL`, `NEMOCLAW_PROVIDER_KEY`, `NEMOCLAW_INFERENCE_BASE_URL`, etc.) are injected as `ARG` overrides at build time, so declare them in your Dockerfile if you need to reference them. - -In non-interactive mode, the path can also be supplied via the `NEMOCLAW_FROM_DOCKERFILE` environment variable. -You must also supply a sandbox name via `--name ` or `NEMOCLAW_SANDBOX_NAME` so a `--from` build cannot silently clobber the default `my-assistant` sandbox. - -```console -$ NEMOCLAW_NON_INTERACTIVE=1 NEMOCLAW_FROM_DOCKERFILE=path/to/Dockerfile NEMOCLAW_SANDBOX_NAME=my-build nemoclaw onboard -``` - -If a `--resume` is attempted with a different `--from` path than the original session, onboarding exits with a conflict error rather than silently building from the wrong image. - -#### `--name ` - -Set the sandbox name without going through the interactive prompt. -The same name format and reserved-name rules that the wizard enforces apply here too. Names must be 1 to 63 characters, lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. -Names that match a NemoClaw CLI command (`status`, `list`, `debug`, etc.) are rejected up front. - -```console -$ nemoclaw onboard --non-interactive --name my-build --from path/to/Dockerfile -``` - -The flag wins over `NEMOCLAW_SANDBOX_NAME`. -When prompting is possible, `NEMOCLAW_SANDBOX_NAME` fills the interactive default so you can press Enter to accept it. -When prompting is impossible (no TTY or `--non-interactive`), the env var is also honoured so existing CI scripts keep working. -Combining `--from ` with non-interactive onboarding requires one of `--name` or `NEMOCLAW_SANDBOX_NAME`; otherwise onboarding exits rather than silently defaulting to `my-assistant` and clobbering the default sandbox. - -### `nemoclaw onboard --from` - -Use a custom Dockerfile for the sandbox image. -This variant of `nemoclaw onboard` accepts a `--from ` argument to build the sandbox from a user-supplied Dockerfile instead of the default NemoClaw image. - -```console -$ nemoclaw onboard --from ./Dockerfile.custom -``` - -### GPU passthrough - -When `nemoclaw onboard` detects an NVIDIA GPU on the host (`nvidia-smi` succeeds), it enables OpenShell GPU passthrough at both the gateway and sandbox level by default. -Use `--no-gpu` to opt out when you want host-side inference providers only and do not need direct GPU access inside the sandbox. -Use `--gpu` to require GPU passthrough and fail fast if an NVIDIA GPU is not detected. -Use `--sandbox-gpu` or `--no-sandbox-gpu` to control only direct NVIDIA GPU access inside the sandbox. -Use `--sandbox-gpu --sandbox-gpu-device ` to pass a specific OpenShell GPU device selector to `openshell sandbox create`; device selectors require explicit sandbox GPU enablement. -On Linux Docker-driver gateways, NemoClaw can create the sandbox first and then recreate the OpenShell-managed Docker container with NVIDIA GPU access when that compatibility path is needed. -If the patch fails, onboarding keeps diagnostics and prints a manual cleanup command rather than deleting the failed sandbox automatically. - -Prerequisites: - -- NVIDIA GPU drivers installed and working (`nvidia-smi` must succeed). -- NVIDIA Container Toolkit configured for Docker. - -When GPU passthrough is enabled and a gateway already exists without it, onboarding first checks whether replacing the CPU-only gateway is safe. -If no other registered sandbox depends on that gateway, or if `--recreate-sandbox` is recreating the only registered sandbox with the same name, onboarding cleans up the stale gateway and continues. -If other sandboxes depend on the gateway or Docker state is unclear, onboarding exits without cleanup and prints targeted destroy or gateway-removal guidance. -To add GPU to an existing sandbox, rerun with `--recreate-sandbox`. -Set `NEMOCLAW_DOCKER_GPU_PATCH=0` only when you need to bypass the Linux Docker-driver compatibility patch during troubleshooting. - -### `nemoclaw list` - -List all registered sandboxes with their model, provider, and policy presets. -Pass `--json` for machine-readable output that includes a `schemaVersion`, the default sandbox, recovery metadata, and the sandbox inventory. -Sandboxes with an active SSH session are marked with a `●` indicator so you can tell at a glance which sandbox you are already connected to in another terminal. -When a sandbox has a recorded dashboard port, the output includes its local dashboard URL. - -```console -$ nemoclaw list [--json] -$ nemoclaw list --json -``` - -### `nemoclaw deploy` - -**Warning:** - -The `nemoclaw deploy` command is deprecated. -Prefer provisioning the remote host separately, then running the standard NemoClaw installer and `nemoclaw onboard` on that host. - -Deploy NemoClaw to a remote GPU instance through [Brev](https://brev.nvidia.com). -This command remains as a compatibility wrapper for the older Brev-specific bootstrap flow. -The Brev instance name is the positional argument. -The sandbox name comes from `NEMOCLAW_SANDBOX_NAME` and defaults to `my-assistant`; invalid sandbox names fail before Brev provisioning starts. - -```console -$ nemoclaw deploy -``` - -### `nemoclaw connect` - -Connect to a sandbox by name. -If the sandbox is not yet in the `Ready` phase, `connect` polls `openshell sandbox list` every few seconds and prints the current phase. This gives you progress output right after onboarding, when the 2.4 GB image is still pulling, instead of a silent hang. -Control the wait budget with `NEMOCLAW_CONNECT_TIMEOUT` (integer seconds, default `120`). When the deadline expires, `connect` exits non-zero with the last-seen phase. - -On a TTY, a one-shot hint prints before dropping into the sandbox shell. -The hint is agent-aware. It names the correct TUI command for the sandbox's agent and reminds you to use `/exit` to leave the chat before `exit` returns you to the host shell. -Set `NEMOCLAW_NO_CONNECT_HINT=1` to suppress the hint in scripted workflows. -If the sandbox is running an outdated agent version, a non-blocking warning prints before connecting with a `nemoclaw rebuild` hint. -If another terminal is already connected to the sandbox, `connect` prints a note with the number of existing sessions before proceeding. Multiple concurrent sessions are allowed. - -After a host reboot, the OpenShell gateway rotates its SSH host keys. -`connect` detects the resulting identity drift, prunes stale `openshell-*` entries from `~/.ssh/known_hosts`, and retries automatically. -You no longer need to re-run `nemoclaw onboard` after a reboot in this case. - -```console -$ nemoclaw my-assistant connect [--probe-only] -``` - -The `--probe-only` flag verifies the sandbox is reachable over SSH and exits without opening a shell. -Use it for health checks and scripted readiness probes. - -### `nemoclaw exec` - -Run a single command non-interactively in a running sandbox via the OpenShell exec endpoint. -The command runs as the sandbox user with `HOME=/sandbox`, so in-sandbox tooling resolves NemoClaw-provisioned config under `/sandbox/.openclaw` the same way it does for `connect` and `openshell sandbox connect`. -This is the supported substitute for `docker exec` on the sandbox container; raw `docker exec` runs as root and lands on `HOME=/root`, where the agent config is not present and `openclaw agent` falls back to its built-in defaults. - -```console -$ nemoclaw my-assistant exec -- openclaw agent -m "What is 2+2?" -$ nemoclaw my-assistant exec --workdir /sandbox/workspace -- ls -la -``` - -Everything after `--` is forwarded verbatim to the sandbox command, including flags the inner command needs. -The exit code is the remote command's exit code. - -| Flag | Description | -|------|-------------| -| `--workdir

` | Working directory inside the sandbox | -| `--tty` / `--no-tty` | Allocate a pseudo-terminal; defaults to auto-detection (on when stdin and stdout are terminals) | -| `--timeout ` | Timeout in seconds (`0` means no timeout) | - -### `nemoclaw recover` - -Restart the in-sandbox gateway and re-establish the host-side dashboard port-forward without opening an SSH session. -Use this after a sandbox pod restart, a sandbox crash, or whenever `nemoclaw status` reports the gateway is not running but the sandbox is alive. - -`recover` runs the same recovery the `connect` command performs as a side effect, but without dropping into a shell, so it is safe to call from scripts and automation. -It is idempotent. -If the gateway is already running, the command exits zero with a probe message and makes no changes. - -```console -$ nemoclaw my-assistant recover -``` - -### `nemoclaw status` - -Show sandbox status, health, and inference configuration. - -The command probes every inference provider and reports one of three states on the `Inference` line: - -| State | Meaning | -|-------|---------| -| `healthy` | The provider endpoint returned a reachable response. | -| `unreachable` | The probe failed. The output includes the endpoint URL and a remediation hint. | -| `not probed` | The endpoint URL is not known (for example, `compatible-*` providers). | -| `not verified` | NemoClaw could not verify the sandbox or gateway state, so it skips inference probing. | - -Local providers (Ollama, vLLM) probe the host-side health endpoint. -Remote providers (NVIDIA Endpoints, OpenAI, Anthropic, Gemini) use a lightweight reachability check; any HTTP response, including `401` or `403`, counts as reachable. -No API keys are sent. - -For Local Ollama, the command also probes the authenticated proxy and prints an `Inference (auth proxy)` line when a proxy token is available. -Use that line to distinguish a healthy backend from a broken proxy path that the sandbox uses for inference. - -For cloud-only providers, the output omits the NIM status line unless a NIM container is registered or an unexpected NIM container is running. - -If the sandbox or gateway cannot be verified, the command exits non-zero instead of reporting healthy inference from stale registry state. -Gateway and dashboard health checks treat HTTP `401` from device auth as a live service, not as an offline gateway. - -A `Connected` line reports whether the sandbox has any active SSH sessions and, if so, how many. -The sandbox list in the status output includes the dashboard port suffix for sandboxes with a recorded dashboard port. - -The Policy section displays the live enforced policy (fetched via `openshell policy get --full`), which reflects presets added or removed after sandbox creation. -When OpenShell reports an active policy version, the displayed YAML `version` line uses that active version instead of the static schema version. -If the sandbox is running an outdated agent version, the output includes an `Update` line with the available version and a `nemoclaw rebuild` hint. - -When other sandboxes have the same messaging channel enabled (Telegram, Discord, or Slack) with the same bot token, the output includes a cross-sandbox overlap warning so you can resolve the conflict before messages start dropping. -The command also tails `/tmp/gateway.log` inside the default sandbox and flags Telegram `409 Conflict` errors that indicate a duplicate consumer for the bot token. - -```console -$ nemoclaw my-assistant status -``` - -#### Checking the OpenClaw version - -NemoClaw pins the OpenClaw version inside the sandbox at build time, not at runtime. -The NemoClaw runtime build target is declared by `OPENCLAW_VERSION` in the NemoClaw Dockerfiles. -The `min_openclaw_version` field in `nemoclaw-blueprint/blueprint.yaml` remains the compatibility floor for direct blueprint consumers, so it can be lower than the Dockerfile target. -Existing sandboxes do not auto-upgrade when a newer NemoClaw release ships a newer pin — you upgrade by rebuilding the sandbox. - -`nemoclaw status` prints the running OpenClaw version on the `Agent` line: - -```console -$ nemoclaw my-assistant status -... - Agent: OpenClaw v2026.5.22 -... -``` - -If the sandbox is running an OpenClaw older than the version this NemoClaw release pins, `status` and `connect` add an `Update` line pointing at `nemoclaw rebuild` to pick up the newer version. -The rebuild reuses the existing sandbox name and persisted credentials, so messaging tokens and provider keys carry over. - -### `nemoclaw doctor` - -Run a focused health check for one sandbox and the host services it depends on. -The command checks the local CLI build, Docker daemon, OpenShell CLI, NemoClaw gateway container, gateway port mapping, live sandbox state, inference route, provider reachability, messaging channel conflicts, Ollama reachability, and the cloudflared tunnel state. - -Warnings do not make the command fail. -Failed checks exit non-zero so scripts can use `doctor` as a readiness gate. -Use `--json` for machine-readable output. - -```console -$ nemoclaw my-assistant doctor [--json] -``` - -### `nemoclaw logs` - -View sandbox logs. -Use `--follow` to stream output in real time. -Use `--tail ` or `-n ` to limit the number of returned lines. -Use `--since ` to show recent logs only, such as `5m`, `1h`, or `30s`. -The command reads both OpenClaw gateway output and OpenShell audit events, so policy denials appear alongside the gateway log stream. -If one log source is unavailable, NemoClaw prints a warning and keeps reading the remaining source. -NemoClaw's `--tail ` flag is a line-count flag; the lower-level `openshell logs --tail` flag means follow live output, so use `openshell logs -n ` when running OpenShell directly for a fixed line count. - -```console -$ nemoclaw my-assistant logs [--follow] [--tail |-n ] [--since ] -``` - -### `nemoclaw dashboard-url` - -Print the authenticated OpenClaw dashboard URL for a running sandbox. -Use this when you are on a remote machine, using an SSH or reverse tunnel, or need a complete URL for a browser session. - -```console -$ nemoclaw my-assistant dashboard-url -$ nemoclaw my-assistant dashboard-url --quiet -``` - -The default output includes a label and a warning. -Pass `--quiet` or `-q` to print only the URL to stdout so scripts can capture it: - -```console -$ URL=$(nemoclaw my-assistant dashboard-url --quiet) -``` - -**Warning:** - -Treat the authenticated dashboard URL like a password. -Do not log it, share it, or commit it to version control. - -### `nemoclaw gateway-token` - -Print the OpenClaw gateway auth token for a running sandbox to stdout. -The token is required by `openclaw tui` and the OpenClaw dashboard URL. -Use `dashboard-url` for browser access; use `gateway-token` only when automation needs the raw token. -Pipe it into automation or capture it into an environment variable: - -```console -$ TOKEN=$(nemoclaw my-assistant gateway-token --quiet) -$ export OPENCLAW_GATEWAY_TOKEN="$TOKEN" -``` - -The token is written to stdout with no surrounding text. -A one-line security warning is written to stderr; pass `--quiet` (or `-q`) to suppress it. -The command exits non-zero with a diagnostic on stderr when the sandbox is not registered or when the token cannot be retrieved (for example, if the sandbox is not running). - -**Warning:** - -Treat the gateway token like a password. -Do not log it, share it, or commit it to version control. - -### `nemoclaw destroy` - -Stop the NIM container, remove the host-side Docker image built during onboard, and delete the sandbox. -This removes the sandbox from the registry. -For Ollama-backed sandboxes, `destroy` also asks Ollama to unload currently loaded models and clears stale auth proxy state on a best-effort basis. - -**Warning:** - -This command permanently deletes the sandbox **and its persistent volume**. -All workspace files (use the `nemoclaw-user-manage-sandboxes` skill) (SOUL.md, USER.md, IDENTITY.md, AGENTS.md, MEMORY.md, and daily memory notes) are lost. -Back up your workspace first with `nemoclaw snapshot create` or see Backup and Restore (use the `nemoclaw-user-manage-sandboxes` skill). -If you want to upgrade the sandbox while preserving state, use `nemoclaw rebuild` instead. - -If another terminal has an active SSH session to the sandbox, `destroy` prints an active-session warning and requires a second confirmation before it proceeds. -Pass `--yes`, `-y`, or `--force` to skip the prompt in scripted workflows. -By default, `destroy` preserves the shared NemoClaw gateway. -Pass `--cleanup-gateway` to remove the shared gateway when destroying the last sandbox, or `--no-cleanup-gateway` to force preservation when environment defaults request cleanup. - -```console -$ nemoclaw my-assistant destroy [--yes|-y|--force] [--cleanup-gateway|--no-cleanup-gateway] -``` - -### `nemoclaw policy-add` - -Add a policy preset to a sandbox. -Presets extend the baseline network policy with additional endpoints. -Before applying, the command shows which endpoints the preset would open and prompts for confirmation. - -```console -$ nemoclaw my-assistant policy-add -``` - -To apply a specific preset without the interactive picker, pass its name as a positional argument: - -```console -$ nemoclaw my-assistant policy-add pypi --yes -``` - -The positional form is required in scripted workflows. -Set `NEMOCLAW_NON_INTERACTIVE=1` instead of `--yes` if you want the same behavior from an environment variable. -If the preset name is unknown or already applied, the command exits non-zero with a clear error. -Custom preset files are tracked with the sandbox that applied them. -`policy-list`, `policy-add`, and `policy-remove` compare the local registry and live gateway state using that sandbox-scoped preset metadata, so custom presets do not appear missing just because they are not part of the built-in preset catalog. - -| Flag | Description | -|------|-------------| -| `--from-file ` | Apply a custom preset YAML file instead of a built-in preset | -| `--from-dir ` | Apply every custom preset YAML file in a directory in lexicographic order | -| `--yes`, `--force` | Skip the confirmation prompt (requires a preset name, `--from-file`, or `--from-dir`) | -| `--dry-run` | Preview the endpoints a preset would open without applying changes | - -Use `--dry-run` to audit a preset before applying it: - -```console -$ nemoclaw my-assistant policy-add --dry-run -``` - -Apply a custom preset file when you need to grant access to an endpoint that is not covered by a built-in preset: - -```console -$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml -``` - -For batch workflows, apply all preset files from a directory: - -```console -$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes -``` - -Review every host in custom preset files before applying them. -Custom presets bypass the built-in preset review process and can widen sandbox egress. - -### `nemoclaw policy-list` - -List available policy presets and show which ones are applied to the sandbox. -The command cross-references the local registry against the live gateway state (via `openshell policy get`), so it flags presets that are applied in one place but not the other. -This catches desync caused by external edits to the gateway policy or stale registry entries after a manual rollback. - -```console -$ nemoclaw my-assistant policy-list -``` - -### `nemoclaw policy-remove` - -Remove a previously applied policy preset from a sandbox. -The command lists only the presets currently applied, prompts you to select one, shows the endpoints that would be removed, and asks for confirmation before narrowing egress. - -```console -$ nemoclaw my-assistant policy-remove -``` - -To remove a specific preset non-interactively, pass its name as a positional argument: - -```console -$ nemoclaw my-assistant policy-remove pypi --yes -``` - -Set `NEMOCLAW_NON_INTERACTIVE=1` as an alternative to `--yes`. -If the preset is unknown or not currently applied, the command exits non-zero with a clear error. - -| Flag | Description | -|------|-------------| -| `--yes`, `--force` | Skip the confirmation prompt (requires a preset name) | -| `--dry-run` | Preview which endpoints would be removed without applying changes | - -Unchecking a preset in the onboard TUI checkbox also removes it from the sandbox. - -### `nemoclaw hosts-add` - -Add a host alias to the sandbox pod template. -Use this when a sandbox needs a stable LAN-only name, such as a local SearXNG or internal model endpoint, without dropping to `docker exec` and `kubectl patch`. - -```console -$ nemoclaw my-assistant hosts-add searxng.local 192.168.1.105 -``` - -The command validates the hostname and IP address, rejects duplicate hostnames, and patches `spec.podTemplate.spec.hostAliases` on the sandbox resource. - -| Flag | Description | -|------|-------------| -| `--dry-run` | Print the JSON patch for the resulting `hostAliases` list without applying it | - -### `nemoclaw hosts-list` - -List host aliases configured on the sandbox resource. - -```console -$ nemoclaw my-assistant hosts-list -``` - -### `nemoclaw hosts-remove` - -Remove a hostname from the sandbox `hostAliases` list. - -```console -$ nemoclaw my-assistant hosts-remove searxng.local -``` - -| Flag | Description | -|------|-------------| -| `--dry-run` | Print the JSON patch for the resulting `hostAliases` list without applying it | - -### `nemoclaw channels list` - -List the messaging channels NemoClaw knows about (`telegram`, `discord`, `slack`, `wechat`, `whatsapp`) with a short description. -The command is a static reference; it does not consult credentials or the running sandbox. -WeChat and WhatsApp are experimental. - -```console -$ nemoclaw my-assistant channels list -``` - -### `nemoclaw channels add ` - -Register a messaging channel with the sandbox and rebuild so the image picks up the new channel. -Channels fall into three login modes: - -- **Token paste** (`telegram`, `discord`, `slack`): the command prompts for any missing token and registers it with the OpenShell gateway. -- **Host-side QR** (`wechat`, experimental): the command renders an iLink QR code on the host and you scan it from WeChat on your phone. - On confirm, NemoClaw captures the bot token, registers it with the OpenShell gateway, and stores non-secret per-account metadata (`WECHAT_ACCOUNT_ID`, `WECHAT_BASE_URL`, `WECHAT_USER_ID`) for the in-sandbox bridge. - NemoClaw automatically adds the scanning operator's WeChat user ID to `WECHAT_ALLOWED_IDS`. - Supply additional comma-separated IDs to authorize more DM senders. - NemoClaw advertises WeChat for both OpenClaw (the `@tencent-weixin/openclaw-weixin` plugin) and Hermes (the built-in iLink WeChat adapter). -- **In-sandbox QR** (`whatsapp`, experimental): the command records the channel without a host-side token or OpenShell credential provider. - NemoClaw advertises WhatsApp for OpenClaw and Hermes sandboxes; after rebuild, run `openclaw channels login --channel whatsapp` for OpenClaw or `hermes whatsapp` for Hermes. - This intentionally leaves QR-created mutable session state in the sandbox until you unpair it or clear the durable agent state. - -After registering the channel, NemoClaw asks whether to rebuild immediately. -Running `add` for an already-configured channel simply overwrites the stored credentials where applicable — the operation is idempotent. -Channel names are trimmed and lowercased before NemoClaw stores credentials, names bridge providers, or prints rebuild messages. -If a matching built-in network policy preset exists, NemoClaw applies it to the sandbox before the rebuild so the bridge has egress to its upstream API; if applying the preset fails, NemoClaw warns and tells you to re-apply manually with `nemoclaw policy-add `. - -```console -$ nemoclaw my-assistant channels add telegram -``` - -| Flag | Description | -|------|-------------| -| `--dry-run` | Validate the channel and token inputs without saving credentials or rebuilding | - -Slack requires both `SLACK_BOT_TOKEN` (bot user OAuth) and `SLACK_APP_TOKEN` (app-level Socket Mode token); the command prompts for each in turn. -Optional Slack allowlists come from `SLACK_ALLOWED_USERS` and `SLACK_ALLOWED_CHANNELS` at rebuild time. -When `NEMOCLAW_NON_INTERACTIVE=1` is set, any missing token fails fast and no rebuild prompt is shown — instead, the change is queued and you are told to run `nemoclaw rebuild` manually. -If you omit the required `` argument, the CLI prints the `channels add ` usage with the supported channel list instead of falling back to top-level help. - -### `nemoclaw channels remove ` - -Clear the stored credentials for a messaging channel and rebuild the sandbox so the image drops the channel. -Running `remove` for a channel that was never configured is a no-op against the credentials file and still triggers the rebuild prompt. -When the bridge provider is attached to a live sandbox, NemoClaw detaches it before deleting the provider from the OpenShell gateway. -If the matching built-in policy preset is applied, such as `telegram`, `discord`, `slack`, `wechat`, or `whatsapp`, NemoClaw also removes that preset so the upstream API is no longer allow-listed after the channel is gone. -NemoClaw also strips the channel from `session.policyPresets` so a subsequent `onboard --resume` does not re-apply the preset on the next rebuild. - -For QR-paired channels (today: WhatsApp), NemoClaw destructively clears the in-sandbox session directory before the rebuild so the `state_dirs` backup does not restore the auth blob and let the channel reconnect: - -- OpenClaw: `/sandbox/.openclaw//` (for example `/sandbox/.openclaw/whatsapp/`). -- Hermes: `/sandbox/.hermes/platforms//` (for example `/sandbox/.hermes/platforms/whatsapp/`). - -The cleanup tries `openshell sandbox exec` first and falls back to SSH if the exec wrapper does not return the success sentinel. If both transports fail (the sandbox is stopped, the gateway is down, or SSH cannot reach it) the command refuses to proceed to the rebuild and asks you to start the sandbox and re-run, so a half-removed state cannot leave stale Baileys auth files behind for the next rebuild to restore. - -```console -$ nemoclaw my-assistant channels remove telegram -``` - -| Flag | Description | -|------|-------------| -| `--dry-run` | Report the channel that would be removed without clearing credentials or rebuilding | - -As with `channels add`, `NEMOCLAW_NON_INTERACTIVE=1` skips the rebuild prompt and queues the change for a manual `nemoclaw rebuild`. -If you omit the required `` argument, the CLI prints the `channels remove ` usage with the supported channel list. - -Host-side removal is the supported path because agent channel config is baked into the container image at build time (`/sandbox/.openclaw/openclaw.json` for OpenClaw and `/sandbox/.hermes/.env` for Hermes); agent-specific channel removals inside the sandbox would modify the running config but not persist changes across rebuilds. - -### `nemoclaw channels stop ` - -Pause a single messaging bridge (`telegram`, `discord`, `slack`, `wechat`, or `whatsapp`) without clearing its credentials. -The channel is marked disabled in the per-sandbox registry, and the sandbox is rebuilt so the onboard step skips registering the bridge with the gateway. -The provider stays registered with the OpenShell gateway, so a later `channels start` brings the bridge back without re-entering tokens. - -```console -$ nemoclaw my-assistant channels stop telegram -``` - -| Flag | Description | -|------|-------------| -| `--dry-run` | Report the channel that would be disabled without updating the registry or rebuilding | - -Use `channels stop` instead of `channels remove` when you want to pause a bridge temporarily. `channels remove` is destructive to credentials; `channels stop` is not. - -### `nemoclaw channels start ` - -Re-enable a channel previously paused with `channels stop`. The channel is removed from the disabled list, the sandbox is rebuilt, and the bridge registers with the gateway again using the stored credentials. - -```console -$ nemoclaw my-assistant channels start telegram -``` - -| Flag | Description | -|------|-------------| -| `--dry-run` | Report the channel that would be re-enabled without updating the registry or rebuilding | - -### `nemoclaw skill install ` - -Deploy a skill directory to a running sandbox. -The command validates the `SKILL.md` frontmatter (a `name` field is required), uploads all non-dot files preserving subdirectory structure, and performs agent-specific post-install steps. - -```console -$ nemoclaw my-assistant skill install ./my-skill/ -``` - -The skill directory must contain a `SKILL.md` file with YAML frontmatter that includes a `name` field. -Skill names must contain only alphanumeric characters, dots, hyphens, and underscores. -OpenClaw plugins are a different kind of extension. To install an OpenClaw plugin, see Install OpenClaw Plugins (use the `nemoclaw-user-deploy-remote` skill). -Run `nemoclaw skill install --help` to print usage for this subcommand. -If you pass a plugin-shaped directory to `skill install`, the CLI prints a plugin-specific hint instead of treating it as a missing skill file. - -Files with names starting with `.` (dotfiles) are skipped and listed in the output. -Files with unsafe path characters are rejected to prevent shell injection. - -If the skill already exists on the sandbox, the command updates it in place and preserves chat history. -For new installs, the agent session index is refreshed so the agent discovers the skill on the next session. - -### `nemoclaw rebuild` - -Upgrade a sandbox to the current agent version while preserving workspace state. -The command backs up workspace state, destroys the old sandbox (including its host-side Docker image), recreates it with the current image via `onboard --resume`, and restores workspace state into the new sandbox. -Credentials are stripped from backups before storage. -Policy presets applied to the old sandbox are reapplied to the new one so your egress rules survive the rebuild. - -```console -$ nemoclaw my-assistant rebuild [--yes|-y|--force] [--verbose|-v] -``` - -| Flag | Description | -|------|-------------| -| `--yes`, `-y`, `--force` | Skip the confirmation prompt | -| `--verbose`, `-v` | Log SSH commands, exit codes, and session state (also enabled by `NEMOCLAW_REBUILD_VERBOSE=1`) | - -If another terminal has an active SSH session to the sandbox, `rebuild` prints an active-session warning and requires confirmation before destroying the sandbox. -Pass `--yes`, `-y`, or `--force` to skip the prompt in scripted workflows. - -The sandbox must be running for the backup step to succeed. -If an archive command reports partial output while still producing usable data, `rebuild` keeps the captured backup entries and reports only the manifest-defined paths that could not be archived. -If any required state path still cannot be backed up, `rebuild` exits before destroying the original sandbox. -After restore, the command runs `openclaw doctor --fix` for cross-version structure repair. - -### `nemoclaw update` - -Check for a NemoClaw CLI update and, when requested, run the maintained installer flow. -This command is a discoverable CLI wrapper around the supported installer path: - -```console -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -``` - -```console -$ nemoclaw update [--check] [--yes|-y] -``` - -| Flag | Description | -|------|-------------| -| `--check` | Show the current version, latest maintained version, install type, and maintained update command without changing anything | -| `--yes`, `-y` | Skip the confirmation prompt and run the maintained installer flow | - -`nemoclaw update` updates the host-side NemoClaw installation. -It does not replace `nemoclaw upgrade-sandboxes`; use that command to inspect or rebuild existing sandboxes after the CLI has been updated. -When the command is running from a source checkout, it reports that state and does not replace the checkout with a global package install. - -### `nemoclaw upgrade-sandboxes` - -Rebuild sandboxes whose base image is older than the one currently pinned by NemoClaw. -NemoClaw resolves the digest of `ghcr.io/nvidia/nemoclaw/sandbox-base:latest` from the registry, then compares it against the digest each sandbox was created with. -Sandboxes that match the current digest are left alone. - -```console -$ nemoclaw upgrade-sandboxes [--check] [--auto] [--yes|-y] -``` - -| Flag | Description | -|------|-------------| -| `--check` | List stale sandboxes without rebuilding any of them. Exits non-zero if any are stale. | -| `--auto` | Rebuild every stale sandbox without prompting. Used by the installer to upgrade in place. | -| `--yes`, `-y` | Skip the confirmation prompt for the rebuild plan. | - -Each rebuild reuses the same workspace backup-and-restore flow as `nemoclaw rebuild`, so workspace files survive the upgrade. -If the registry is unreachable (offline or firewalled hosts), NemoClaw falls back to the unpinned `:latest` tag and reports that the digest could not be resolved instead of failing. - -### `nemoclaw backup-all` - -Back up all registered running sandboxes to `~/.nemoclaw/rebuild-backups/`. -Sandboxes that are not running are skipped. - -```console -$ nemoclaw backup-all -``` - -The installer calls `backup-all` automatically before onboarding to protect against data loss during OpenShell upgrades. - -### `nemoclaw snapshot create` - -Create a timestamped snapshot of sandbox state. -Snapshots are stored in `~/.nemoclaw/rebuild-backups//`. - -```console -$ nemoclaw my-assistant snapshot create -``` - -| Flag | Description | -|------|-------------| -| `--name - -## Policy Tiers - -During onboarding, the wizard prompts for a policy tier that determines the default set of presets applied on top of the baseline policy. -The baseline policy is always applied regardless of the selected tier. - -| Tier | Presets included | Description | -|------|------------------|-------------| -| Restricted | None | Base sandbox only. No third-party network access beyond inference and core agent tooling. | -| Balanced (default) | `npm`, `pypi`, `huggingface`, `brew`, `brave when supported` | Full dev tooling and web search for agents that support web search. No messaging platform access. | -| Open | `npm`, `pypi`, `huggingface`, `brew`, `brave when supported`, `slack`, `discord`, `telegram`, `wechat` (experimental), `whatsapp` (experimental), `jira`, `outlook` | Broad access across third-party services including messaging and productivity. | - -After selecting a tier, a combined preset and access-mode screen lets you include or exclude individual presets and toggle each between read (GET only) and read-write (GET + POST/PUT/PATCH) access. -Tier-default presets are pre-selected; additional presets can be added from the full list. -NemoClaw filters tier defaults by the active agent's supported integrations. -For example, Hermes onboarding omits the Brave Search preset because Hermes does not use NemoClaw's OpenClaw web-search configuration. - -Tier definitions are stored in `nemoclaw-blueprint/policies/tiers.yaml`. - -In non-interactive mode, set the tier with `NEMOCLAW_POLICY_TIER`: - -```console -$ NEMOCLAW_POLICY_TIER=open nemoclaw onboard --non-interactive --yes-i-accept-third-party-software -``` - -If the value does not match a known tier, onboarding exits with an error listing the valid options. - -### Inference - -The baseline policy allows only the `local` inference route. External inference -providers are reached through the OpenShell gateway, not by direct sandbox egress. - -## Operator Approval Flow - -When the agent attempts to reach an endpoint not listed in the policy, OpenShell intercepts the request and presents it in the TUI for operator review: - -1. The agent makes a network request to an unlisted host. -2. OpenShell blocks the connection and logs the attempt. -3. The TUI command `openshell term` displays the blocked request with host, port, and requesting binary. -4. The operator approves or denies the request. -5. If approved, the endpoint is added to the running policy for the session. - -To try this, run the walkthrough: - -```console -$ ./scripts/walkthrough.sh -``` - -This opens a split tmux session with the TUI on the left and the agent on the right. - -## Modifying the Policy - -### Static Changes - -Edit `nemoclaw-blueprint/policies/openclaw-sandbox.yaml` and re-run the onboard wizard: - -```console -$ nemoclaw onboard -``` - -### Dynamic Changes - -Apply policy updates to a running sandbox without restarting: - -```console -$ openshell policy update --add-endpoint api.example.com:443:read-only:rest:enforce -``` - -To replace the live policy with a complete raw policy file, use `openshell policy set`: - -```console -$ openshell policy set --policy -``` diff --git a/skills/nemoclaw-user-reference/references/troubleshooting.md b/skills/nemoclaw-user-reference/references/troubleshooting.md deleted file mode 100644 index 41063844c00..00000000000 --- a/skills/nemoclaw-user-reference/references/troubleshooting.md +++ /dev/null @@ -1,1419 +0,0 @@ -# Troubleshooting - -This page covers common issues you may encounter when installing, onboarding, or running NemoClaw, along with their resolution steps. - -**Get Help:** - -If your issue is not listed here, join the [NemoClaw Discord channel](https://discord.gg/XFpfPv9Uvx) to ask questions and get help from the community. You can also [file an issue on GitHub](https://github.com/NVIDIA/NemoClaw/issues/new). - -## Installation - -### `nemoclaw` not found after install - -If you use nvm or fnm to manage Node.js, the installer may not update your current shell's PATH. -The `nemoclaw` binary is installed but the shell session does not know where to find it. - -Run `source ~/.bashrc` (or `source ~/.zshrc` for zsh), or open a new terminal window. - -When installing from a source checkout with `npm install`, NemoClaw first tries `npm link`. -If the global npm prefix is not writable, it writes a managed shim to `~/.local/bin/nemoclaw` instead. -Add `~/.local/bin` to your `PATH` if the command is still not found. -Source-checkout installs also bootstrap OpenShell when it is missing before running preflight. -If a source install still reports that `openshell` is not available, re-run the installer from the repository root and check that `~/.local/bin` is on your `PATH`. - -### Installer fails on unsupported platform - -The installer checks for a supported OS and architecture before proceeding. -If you see an unsupported platform error, verify that you are running on a tested platform listed in the Container Runtimes table in the quickstart guide. - -### Node.js version is too old - -NemoClaw requires Node.js 22.16 or later. -If the installer exits with a Node.js version error, check your current version: - -```console -$ node --version -``` - -If the version is below 22.16, install a supported release. -If you use nvm, run: - -```console -$ nvm install 22 -$ nvm use 22 -``` - -Then re-run the installer. - -### Image push fails with out-of-memory errors - -The sandbox image is approximately 2.4 GB compressed. During image push, the Docker daemon, k3s, and the OpenShell gateway run alongside the export pipeline, which buffers decompressed layers in memory. On machines with less than 8 GB of RAM, this combined usage can trigger the OOM killer. - -If you cannot add memory, configure at least 8 GB of swap to work around the issue at the cost of slower performance. - -### Docker is not running - -The installer and onboard wizard require Docker to be running. -If you see a Docker connection error, start the Docker daemon: - -```console -$ sudo systemctl start docker -``` - -On macOS with Docker Desktop, open the Docker Desktop application and wait for it to finish starting before retrying. - -### Docker permission denied on Linux - -On Linux, if the Docker daemon is running but you see "permission denied" errors, your user may not be in the `docker` group. -The installer can add your user to the group, but Linux does not activate that membership in the current shell automatically. -Add your user and activate the group in the current shell: - -**Docker group access:** - -NemoClaw needs Docker access. -On personal Linux development machines, adding your user to the `docker` group is the standard way to run Docker without sudo. -Members of the `docker` group can control the daemon with root-level impact, so grant this access only to trusted local accounts; on shared or managed systems, use your organization's approved Docker access path. -For background, review Docker's [daemon attack surface guidance](https://docs.docker.com/engine/security/#docker-daemon-attack-surface). - -```console -$ sudo usermod -aG docker $USER -$ newgrp docker -``` - -Then retry `nemoclaw onboard`. -If the installer stopped after printing `newgrp docker`, run that command and then re-run the installer: - -```console -$ newgrp docker -$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -``` - -### macOS first-run failures - -The two most common first-run failures on macOS are missing developer tools and Docker connection errors. - -To avoid these issues, install the prerequisites in the following order before running the NemoClaw installer: - -1. Install Xcode Command Line Tools (`xcode-select --install`). These are needed by the installer and Node.js toolchain. -2. Install and start a supported container runtime (Docker Desktop or Colima). Without a running runtime, the installer cannot connect to Docker. - -### Permission errors during installation - -The NemoClaw installer does not require `sudo` or root. -It installs Node.js via nvm and NemoClaw via npm, both into user-local directories. -The installer also handles OpenShell installation automatically using a pinned release. - -If you see permission errors during installation, they typically come from Docker, not the NemoClaw installer itself. -Docker must be installed and running before you run the installer, and installing Docker may require elevated privileges on Linux. - -### npm install fails with permission errors - -If `npm install` fails with an `EACCES` permission error, do not run npm with `sudo`. -Instead, configure npm to use a directory you own: - -```console -$ mkdir -p ~/.npm-global -$ npm config set prefix ~/.npm-global -$ export PATH=~/.npm-global/bin:$PATH -``` - -Add the `export` line to your `~/.bashrc` or `~/.zshrc` to make it permanent, then re-run the installer. - -### Installer fails on NVIDIA Jetson - -The installer auto-detects NVIDIA Jetson devices (Orin and Thor) and applies required host configuration before the normal install flow. -If the Jetson setup step fails, verify that you have `sudo` access and that Docker is installed and running. - -For JetPack 6 (L4T 36.x), the setup switches iptables to legacy mode and adjusts the Docker daemon configuration. -For JetPack 7 (L4T 38.x / Thor), only bridge netfilter and sysctl settings are applied. -For JetPack 7 (L4T 39.x), bridge netfilter is loaded only when the host is missing it. Some R39 images already ship with `br_netfilter` configured and are left untouched. On affected R39 hosts, the installer prints `loading br_netfilter (required by k3s inside the OpenShell gateway)`. Without this fix, sandbox pods fail DNS resolution against the in-cluster service and the onboard `Setting up OpenClaw inside sandbox` step times out. - -If the L4T version is not recognized, the setup step is skipped and the installer continues normally. - -### DNS resolution from inside docker fails (corporate firewall) - -Some corporate networks block outbound UDP port 53 to public DNS servers and force all host name resolution through DNS over TLS on TCP port 853. Containers do not inherit the host's DNS-over-TLS configuration, so the sandbox build's `npm ci` step times out trying to resolve `registry.npmjs.org` against `1.1.1.1` or `8.8.8.8`. - -NemoClaw's preflight runs a short `docker run --rm busybox nslookup nemoclaw-dns-probe-.invalid` probe before starting the sandbox build. The fresh `.invalid` name should return NXDOMAIN through a working resolver, so cached answers cannot hide blocked DNS egress. When the probe confirms a DNS failure, onboarding stops with platform-specific remediation instead of hanging for ~15 minutes and printing a cryptic `Exit handler never called`. - -The fix depends on your platform and runtime. Pick the matching path from the preflight output, apply it, then re-run `nemoclaw onboard`. - -- **Linux with systemd-resolved.** Add a `DNSStubListenerExtra` drop-in pointing at the docker bridge gateway IP (the preflight prints the detected IP), then add the same IP to `/etc/docker/daemon.json` under `dns`. Restart `systemd-resolved` and `docker`. -- **macOS with Colima.** Restart Colima with the corporate DNS address, for example `colima stop && colima start --dns `. -- **macOS with Docker Desktop.** Add the corporate DNS address to `~/.docker/daemon.json` under `dns`, then restart Docker Desktop. -- **Windows or WSL.** Configure DNS in the Docker Desktop settings GUI, or apply the Linux fix above when running native docker inside WSL. - -Verify the fix worked: - -```console -$ docker run --rm busybox nslookup example.com -``` - -When the lookup returns an answer, retry onboarding. - -### Port already in use - -The NemoClaw dashboard uses port `18789` by default and the gateway uses port `8080`. -If another sandbox already owns the dashboard port, onboarding scans ports `18789` through `18799` and uses the next free port. -If all ports in that range are occupied, the error lists the owner for each port and suggests using `--control-ui-port` with a port outside the range. - -On macOS, the port check also tries a privileged `lsof` probe without prompting for a password so root-owned listeners are detected before the sandbox build starts. -If a port becomes occupied after preflight but before `openshell forward start` runs, onboarding deletes the just-created sandbox and exits with a retry message instead of leaving a sandbox with an unreachable dashboard URL. - -When a previous onboard, upgrade, or sandbox crash leaves a stale `openclaw-gateway` host process holding the dashboard port, `nemoclaw onboard --fresh`, `nemoclaw destroy` (when destroying the last sandbox), and `nemoclaw uninstall` automatically sweep the dashboard port range and signal `SIGTERM` then `SIGKILL` to recover. -The sweep only targets processes owned by the current user whose command line matches `openclaw-gateway` or `openshell forward` markers, and skips dashboard ports owned by other live sandboxes. - -If a non-NemoClaw process is already bound to the dashboard port or the gateway port, identify the conflicting process, verify it is safe to stop, and terminate it: - -```console -$ sudo lsof -i :18789 -$ kill -``` - -If the process does not exit, use `kill -9 ` to force-terminate it. -Then retry onboarding. - -Alternatively, override the conflicting port instead of stopping the other process. -Pass `--control-ui-port` with the desired dashboard port: - -```console -$ nemoclaw onboard --control-ui-port 19000 -``` - -You can also set `CHAT_UI_URL` with the desired port: - -```console -$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard -``` - -Or set the port directly: - -```console -$ NEMOCLAW_DASHBOARD_PORT=19000 nemoclaw onboard -``` - -For an OpenShell gateway port conflict, set `NEMOCLAW_GATEWAY_PORT` to a free -non-privileged port that does not overlap NemoClaw's dashboard, vLLM, Ollama, -or Ollama proxy ports: - -```console -$ NEMOCLAW_GATEWAY_PORT=8990 nemoclaw onboard -``` - -Remote/headless hosts can bind the OpenShell gateway to all IPv4 interfaces: - -```console -$ NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0 NEMOCLAW_GATEWAY_PORT=8990 nemoclaw onboard -``` - -Use `NEMOCLAW_GATEWAY_BIND_ADDRESS=0.0.0.0` only when other hosts on the -network should be able to reach the gateway. - -See [Environment Variables](commands.md#environment-variables) for the full list of port overrides. - -### Running multiple sandboxes simultaneously - -Each sandbox requires its own dashboard port. -If you onboard a second sandbox without overriding the port, onboarding uses the next free port in the `18789` to `18799` range. -`onboard` checks `openshell forward list` before starting a new forward, so a second onboard cannot silently take over the first sandbox's port. - -Assign a distinct port only when you want a specific value: - -```console -$ nemoclaw onboard # first sandbox uses default 18789 -$ nemoclaw onboard # second sandbox uses the next free port -$ nemoclaw onboard --control-ui-port 19000 # explicit port override -``` - -Each sandbox then has its own SSH tunnel and its own dashboard URL: - -```text -http://localhost:18789 ← first sandbox -http://localhost:19000 ← second sandbox -``` - -You can verify which tunnel belongs to which sandbox with: - -```console -$ openshell forward list -$ nemoclaw list -``` - -`nemoclaw list` prints the recorded dashboard URL for each sandbox. - -## Onboarding - -### Cgroup v2 errors during onboard - -Older NemoClaw releases relied on a Docker cgroup workaround on Ubuntu 24.04, DGX Spark, and WSL2. -Current OpenShell releases handle that behavior themselves, so NemoClaw no longer requires a Spark-specific setup step. - -If onboarding reports that Docker is missing or unreachable, fix Docker first and retry onboarding: - -```console -$ nemoclaw onboard -``` - -Podman is not a tested runtime. -If onboarding or sandbox lifecycle fails, switch to a tested runtime (Docker Desktop, Colima, or Docker Engine) and rerun onboarding. - -### Cluster fails with `overlayfs snapshotter cannot be enabled` on Docker 26+ - -Docker Engine 26 and later default fresh installations to the [containerd image store](https://docs.docker.com/engine/storage/containerd/), which exposes its layers via the `overlayfs` snapshotter rather than the legacy `overlay2` graph driver. -The k3s server inside the OpenShell cluster image needs to mount its own overlay filesystem on top, and the kernel rejects nesting two non-trivial overlay mounts. -The cluster container then loops with: - -```text -"overlayfs" snapshotter cannot be enabled for "/var/lib/rancher/k3s/agent/containerd", -try using "fuse-overlayfs" or "native": -failed to mount overlay: ... err: invalid argument -``` - -This is a Docker default-driver change, not a NemoClaw or OpenShell regression. -The same hardware running Docker 25 or earlier — or any Docker version with the containerd image store disabled — uses the legacy `overlay2` driver and is unaffected. - -NemoClaw detects the Docker 26+ containerd-snapshotter overlayfs configuration during onboarding and transparently builds a small drop-in replacement for the cluster image on the local Docker engine. -The patched image installs `fuse-overlayfs` and selects it as the k3s snapshotter, bypassing the kernel-level nested-overlay limitation. -No host configuration changes, sudo, or Docker restart required. - -The auto-fix runs once per OpenShell version on the affected host. -Subsequent onboarding runs reuse the cached patched image. -Hosts without the conflict (`Driver: overlay2` in `docker info`, macOS Docker Desktop, or Linux installations that disable the containerd image store) see no change in behavior. - -Override knobs: - -- `NEMOCLAW_DISABLE_OVERLAY_FIX=1` — skip the auto-fix and run against the unmodified upstream cluster image. - Useful for diagnosis or when you have already applied the manual workaround below. -- `NEMOCLAW_OVERLAY_SNAPSHOTTER=native` — build the patched image with k3s's `native` snapshotter instead of `fuse-overlayfs`. - The `native` snapshotter copies image layers instead of overlaying them, so it uses more disk but does not depend on FUSE. - Default is `fuse-overlayfs`. - -If you prefer to disable the new Docker storage driver instead of running the patched image, edit `/etc/docker/daemon.json`: - -```json -{ - "storage-driver": "overlay2", - "features": { "containerd-snapshotter": false } -} -``` - -Then restart Docker (`sudo systemctl restart docker`) and re-run `nemoclaw onboard`. -This restores the legacy `overlay2` driver host-wide, which kills any other running containers — prefer the auto-fix unless you need the change for unrelated reasons. -Switching storage drivers also rebuilds the entire local image graph: previously-pulled images become unusable and Docker re-pulls them on first reference, so expect a cold cache and additional disk usage right after the restart. - -### OpenShell version above maximum - -Each NemoClaw release validates against a range of tested OpenShell versions. -If the installed OpenShell version exceeds the configured maximum, `nemoclaw onboard` exits with an error: - -```text -✗ openshell is above the maximum supported by this NemoClaw release. - blueprint.yaml max_openshell_version: -``` - -Upgrade NemoClaw to a version that supports your OpenShell release, or install a supported OpenShell version from the [OpenShell releases page](https://github.com/NVIDIA/OpenShell/releases). - -For fresh installs, NemoClaw passes the blueprint range to `install-openshell.sh` and resolves a compatible published OpenShell release before downloading. -If GitHub release metadata is unavailable, the script uses its bundled fallback pin and the post-install gate still enforces the configured range. - -### Sandbox containers cannot reach the gateway - -On native Linux Docker-driver hosts, `nemoclaw onboard` verifies the route that sandbox containers use to reach the OpenShell gateway. -If a host firewall blocks that path, onboarding exits with output like: - -```text -✗ Sandbox containers cannot reach the gateway at host.openshell.internal:8080. - A host firewall may be blocking traffic from the OpenShell Docker bridge. -``` - -Apply the `ufw` command printed by onboarding, then rerun onboarding. -If the message does not include a subnet, derive it from the OpenShell Docker network: - -```console -$ SUBNET=$(docker network inspect openshell-docker --format '{{(index .IPAM.Config 0).Subnet}}') -$ sudo ufw allow from "$SUBNET" to any port 8080 proto tcp -$ nemoclaw onboard -``` - -### `connect` exits because the gateway is down - -`nemoclaw connect` checks the OpenShell gateway before it tries dashboard forwarding, SSH, or inference repair. -If the gateway is not reachable, the command exits early and prints recovery guidance. - -Start the gateway or resume onboarding, then retry: - -```console -$ openshell gateway start --name nemoclaw -$ nemoclaw onboard --resume -$ nemoclaw connect -``` - -Run `nemoclaw status` for a broader gateway health report. - -### Invalid sandbox name - -Sandbox names must be lowercase, start with a letter, contain only letters, numbers, and internal hyphens, and end with a letter or number. -Uppercase letters are automatically lowercased. - -Names that collide with global CLI commands are also rejected. -Reserved names include `onboard`, `list`, `deploy`, `setup`, `start`, `stop`, `status`, `debug`, `uninstall`, `credentials`, and `help`. -Using a reserved name would cause the CLI to route to the global command instead of the sandbox. - -If the name does not match these rules or is reserved, the wizard exits with an error. -Choose a name such as `my-assistant` or `dev1`. - -### Sandbox creation fails on DGX - -On DGX machines, sandbox creation can fail if the gateway's DNS has not finished propagating or if a stale port forward from a previous onboard run is still active. - -Run `nemoclaw onboard` to retry. -The wizard cleans up stale port forwards and waits for gateway readiness automatically. - -### GPU setup fails with a placeholder GPU name - -On Windows or WSL hosts, some systems report a placeholder display adapter name even when no NVIDIA GPU firmware is present. -NVIDIA NIM and GPU-backed sandbox setup require a real NVIDIA GPU. -If NemoClaw rejects the detected GPU name during preflight, select a CPU or remote inference provider, or move the setup to a host with a supported NVIDIA GPU and current drivers. - -Jetson hosts can still run NemoClaw, but sandbox GPU passthrough is not supported there. -If onboarding reports that sandbox GPU passthrough is unavailable on Jetson, rerun onboarding without `--sandbox-gpu`. - -### Colima socket not detected (macOS) - -Newer Colima versions use the XDG base directory (`~/.config/colima/default/docker.sock`) instead of the legacy path (`~/.colima/default/docker.sock`). -Some installations expose a top-level Colima socket at `~/.colima/docker.sock`. -NemoClaw checks all three paths. -If neither is found, verify that Colima is running: - -```console -$ colima status -``` - -### Sandbox build is slow or hangs (under-provisioned container runtime) - -Default Colima ships with 2 vCPU and 2 GiB of memory, which is not enough headroom for the BuildKit-driven sandbox image build. -On macOS Apple Silicon, the build can stall part-way through with no progress and no error, leaving the wizard waiting indefinitely. - -Preflight inspects `docker info` for `NCPU` and `MemTotal` and prints a warning when the runtime falls below 4 vCPU or 8 GiB. -In interactive onboarding, the warning prompt defaults to abort, so pressing Enter stops the run before the sandbox build reaches the likely stall point. -Type `y` only when you intentionally want to continue on the smaller runtime. -Non-interactive onboarding prints the warning and continues. -On Colima, raise the resources before re-running onboard: - -```console -$ colima stop -$ colima start --cpu 6 --memory 12 --disk 100 -``` - -On Docker Desktop, raise CPU and memory limits in *Settings → Resources*, then apply and restart. - -To silence the warning when the host is intentionally small, set `NEMOCLAW_IGNORE_RUNTIME_RESOURCES=1` before running `nemoclaw onboard`. - -### Re-onboard fails because port 18789 is held by SSH - -After destroying a sandbox and gateway, the SSH port-forward process for the -dashboard can be left running. -Re-running onboard then fails preflight with `Port 18789 is not available. -Blocked by: ssh`. - -Current NemoClaw detects this case and kills the orphaned SSH process -automatically before retrying the port check. -If you see the error on an older release, identify the SSH process and -terminate it manually: - -```console -$ sudo lsof -i :18789 -$ kill -``` - -Then re-run `nemoclaw onboard`. - -### Updated messaging token is not picked up - -Re-running `nemoclaw onboard --non-interactive` with a new -`TELEGRAM_BOT_TOKEN`, `DISCORD_BOT_TOKEN`, or `SLACK_BOT_TOKEN` previously -reported success while the sandbox kept polling with the old credential. -Current NemoClaw stores SHA-256 hashes of messaging credentials in the -sandbox registry at creation time and detects when a token has changed. -When rotation is detected, NemoClaw automatically backs up workspace state, -deletes the sandbox, recreates it with the new credential, and restores the -backup. - -If you suspect a sandbox is still using a stale token, re-run onboarding so -the credential check runs: - -```console -$ nemoclaw onboard --non-interactive -``` - -### Sandbox creation killed by OOM (exit 137) - -On systems with 8 GB RAM or less and no swap configured, the sandbox image push can exhaust available memory and get killed by the Linux OOM killer (exit code 137). - -NemoClaw automatically detects low memory during onboarding and prompts to create a 4 GB swap file. -If this automatic step fails or you are using a custom setup flow, create swap manually before running `nemoclaw onboard`: - -```console -$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=none -$ sudo chmod 600 /swapfile -$ sudo mkswap /swapfile -$ sudo swapon /swapfile -$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab -$ nemoclaw onboard -``` - -### Previous onboarding session failed - -If a previous `nemoclaw onboard` attempt fails partway through (for example, a provider or inference-setup step reporting an error), NemoClaw records the failure in `~/.nemoclaw/onboard-session.json`. - -When you re-run the installer, it detects the failed session and does not silently retry it. -Silent retry would loop on the same failure if your original choice, such as an unreachable provider, was the cause. - -- In an interactive terminal, the installer prompts whether to resume the failed session or start fresh. - Press `R` (or Enter) to retry the same session, or `f` to discard it and make fresh choices. -- In non-interactive mode (piped `curl | bash` with `NEMOCLAW_NON_INTERACTIVE=1`, CI, scripts), the installer refuses and exits with a non-zero status so a scripted re-run cannot loop. - You must opt in to one of two paths explicitly: - - Start over with new choices (discards the recorded session and provider/model selection): - - ```console - $ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --fresh - ``` - - Or equivalently, via env var. - The variable must be set on the `bash` side of the pipe, not on `curl`, since only the right-hand process inherits it: - - ```console - $ curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_FRESH=1 bash - ``` - - Retry the same session without re-prompting. - This is only useful if the original failure was transient, for example a network blip or a stopped Docker daemon, and not a wrong provider choice: - - ```console - $ nemoclaw onboard --resume - ``` - -As a last resort, you can also delete the session file directly and re-run the installer: - -```console -$ rm ~/.nemoclaw/onboard-session.json -``` - -## Runtime - -### Reconnect after a host reboot - -After a host reboot, the container runtime, OpenShell gateway, and sandbox may not be running. -Follow these steps to reconnect. - -1. Start the container runtime. - - - **Linux:** start Docker if it is not already running (`sudo systemctl start docker`) - - **macOS:** open Docker Desktop or start Colima (`colima start`) - -1. Check sandbox state. - - ```console - $ openshell sandbox list - ``` - - If the sandbox shows `Ready`, skip to step 4. - -1. Restart the gateway (if needed). - - If the sandbox is not listed or the command fails, restart the OpenShell gateway: - - ```console - $ openshell gateway start --name nemoclaw - ``` - - Wait a few seconds, then re-check with `openshell sandbox list`. - -1. Reconnect. - - ```console - $ nemoclaw connect - ``` - - The gateway usually rotates its SSH host keys across a reboot. - `connect` detects the resulting identity drift, prunes the stale `openshell-*` entries from `~/.ssh/known_hosts`, and retries automatically. - You do not need to edit `known_hosts` by hand or re-run `nemoclaw onboard` in this case. - -1. Start host auxiliary services (if needed). - - If you use the cloudflared tunnel started by `nemoclaw tunnel start`, start it again: - - ```console - $ nemoclaw tunnel start - ``` - - OpenShell-managed channel messaging handles Telegram, Discord, Slack, WeChat, and WhatsApp at onboarding, not through a separate bridge process from `nemoclaw tunnel start`. - WeChat and WhatsApp are experimental. - To pause a single bridge without destroying the sandbox, use `nemoclaw channels stop `. - -**If the sandbox does not recover:** - -If the sandbox remains missing after restarting the gateway, run `nemoclaw onboard` to recreate it. -The wizard prompts for confirmation before destroying an existing sandbox. If you confirm, it **destroys and recreates** the sandbox. Workspace files (SOUL.md, USER.md, IDENTITY.md, AGENTS.md, MEMORY.md, and daily memory notes) are lost. -Back up your workspace first by following the instructions at Back Up and Restore (use the `nemoclaw-user-manage-sandboxes` skill). - -### Sandbox is running an outdated agent version - -After upgrading NemoClaw, `nemoclaw connect` and `nemoclaw status` warn if the sandbox is running an older agent version than the current image. - -To upgrade the sandbox while preserving workspace state, run: - -```console -$ nemoclaw rebuild -``` - -The rebuild command backs up state, destroys the old sandbox, recreates it with the current image, and restores state. -Create a snapshot before rebuilding if you want an additional safety net: - -```console -$ nemoclaw snapshot create -$ nemoclaw rebuild -``` - -### Sandbox shows as stopped - -The sandbox may have been stopped or deleted. -Run `nemoclaw onboard` to recreate the sandbox from the same blueprint and policy definitions. - -### Status shows "not running" inside the sandbox - -This is expected behavior. -When checking status inside an active sandbox, host-side sandbox state and inference configuration are not inspectable. -The status command detects the sandbox context and reports "active (inside sandbox)" instead. - -Run `openshell sandbox list` on the host to check the underlying sandbox state. - -### Git clone fails with a certificate verification error - -In networks that inspect TLS, OpenShell injects a proxy CA bundle into the sandbox. -Current NemoClaw exports that bundle as `GIT_SSL_CAINFO` during sandbox startup and persists it for `nemoclaw connect` sessions, so Git can trust the proxy CA. -It also forwards standard CA bundle variables for subprocesses, including `GIT_SSL_CAPATH`, `CURL_CA_BUNDLE`, and `REQUESTS_CA_BUNDLE`. - -If Git still reports `server certificate verification failed`, reconnect to the sandbox and check that the CA variables are present: - -```console -$ env | grep -E 'SSL_CERT_FILE|GIT_SSL_CAINFO|CURL_CA_BUNDLE|REQUESTS_CA_BUNDLE' -``` - -If they are missing on an older sandbox, upgrade NemoClaw and run: - -```console -$ nemoclaw rebuild -``` - -### Sandbox creation reports a TLS certificate mismatch - -If sandbox creation reports a TLS or certificate mismatch, the OpenShell gateway certificate may have changed since the CLI last trusted it. -Refresh the gateway trust and then resume onboarding: - -```console -$ openshell gateway trust -g nemoclaw -$ nemoclaw onboard --resume -``` - -### `openclaw update` hangs or times out inside the sandbox - -This is expected for the current NemoClaw deployment model. -NemoClaw installs `openclaw` into the sandbox image at build time, so the CLI is image-pinned rather than updated in place inside a running sandbox. - -Do not run `openclaw update` inside the sandbox. -Instead: - -1. Upgrade to a NemoClaw release that includes the newer `openclaw` version. -2. If you build NemoClaw from source, bump the pinned `openclaw` version in `Dockerfile.base` and rebuild the sandbox base image. -3. Run `nemoclaw rebuild` to recreate the sandbox with the updated image. The rebuild command automatically backs up workspace state before destroying the old sandbox and restores it afterward. - -### Inference requests time out - -Verify that the inference provider endpoint is reachable from the host. -Check the active provider and endpoint: - -```console -$ nemoclaw status -``` - -For local Ollama and local vLLM, `nemoclaw status` also prints an `Inference` line that probes the host-side health endpoint directly. -If that line shows `unreachable`, start the local backend first and then retry the request. -For Local Ollama, current releases also print `Inference (auth proxy)` when a proxy token is available. -If the backend is healthy but the auth proxy is `unauthorized` or `unreachable`, re-run onboarding so NemoClaw can recreate the proxy token, restart the proxy, and refresh the route. - -If the endpoint is correct but requests still fail, check for network policy rules that may block the connection. -Then verify the credential and base URL for the provider you selected during onboarding. - -If you entered an AWS Bedrock Runtime URL such as `https://bedrock-runtime.us-east-1.amazonaws.com` in the **Other Anthropic-compatible endpoint** flow, NemoClaw auto-detects it and routes sandbox traffic through a host-local adapter. -Use the raw Bedrock Runtime host, not an Anthropic `/v1/messages` path, and verify that the model ID or inference profile ID is valid for that region. -For auth, export `AWS_BEARER_TOKEN_BEDROCK`, `AWS_PROFILE`, or standard IAM environment credentials before onboarding; if you paste a key at the `COMPATIBLE_ANTHROPIC_API_KEY` prompt, NemoClaw uses it only as the adapter's Bedrock bearer token. -Region errors usually mean the pasted endpoint region, `AWS_REGION`, `AWS_DEFAULT_REGION`, or the model/inference profile ID do not match. - -For Ollama, vLLM, NIM, and compatible-endpoint setup, the default timeout is 180 seconds. -If large prompts still cause timeouts, increase it with `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` before re-running onboard: - -```console -$ export NEMOCLAW_LOCAL_INFERENCE_TIMEOUT=300 -$ nemoclaw onboard -``` - -For local Ollama and vLLM, onboarding retries the container reachability check and can fall back to the host-side health check when the local backend is healthy. -If all attempts fail, the error includes container reachability diagnostics such as HTTP status and host gateway resolution. - -`NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` only covers the inference-server validation probe. -The post-create readiness wait has its own budget (`NEMOCLAW_SANDBOX_READY_TIMEOUT`); see [Sandbox onboard times out with "did not become ready within Ns"](#sandbox-onboard-times-out-with-did-not-become-ready-within-ns) for the readiness path. - -### Sandbox onboard times out with "did not become ready within Ns" - -Onboarding ends with: - -```text - Sandbox 'my-assistant' was created but did not become ready within 180s. - The orphaned sandbox has been removed — you can safely retry. -``` - -This is a separate budget from `NEMOCLAW_LOCAL_INFERENCE_TIMEOUT` — it covers the readiness wait that follows sandbox creation (in-sandbox boot, OpenClaw start, policy load), not the inference probe. -The 180-second default fits typical workstations but can be exceeded when: - -- The host is building or uploading the sandbox image for the first time (cold caches, slow link). -- The selected model is large (70B+ parameters or 4-bit/8-bit quantisations that take time to memory-map). -- Onboarding runs on a remote VM where image upload to the gateway streams over the network (for example DGX Station first-run installer). - -Raise the budget before re-running onboard: - -```console -$ export NEMOCLAW_SANDBOX_READY_TIMEOUT=600 -$ nemoclaw onboard -``` - -The variable accepts seconds and applies to the readiness wait only. -When the deadline expires, NemoClaw deletes the partially-created sandbox before printing the retry hint, so the next `nemoclaw onboard` starts from a clean state. -If readiness still fails after the extended budget, inspect the gateway and sandbox status: - -```console -$ openshell sandbox list -$ nemoclaw status -``` - -### Agent fails at runtime after onboarding succeeds with a compatible endpoint - -Some OpenAI-compatible servers (such as SGLang) expose `/v1/responses` but their -streaming mode is incomplete. -OpenClaw requires granular streaming events like `response.output_text.delta` -that these backends do not emit. - -For the compatible-endpoint provider, NemoClaw now defaults to -`/v1/chat/completions` and skips the Responses API probe entirely unless you -opt in. -If you onboarded an older release that selected `/v1/responses`, re-run -onboarding so the wizard rebuilds the image with chat completions: - -```console -$ nemoclaw onboard -``` - -If you previously set `NEMOCLAW_PREFERRED_API=openai-responses` to force the -Responses API, unset it before re-running onboard. - -When you enable Telegram messaging with an OpenAI-compatible endpoint, onboarding also checks `inference.local` from inside the sandbox. -If that smoke check fails, fix the compatible-endpoint base URL, credentials, model, or network route before testing the Telegram bot again. - -Do not rely on `NEMOCLAW_INFERENCE_API_OVERRIDE` alone — it patches the config -at container startup but does not update the Dockerfile ARG baked into the -image. -A fresh `nemoclaw onboard` is the reliable fix. - -### `NEMOCLAW_DISABLE_DEVICE_AUTH=1` does not change an existing sandbox - -This is expected behavior. -`NEMOCLAW_DISABLE_DEVICE_AUTH` is a build-time setting used when NemoClaw creates the sandbox image. -Changing or exporting it later does not rewrite the baked `openclaw.json` inside an existing sandbox. - -If you need a different device-auth setting, rerun onboarding so NemoClaw rebuilds the sandbox image with the desired configuration. -For the security trade-offs, refer to Security Best Practices (use the `nemoclaw-user-configure-security` skill). - -### `openclaw.json` is empty after changing inference - -Some runtime inference changes can leave `/sandbox/.openclaw/openclaw.json` empty if the write fails partway through. -When that happens, OpenClaw commands may report that the config is empty instead of showing a raw JSON parse error. - -Current NemoClaw sandboxes capture a known-good config baseline after a successful startup. -On the next sandbox startup, NemoClaw restores `openclaw.json` from OpenClaw's last-good copy when available, or from the NemoClaw baseline. -If the sandbox still cannot start or reports that no baseline is available, rebuild it from the host: - -```console -$ nemoclaw rebuild -``` - -### `openclaw channels add` or `remove` is blocked inside the sandbox - -This is expected. -The messaging channel list is frozen into the sandbox's container image when the image is built during `nemoclaw onboard` or `nemoclaw rebuild` (the selected channel names are passed to the `docker build` as `NEMOCLAW_MESSAGING_CHANNELS_B64` and written into agent config such as `/sandbox/.openclaw/openclaw.json` for OpenClaw or `/sandbox/.hermes/.env` for Hermes). -Changes made inside the running sandbox do not persist across rebuilds, so `openclaw channels` commands that mutate the config are intercepted. -NemoClaw's sandbox entrypoint installs a guard that intercepts `openclaw channels ` and prints an actionable error pointing at the host-side commands below, instead of letting the call fail deep in the binary with a raw `EACCES` trace. - -Run the equivalent host-side command instead: - -```console -$ nemoclaw channels list -$ nemoclaw channels add -$ nemoclaw channels remove -``` - -`channels add` registers credentials with the OpenShell gateway and `channels remove` clears them. -Both offer to rebuild the sandbox so the image reflects the new channel set. -In non-interactive mode (`NEMOCLAW_NON_INTERACTIVE=1`), the commands stage the change and leave the rebuild to a follow-up `nemoclaw rebuild`. -WeChat and WhatsApp are experimental. -Review Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill) before enabling them. - -WeChat captures its bot token through a host-side QR scan during `nemoclaw onboard` or `channels add wechat`. -You scan the iLink QR from WeChat on your phone and NemoClaw registers the captured token with the OpenShell gateway. - -WhatsApp pairs entirely inside the sandbox. -NemoClaw advertises WhatsApp for OpenClaw and Hermes sandboxes after you add the channel on the host. -Run `openclaw channels login --channel whatsapp` inside OpenClaw sandboxes, or run `hermes whatsapp` inside Hermes sandboxes. - -### `scripts/rcf_patch.py` is missing from the blueprint - -`scripts/rcf_patch.py` is intentionally absent from current NemoClaw blueprints. -Older QA plans used that helper for a Dockerfile "Patch-4" test that corrupted the build-time `replaceConfigFile` monkey-patch and expected `ERROR: Patch 4 (replaceConfigFile EACCES) not applied`. -The old Patch-4 fail-closed test no longer applies because NemoClaw no longer patches OpenClaw's compiled `replaceConfigFile` source at image build time. - -Current sandboxes use a mutable-default config model instead. -Before a reviewed host-side lockdown, `/sandbox/.openclaw/openclaw.json` is group-writable by the sandbox and gateway users, so OpenClaw config mutations should write normally rather than requiring an EACCES swallow. -After lockdown, runtime config mutations should fail cleanly or route users to the supported host-side NemoClaw command. - -To validate this area now, use the config lifecycle tests instead of looking for `rcf_patch.py`: - -```console -$ npm run build:cli -$ npm test -- test/repro-2681-group-writable.test.ts -``` - -### `openclaw config set` or `unset` is blocked inside the sandbox - -This is expected. -NemoClaw builds the sandbox's OpenClaw configuration (`/sandbox/.openclaw/openclaw.json`) from host-side onboarding, rebuild, inference, policy, and messaging inputs. -Fresh sandboxes keep that file writable by default so the agent can manage runtime state, but direct in-sandbox edits are not the supported or durable path for NemoClaw-managed settings. -NemoClaw's sandbox entrypoint installs a guard that intercepts `openclaw config set` and `openclaw config unset` and prints an actionable error, because changes made inside the running sandbox do not persist across rebuilds. - -For most configuration changes, exit the sandbox and rerun onboarding: - -```console -$ nemoclaw onboard -``` - -If NemoClaw reports a resumable failed onboarding session, run `nemoclaw onboard --resume` instead. -This rebuilds the sandbox with your updated settings. - -For advanced live edits, use the host-side config command instead of running `openclaw config set` inside the sandbox: - -```console -$ nemoclaw config set --key --value '' --restart -``` - -Host-side `config set` validates any HTTP or HTTPS URLs in the new value, including URLs nested inside JSON objects or arrays. NemoClaw rejects loopback, private, reserved, and internal hosts; DNS names must resolve successfully and must not resolve to private/internal addresses. HTTP URLs are written with the validated IP address pinned to reduce DNS-rebinding risk. Avoid putting credentials in config values; rotate provider credentials with the credential-management commands instead. - -### `openclaw doctor --fix` cannot repair Discord channel config inside the sandbox - -This is expected in NemoClaw-managed sandboxes. -NemoClaw bakes channel entries into `/sandbox/.openclaw/openclaw.json` at image build time. - -As a result, commands that try to rewrite the baked config from inside the sandbox, including `openclaw doctor --fix`, cannot repair Discord, Telegram, or Slack channel entries in place. - -If your Discord channel config is wrong, rerun onboarding so NemoClaw rebuilds the sandbox image with the correct messaging selection. -Do not treat a failed `doctor --fix` run as proof that the Discord gateway path itself is broken. - -If `openclaw doctor` reports that it moved Telegram single-account values under `channels.telegram.accounts.default`, rerun onboarding and rebuild the sandbox rather than trying to patch `openclaw.json` in place. -Current NemoClaw rebuilds bake Telegram in the account-based layout and set Telegram group chats to `groupPolicy: open`, which avoids the empty `groupAllowFrom` warning path for default group-chat access. - -### Discord bot logs in, but the channel still does not work - -Separate the problem into two parts: - -1. Baked config and provider wiring - - Check that onboarding selected Discord and that the sandbox was created with the Discord messaging provider attached. - If Discord was skipped during onboarding, rerun onboarding and select Discord again. - -1. Native Discord gateway path - - Successful login alone does not prove that Discord works end to end. - Discord also needs a working gateway connection to `gateway.discord.gg`. - If logs show errors such as `getaddrinfo EAI_AGAIN gateway.discord.gg`, repeated reconnect loops, or a `400` response while probing the gateway path, the problem is usually in the native gateway/proxy path rather than in the baked config. - -Common signs of a native gateway-path failure: - -- REST calls to `discord.com` succeed, but the Discord channel never becomes healthy -- `gateway.discord.gg` fails with DNS resolution errors -- the WebSocket path returns `400` instead of opening a tunnel -- native command deployment fails even though the bot token itself is valid - -In that case: - -- keep the Discord policy preset applied -- verify the sandbox was created with the Discord provider attached -- inspect gateway logs and blocked requests with `openshell term` -- treat the failure as a native Discord gateway problem, not as a bridge startup problem - -### Discord preset validation behind a proxy - -The built-in Discord policy preset intentionally allows the Node binaries used by the messaging runtime and does not allow `curl`. -As a result, `curl -s https://discord.com` failing, hanging, or printing no output is not proof that the Discord preset is broken. - -Behind the OpenShell proxy, direct DNS-only checks can also be the wrong signal. -For example, `dns.resolve("gateway.discord.gg")` can fail even when HTTPS requests routed through the proxy are healthy. - -Use Node HTTPS as the manual REST probe: - -```console -$ node - <<'NODE' -const https = require("node:https"); - -https - .get("https://discord.com/api/v10/gateway", (res) => { - console.log(`${res.statusCode} ${res.statusMessage || ""}`.trim()); - res.resume(); - }) - .on("error", (err) => { - console.error(err.message); - process.exitCode = 1; - }); -NODE -``` - -To check Discord CDN egress, use the same Node HTTPS path: - -```console -$ node - <<'NODE' -const https = require("node:https"); - -https - .get("https://cdn.discordapp.com/", (res) => { - console.log(`${res.statusCode} ${res.statusMessage || ""}`.trim()); - res.resume(); - }) - .on("error", (err) => { - console.error(err.message); - process.exitCode = 1; - }); -NODE -``` - -Any HTTP status from these probes means the Node process reached the endpoint; the exact status can vary by unauthenticated path. -If the Node REST probe works but the Discord channel is still unhealthy, investigate the native gateway path instead of widening the preset. -Check the gateway logs and blocked-request output with `openshell term`, and look for `gateway.discord.gg` connection or WebSocket upgrade failures. - -### Messaging bridge appears running but no messages arrive - -Bot tokens for Telegram (`getUpdates`), Discord (gateway), and Slack (Socket Mode) only allow one active consumer per token. If two NemoClaw sandboxes are configured with the same bot token, each one kicks the other off its polling connection and neither delivers messages. `nemoclaw status` still reports the bridge as running because the gateway process itself is alive. - -For Telegram group chats, first check BotFather privacy mode. -New Telegram bots default to privacy mode enabled, which prevents group messages from reaching `getUpdates` even when the user mentions the bot. -In @BotFather, run `/setprivacy`, choose the bot, and choose **Disable**. -Then remove the bot from the affected group and add it back; Telegram applies the privacy-mode change to group delivery only after the bot rejoins. - -To diagnose, open a shell in the sandbox and inspect the gateway log: - -```console -$ nemoclaw connect -$ tail -f /tmp/gateway.log -``` - -A repeating line like the following confirms the conflict: - -```text -[telegram] getUpdates conflict: 409: Conflict: terminated by other getUpdates request; retrying in 30s. -``` - -To fix, run `nemoclaw destroy` on whichever sandbox should stop polling, or rerun onboarding on it with the channel disabled. Current NemoClaw warns at `nemoclaw onboard` time when another sandbox already has the same channel enabled, but sandboxes created before that check was added may still be in a conflict loop. - -### Landlock filesystem restrictions silently degraded - -After sandbox creation, NemoClaw checks whether the host kernel supports Landlock (Linux 5.13+). -If the kernel is too old or you are running on macOS (where the Docker VM kernel may lack Landlock), a warning prints: - -```text -⚠ Landlock: Docker VM kernel does not support Landlock (requires ≥5.13). - Sandbox filesystem restrictions will silently degrade (best_effort mode). -``` - -This warning is informational and does not block sandbox creation. -The sandbox runs without kernel-level filesystem restrictions, relying on container mount configuration instead. -For full filesystem enforcement, run on a Linux kernel 5.13 or later (Ubuntu 22.04 LTS and later include Landlock support). - -### Sandbox lost after gateway restart - -Sandboxes created with OpenShell versions older than 0.0.24 can become unreachable after a gateway restart because SSH secrets were not persisted. -Running `nemoclaw onboard` automatically upgrades OpenShell to 0.0.24 or later during the preflight check. -After the upgrade, recreate the sandbox with `nemoclaw onboard`. - -### Agent cannot reach external hosts through a proxy - -NemoClaw uses a default proxy address of `10.200.0.1:3128` (the OpenShell-injected gateway). -If your environment uses a different proxy, set `NEMOCLAW_PROXY_HOST` and `NEMOCLAW_PROXY_PORT` before onboarding: - -```console -$ export NEMOCLAW_PROXY_HOST=proxy.example.com -$ export NEMOCLAW_PROXY_PORT=8080 -$ nemoclaw onboard -``` - -These are build-time settings baked into the sandbox image. -Changing them after onboarding requires re-running `nemoclaw onboard` to rebuild the image. - -When `HTTP_PROXY` or `HTTPS_PROXY` is set on the host, NemoClaw adds `localhost` and `127.0.0.1` to `NO_PROXY` for managed subprocesses. -This keeps local Ollama health checks and model pulls from being routed through a corporate or desktop proxy while preserving the proxy for external hosts. - -### Agent cannot reach a host-side HTTP service - -When a sandbox needs to call an HTTP service running on the host, use the normal OpenShell network policy path. -Expose the service on a host IP address that the OpenShell gateway can reach, create a custom NemoClaw policy preset for that IP and port, and apply it with `nemoclaw policy-add --from-file`. -The sandbox request then flows through the OpenShell proxy while NemoClaw preserves the existing live policy entries. - -Do not rely on `host.docker.internal` or `host.openshell.internal` as a general-purpose host-service path. -Those names may appear in the sandbox's `/etc/hosts`, but in OpenShell's sandbox network they are not guaranteed to point at a reachable host gateway. -Bypassing the proxy with `--noproxy '*'` also bypasses network policy enforcement and audit. - -First, make sure the host-side service listens on a non-loopback address. -For example, a health endpoint on port `50001` should be reachable from the host IP, not only from `127.0.0.1`: - -```console -$ curl -s http://10.0.0.5:50001/health -{"status":"ok"} -``` - -Then create a custom NemoClaw preset for the host-side service. -Replace `10.0.0.5`, `50001`, paths, methods, and binaries with the service you want the sandbox to reach: - -```yaml -preset: - name: host-memory-api - description: "Host memory API" -network_policies: - host_memory_api: - name: host_memory_api - endpoints: - - host: 10.0.0.5 - port: 50001 - protocol: rest - enforcement: enforce - rules: - - allow: { method: GET, path: "/health" } - binaries: - - { path: /usr/bin/curl } -``` - -Apply the preset to the running sandbox with the NemoClaw CLI: - -```console -$ nemoclaw my-assistant policy-add --from-file ./host-memory-api.yaml -``` - -After you apply the policy, retry the request from inside the sandbox without disabling the proxy: - -```console -$ curl -s http://10.0.0.5:50001/health -{"status":"ok"} -``` - -If the request is still denied, check the blocked request in `openshell term`. -The policy `binaries` list must include the executable path that actually made the request. -If the response changes from `policy_denied` to `upstream_unreachable`, the policy matched, but the OpenShell gateway could not reach the host IP and port. - -### Agent cannot reach an external host - -OpenShell blocks outbound connections to hosts not listed in the network policy. -Open the TUI to see blocked requests and approve them: - -```console -$ openshell term -``` - -To permanently allow an endpoint, add it to the network policy. -Refer to Customize the Network Policy (use the `nemoclaw-user-manage-policy` skill) for details. - -### Dashboard not reachable after setting a custom port - -If you ran `nemoclaw onboard` with a custom dashboard port and onboarding completed -but the dashboard URL is unreachable (browser shows connection refused or the page fails -to load), the sandbox was most likely created with an older NemoClaw version that did not -pass the dashboard port into the sandbox at startup. The gateway inside the sandbox -continued listening on the default port 18789 while the SSH tunnel forwarded the custom -port — leaving nothing at the other end of the tunnel. - -Re-run onboarding on the current NemoClaw release with the desired port. Current versions -derive the dashboard port from `CHAT_UI_URL` automatically and inject it into the sandbox: - -```console -$ CHAT_UI_URL=http://127.0.0.1:19000 nemoclaw onboard -``` - -If you need to run multiple sandboxes at different ports at the same time, see -[Running multiple sandboxes simultaneously](#running-multiple-sandboxes-simultaneously). - -### Ollama auth proxy did not start - -NemoClaw keeps Ollama bound to `127.0.0.1:11434` and starts a token-gated -reverse proxy on `0.0.0.0:11435` so the sandbox can reach Ollama without -exposing it to the local network. -If the proxy fails to start, onboarding exits before configuring inference. - -Check whether the proxy port is occupied by another process: - -```console -$ sudo lsof -i :11435 -``` - -Stop the conflicting process and re-run `nemoclaw onboard`. -The wizard cleans up stale proxy processes from previous runs automatically, -so most failures resolve by retrying. - -The proxy token is persisted to `~/.nemoclaw/ollama-proxy-token` with `0600` -permissions. -If the file is missing or unreadable after a host reboot, re-running -`nemoclaw onboard` regenerates it. - -### Ollama auth proxy is unreachable from the sandbox - -On native Linux Docker-driver hosts, a host firewall can allow the host proxy check but block sandbox traffic to the Ollama auth proxy. -When that happens, onboarding exits before it saves the inference route and prints output like: - -```text -✗ Sandbox containers cannot reach the Ollama auth proxy at host.openshell.internal:11435. - A host firewall may be blocking traffic from the OpenShell Docker bridge. -``` - -Apply the `ufw` command printed by onboarding, then rerun onboarding. -If the message does not include a subnet, derive it from the OpenShell Docker network: - -```console -$ SUBNET=$(docker network inspect openshell-docker --format '{{(index .IPAM.Config 0).Subnet}}') -$ sudo ufw allow from "$SUBNET" to any port 11435 proto tcp -$ nemoclaw onboard -``` - -Docker Desktop, WSL, and hosts without the OpenShell Docker network use different routing models. -In those cases NemoClaw treats an unavailable sandbox-side probe as non-blocking and relies on the regular proxy health check. - -### `host.docker.internal` does not reliably reach the host from the sandbox - -Configuring an inference provider with a base URL like -`http://host.docker.internal:11434/v1` does not reliably reach a host Ollama -service from inside the OpenShell sandbox. -OpenShell runs sandboxes inside a k3s network, where `host.docker.internal` is -not a portable host-service route. Depending on the platform, it may fail DNS -resolution or resolve to an internal gateway/bridge address where the host's -port `11434` is not forwarded. The sandbox then sees a DNS failure or -`connection refused`: - -```console -$ getent hosts host.docker.internal -172.17.0.1 host.docker.internal host.openshell.internal -$ no_proxy=host.docker.internal curl -v http://host.docker.internal:11434/api/tags -* connect to 172.17.0.1 port 11434 failed: Connection refused -``` - -For local Ollama, use the auth-proxy URL that NemoClaw's "Local Ollama" onboard -option configures automatically: - -```text -http://host.openshell.internal:11435/v1 -``` - -`host.openshell.internal` resolves to the same gateway IP, and the -[token-gated Ollama auth proxy](#ollama-auth-proxy-did-not-start) binds port -`11435` there and forwards requests to `127.0.0.1:11434` on the host. -If you need a different host service exposed to the sandbox, route it through -the OpenShell gateway rather than relying on `host.docker.internal`. -See issue [#3136](https://github.com/NVIDIA/NemoClaw/issues/3136). - -### Local inference health check resolves to IPv6 - -Local inference health checks now use `127.0.0.1` instead of `localhost`. -On systems where `localhost` resolves to `::1` first, older NemoClaw releases -could probe the wrong address and report the local backend as unreachable -even when it was running. -If you see this on a current NemoClaw release, verify that the local backend -binds an IPv4 address and not only `::1`. - -### Blueprint run failed - -View the error output for the failed blueprint run: - -```console -$ nemoclaw logs -``` - -Use `--follow` to stream logs in real time while debugging. - - - -## DGX Spark - -For an end-to-end Ollama walkthrough on DGX Spark, refer to the [NVIDIA Spark playbook](https://build.nvidia.com/spark/nemoclaw). - -### CoreDNS CrashLoop after onboarding - -If CoreDNS in the embedded k3s cluster crashes shortly after setup, it is usually because it resolves against `127.0.0.11`, which does not route inside the gateway container. -Run `fix-coredns.sh` to point CoreDNS at the container gateway IP instead, then recreate the sandbox. - -### `k3s` cannot find a freshly built image - -After building a new sandbox image, `k3s` inside the gateway container sometimes fails to pull it even though the image exists on the host. -Destroy and restart the gateway, then re-run setup. - -```console -$ openshell gateway destroy -$ openshell gateway start -``` - -### GPU passthrough on Spark - -GPU passthrough is not CI-tested on DGX Spark. -It is expected to work when you pass `--gpu` and the NVIDIA Container Toolkit is configured. -Verify the toolkit is configured by running `docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.8.0-base-ubuntu24.04 nvidia-smi` from the host. -If `nvidia-smi` works on the host but onboarding says GPU passthrough was not enabled, install or repair the NVIDIA Container Toolkit, then run `sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker`. -If a reusable gateway was previously started without GPU passthrough, NemoClaw replaces it automatically only when no other registered sandboxes depend on it, or when `--recreate-sandbox` is recreating the only registered sandbox with the same name. -When shared gateway cleanup would be unsafe, follow the targeted destroy or gateway-removal commands printed by onboarding. - -### `unresolvable CDI devices nvidia.com/gpu=all` during gateway start - -Recent NVIDIA Container Toolkit installs configure the Docker daemon for Container Device Interface (CDI) device injection, which OpenShell's `gateway start --gpu` then auto-selects. -If no `nvidia.com/gpu` CDI spec has been generated on the host yet, gateway start fails with `Docker responded with status code 500: CDI device injection failed: unresolvable CDI devices nvidia.com/gpu=all`. -The standard NemoClaw installer detects this gap before onboarding, first tries to enable the NVIDIA CDI refresh systemd units, and falls back to generating the spec directly with `nvidia-ctk`. -If you run `nemoclaw onboard` directly, preflight prints the manual remediation instead. -The native Linux fix is the same on Docker hosts whose `docker info` advertises a non-empty `CDISpecDirs`. -On WSL with Docker Desktop, Docker may advertise CDI directories even though `--device nvidia.com/gpu=all` is not usable from the WSL distro. -For that runtime, NemoClaw skips Linux CDI repair and uses Docker's `--gpus` compatibility path for sandbox GPU access. -This compatibility path can be retired once Docker Desktop exposes usable `nvidia.com/gpu` CDI specs inside WSL, or once OpenShell no longer requires host-visible CDI specs for Docker Desktop WSL GPU passthrough. - -Enable the refresh units, verify they list `nvidia.com/gpu` entries, then rerun onboarding: - -```console -$ sudo systemctl enable --now nvidia-cdi-refresh.path nvidia-cdi-refresh.service -$ nvidia-ctk cdi list -$ nemoclaw onboard -``` - -If the refresh units are unavailable or do not generate CDI devices, generate the spec directly: - -```console -$ sudo mkdir -p /etc/cdi -$ sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml -$ nvidia-ctk cdi list -``` - -On WSL with Docker Desktop, confirm Docker Desktop WSL integration is enabled for your distro and verify Docker GPU access from WSL: - -```console -$ docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -``` - -If GPU passthrough is not required on this host, rerun onboarding with `--no-gpu` instead. - -### Docker GPU patch failed during sandbox create - -On Linux Docker-driver gateways, NemoClaw may create the sandbox first and then recreate the OpenShell-managed Docker container with NVIDIA GPU flags. -If that compatibility patch fails, onboarding leaves the failed sandbox and diagnostic bundle in place so you can inspect the OpenShell and Docker state. - -**Note:** - -Starting with NemoClaw v0.0.43, the standard installer handles the `/proc//task//comm` permission case during this patch path. -If an older release fails direct GPU proof with that path and `Permission denied`, upgrade NemoClaw and rerun onboarding. - -The output includes a cleanup command such as: - -```console -$ openshell sandbox delete -``` - -Fix the NVIDIA Container Toolkit or CDI configuration reported in the diagnostics, clean up the failed sandbox, then rerun onboarding. -If you do not need GPU access inside the sandbox, rerun with `--no-sandbox-gpu`. -Set `NEMOCLAW_DOCKER_GPU_PATCH=0` only when you need to bypass this compatibility path during troubleshooting. - -### `pip install` fails with a system-packages error - -Recent Ubuntu releases (including DGX Spark's Ubuntu 24.04) mark the system Python install as externally managed, so `pip install` without a virtual environment fails. -Use a venv instead. -Avoid `--break-system-packages` unless you understand the risk, since it can break host tooling. - -```console -$ python3 -m venv ~/.venvs/nemoclaw -$ source ~/.venvs/nemoclaw/bin/activate -$ pip install ... -``` - -### Port 3000 conflict with AI Workbench - -NVIDIA AI Workbench's Traefik proxy binds ports 3000 and 10000. -If you run other services on Spark that expect port 3000, bind them to a different port. - - - -## Windows Subsystem for Linux - -For environment setup steps, see Windows Prerequisites (use the `nemoclaw-user-get-started` skill). - -### `wsl --install --no-distribution` returns Forbidden (403) - -Check your network connectivity. -If you are behind a VPN, try reconnecting or switching to a different network. - -### `wsl -d Ubuntu` says "There is no distribution with the supplied name" - -The Ubuntu package was installed with `--no-launch` but never registered. -Run `ubuntu.exe install --root` from PowerShell to register it, or reinstall without `--no-launch`: - -```console -$ wsl --unregister Ubuntu -$ wsl --install -d Ubuntu -``` - -### `docker info` fails inside WSL - -Confirm that Docker Desktop is running and that WSL integration is enabled for Ubuntu (Settings > Resources > WSL integration). -Then restart WSL: - -```console -$ wsl --shutdown -$ wsl -d Ubuntu -$ docker info -``` - -### Windows-host Ollama is installed but not shown during onboarding - -When NemoClaw runs inside WSL, it checks both the Windows-host Ollama HTTP endpoint and the Windows `ollama.exe` process. -If Ollama is installed but the daemon is not reachable through `host.docker.internal:11434`, the wizard should still offer a start or restart action. - -If the Windows-host option does not appear, confirm that PowerShell interop is enabled in WSL and that Windows can locate Ollama: - -```console -$ powershell.exe -NoProfile -Command "Get-Process ollama -ErrorAction SilentlyContinue" -``` - -If the process is missing, start Ollama from Windows and rerun onboarding. -If the process exists but the endpoint is unreachable, use the restart action when the wizard offers it, or restart Ollama from Windows with `OLLAMA_HOST=0.0.0.0:11434`. - -### Ollama inference fails or hangs in WSL - -Ollama configures context length based on your hardware. -On some GPUs (for example RTX 3500), the default context length is not sufficient for OpenClaw. -Force a larger context length: - -```console -$ pkill -f 'ollama serve' -$ OLLAMA_CONTEXT_LENGTH=16384 ollama serve -``` - -Verify that Ollama inference works: - -```console -$ echo "Hello" | ollama run -``` - -Replace `` with the model you selected during onboarding (for example `qwen3.5:4b`). - -If `ollama serve` fails with `Error: listen tcp 127.0.0.1:11434: bind: address already in use`, check whether Ollama is configured for automatic startup: - -```console -$ sudo systemctl status ollama -``` - -If it is active, stop it first, then start with the custom context length: - -```console -$ sudo systemctl stop ollama -$ OLLAMA_CONTEXT_LENGTH=16384 ollama serve -``` - -For additional troubleshooting, see the Quickstart (use the `nemoclaw-user-get-started` skill) and Windows Setup (use the `nemoclaw-user-get-started` skill) pages. - -## Podman - -Podman is not a tested runtime. -OpenShell officially documents Docker-based runtimes only. -If you encounter issues with Podman, switch to a tested runtime (Docker Engine, Docker Desktop, or Colima) and rerun onboarding. - -## Brev - -For Brev setup instructions, refer to Brev Web UI (use the `nemoclaw-user-deploy-remote` skill). - -### Most OpenClaw skills show as blocked - -After deploying NemoClaw on Brev, the Skills page in the OpenClaw gateway dashboard shows most bundled skills with a `blocked` status. -Only three skills are available by default: `healthcheck`, `skill-creator`, and `weather`. - -Skills are blocked for one of three reasons. - -- The skill requires a macOS-only binary (`memo`, `remindctl`, `grizzly`, and similar) that is not available on the Linux (GCP) instance Brev provisions. -- The skill requires a CLI binary that is not pre-installed in the sandbox image, such as `gh` for the GitHub skill. -- The skill requires API credentials that have not been configured, such as a Notion API key or Discord bot token. - -Skills that require macOS-only binaries cannot be enabled on Brev. -Skills that require additional CLI binaries require a custom sandbox image rebuild. - -For credentials, use the supported host-side setup flow. -Re-run onboarding for inference or Brave Search credentials, or use `nemoclaw channels add ` for messaging channels. -To add a binary to the sandbox image, update the sandbox `Dockerfile.base` to install the required package, then rebuild: - -```console -$ nemoclaw rebuild -``` - -After the rebuild completes, return to the Skills page to confirm the skill status has changed from `blocked` to `ready`. - -### `openclaw config set` fails with a permission error on Brev - -When the sandbox config has been locked from the host, `openclaw.json` is owned by root and mounted read-only inside the sandbox. -Running `openclaw config set` inside the sandbox then returns: - -```text -EACCES: permission denied, open '/sandbox/.openclaw/openclaw.json' -``` - -In the default sandbox state, `openclaw.json` is writable by the sandbox user. -If you see this error, use the host-side config command instead: - -```console -$ nemoclaw config set --key --value '' --restart -``` - -Refer to [Commands](commands.md) for the full list of supported configuration keys. - -### OpenClaw dashboard is unreachable after extended uptime on Brev - -After leaving NemoClaw running for an extended period on Brev, the OpenClaw dashboard may return `ERR_CONNECTION_RESET` or fail to load in the browser. -The agent may still respond on messaging channels such as Telegram or Slack while the dashboard is unreachable. - -**Back up your workspace first:** - -Take a snapshot before running onboard to protect your workspace files. - -```console -$ nemoclaw snapshot create -``` - -Re-run onboarding to restore dashboard connectivity: - -```console -$ nemoclaw onboard -``` - -Depending on current sandbox state, onboarding may prompt before recreating resources. - -### Skill install buttons do not work on Brev - -Clicking **Install** on a skill in the OpenClaw gateway dashboard on Brev shows no response or fails silently. - -Skill installation runs against the sandbox environment. -Installing packages on the Brev host does not make them available inside the sandbox. -To install a skill dependency, add it to the sandbox image and rebuild: - -```console -$ nemoclaw rebuild -``` - -After the rebuild completes, return to the Skills page to confirm the skill is ready. From cde44b81eba0446c0d9c4c6f084e0a3beb130f06 Mon Sep 17 00:00:00 2001 From: nvskills-svc-account Date: Thu, 28 May 2026 19:26:32 +0000 Subject: [PATCH 8/8] Attach NVSkills validation signatures Signed-off-by: nvskills-svc-account --- .../nemoclaw-user-agent-skills/BENCHMARK.md | 64 +++++++++++++++++++ .../nemoclaw-user-agent-skills/skill-card.md | 51 +++++++++++++++ .../nemoclaw-user-agent-skills/skill.oms.sig | 1 + skills/nemoclaw-user-get-started/BENCHMARK.md | 64 +++++++++++++++++++ .../nemoclaw-user-get-started/skill-card.md | 51 +++++++++++++++ .../nemoclaw-user-get-started/skill.oms.sig | 1 + 6 files changed, 232 insertions(+) create mode 100644 skills/nemoclaw-user-agent-skills/BENCHMARK.md create mode 100644 skills/nemoclaw-user-agent-skills/skill-card.md create mode 100644 skills/nemoclaw-user-agent-skills/skill.oms.sig create mode 100644 skills/nemoclaw-user-get-started/BENCHMARK.md create mode 100644 skills/nemoclaw-user-get-started/skill-card.md create mode 100644 skills/nemoclaw-user-get-started/skill.oms.sig diff --git a/skills/nemoclaw-user-agent-skills/BENCHMARK.md b/skills/nemoclaw-user-agent-skills/BENCHMARK.md new file mode 100644 index 00000000000..b88bdd36a13 --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/BENCHMARK.md @@ -0,0 +1,64 @@ +# Evaluation Report + +Evaluation of the `nemoclaw-user-agent-skills` skill before publication through NVSkills-Eval. + +This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use. + +## Evaluation Summary + +- Skill: `nemoclaw-user-agent-skills` +- Evaluation date: 2026-05-28 +- NVSkills-Eval profile: `external` +- Overall verdict: PASS +- Tier 3 live agent evaluation: not available in this report + +## Agents Used + +- Tier 3 agent details were not available in this report. + +## Metrics Used + +Reported benchmark dimensions: + +- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. +- Correctness: checks whether the agent follows the expected workflow and produces the correct final output. +- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant. +- Effectiveness: checks whether the agent performs measurably better with the skill than without it. +- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work. + +Underlying evaluation signals used in this run: + +- No Tier 3 evaluation signal details were available in this report. + +## Test Tasks + +Tier 3 evaluation task details were not available in this report. + +## Results + +Tier 3 dimension rollup was not available in this report. + +## Tier 1: Static Validation Summary + +Tier 1 validation passed with observations. NVSkills-Eval ran 9 checks and found 13 total findings. + +Top findings: + +- MEDIUM QUALITY/quality_correctness: Guide-only skill has very little content (8 lines) (`skills/nemoclaw-user-agent-skills/SKILL.md`) +- MEDIUM QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.author' (`skills/nemoclaw-user-agent-skills/SKILL.md`) +- MEDIUM QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.tags' (`skills/nemoclaw-user-agent-skills/SKILL.md`) +- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/nemoclaw-user-agent-skills/SKILL.md`) +- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (`skills/nemoclaw-user-agent-skills/SKILL.md`) + +## Tier 2: Deduplication Summary + +Tier 2 validation passed. NVSkills-Eval ran 2 checks and found 0 total findings. + +Notable observations: + +- Context Deduplication: Collected 2 file(s) +- Inter-Skill Deduplication: Parsed skill 'nemoclaw-user-agent-skills': 298 char description + +## Publication Recommendation + +The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change. diff --git a/skills/nemoclaw-user-agent-skills/skill-card.md b/skills/nemoclaw-user-agent-skills/skill-card.md new file mode 100644 index 00000000000..7441566713b --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/skill-card.md @@ -0,0 +1,51 @@ +## Description:
+Describes the agent skills shipped with NemoClaw and how to access them by cloning the repository.
+ +This skill is ready for commercial/non-commercial use.
+ +## Owner +NVIDIA
+ +### License/Terms of Use:
+Apache 2.0
+## Use Case:
+Developers and engineers using AI coding assistants who need to discover, load, and leverage NemoClaw agent skills for installation, inference, policy management, and operations workflows.
+ +### Deployment Geography for Use:
+Global
+ +## Known Risks and Mitigations:
+Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills.
+Mitigation: Review and scan skill before deployment.
+ +## Reference(s):
+- [NemoClaw Agent Skills for Your AI Coding Assistant](references/agent-skills.md)
+ + +## Skill Output:
+**Output Type(s):** [Configuration instructions, Shell commands]
+**Output Format:** [Markdown with inline bash code blocks]
+**Output Parameters:** [1D]
+**Other Properties Related to Output:** [None]
+ +## Evaluation Tasks:
+Evaluated via NVSkills-Eval (external profile): Tier 1 static validation (9 checks), Tier 2 deduplication (2 checks). 3 evaluation scenarios defined in evals.json.
+ +## Evaluation Metrics Used:
+Reported benchmark dimensions:
+- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
+- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output.
+- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
+- Effectiveness: Checks whether the agent performs measurably better with the skill than without it.
+- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work.
+ + + +## Skill Version(s):
+0.1.0 (source: package.json)
+ +## Ethical Considerations:
+NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
+ +(For Release on NVIDIA Platforms Only)
+Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns [here](https://app.intigriti.com/programs/nvidia/nvidiavdp/detail).
diff --git a/skills/nemoclaw-user-agent-skills/skill.oms.sig b/skills/nemoclaw-user-agent-skills/skill.oms.sig new file mode 100644 index 00000000000..3accb5dd2ee --- /dev/null +++ b/skills/nemoclaw-user-agent-skills/skill.oms.sig @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibmVtb2NsYXctdXNlci1hZ2VudC1za2lsbHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODY3YmEyNTlhZDRhNjA3MjVhZDkzMzljOTYyZDJlYTJiYmYxMmQ4MWVkOTBlZDYzYzVkZmQzOGNlZGEyZmI1NCIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInJlc291cmNlcyI6IFsKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiLAogICAgICAgICJkaWdlc3QiOiAiNTBmZDliNjc5NWVjNzcyOWRlMDkwY2EyZjQyY2M2NjQxYzY5YzIxZDZkOTlmOGI2NTA3MzMxNTU0Mjc4M2ZlYyIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICIwODExMWJiMjRhYzU5Y2YyNWUzMzMxN2MxZDIwYzE1MWI4ZmQyMzRlOGE3MTFmZWExYWEzMTkwNWYwMzk4YThjIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJkaWdlc3QiOiAiMjVjYzJhY2FjZDA0ODk1MjRjZDhlZjQxYTViM2IzYTUzN2JmOTlkOWFiNGQ3M2Y3MTg5M2UzYzI1NjM1NGE1MiIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL2FnZW50LXNraWxscy5tZCIsCiAgICAgICAgImRpZ2VzdCI6ICIyOTQ3ZmRhYmU2YjM0MGI3NWVjZGM2Y2ZiMTEyMTg0NjQwYTdlM2I0NDc2ZDRjNGUyY2NjYzNkNmFjY2Q3ODk5IgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJuYW1lIjogInNraWxsLWNhcmQubWQiLAogICAgICAgICJkaWdlc3QiOiAiNmM4M2Q5ZjVkYjcxZmUzZTdhMjI3ZjI5ZGQ0YjE4MjZlOGE1ZDU0NTMwOTk3NTFiMmQyMjgxYjc5NjJhOTAyZCIKICAgICAgfQogICAgXSwKICAgICJzZXJpYWxpemF0aW9uIjogewogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJpZ25vcmVfcGF0aHMiOiBbCiAgICAgICAgIi5naXQiLAogICAgICAgICIuZ2l0aHViIiwKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0aWdub3JlIgogICAgICBdLAogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZSwKICAgICAgIm1ldGhvZCI6ICJmaWxlcyIKICAgIH0KICB9Cn0=","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMACJwjyhEUdAfq8ybKu471FJDvOYVOz1pTnj91deSewhudL+6huCeUaazxnH8RayPQIwapx9W7+WDXoOUEUaEDq2oFQfQBsxwhdwHGkwcNJdfSo8X/VHweiISGnrsh+UHEAD","keyid":""}]}} \ No newline at end of file diff --git a/skills/nemoclaw-user-get-started/BENCHMARK.md b/skills/nemoclaw-user-get-started/BENCHMARK.md new file mode 100644 index 00000000000..7e2fc1db404 --- /dev/null +++ b/skills/nemoclaw-user-get-started/BENCHMARK.md @@ -0,0 +1,64 @@ +# Evaluation Report + +Evaluation of the `nemoclaw-user-get-started` skill before publication through NVSkills-Eval. + +This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use. + +## Evaluation Summary + +- Skill: `nemoclaw-user-get-started` +- Evaluation date: 2026-05-28 +- NVSkills-Eval profile: `external` +- Overall verdict: PASS +- Tier 3 live agent evaluation: not available in this report + +## Agents Used + +- Tier 3 agent details were not available in this report. + +## Metrics Used + +Reported benchmark dimensions: + +- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. +- Correctness: checks whether the agent follows the expected workflow and produces the correct final output. +- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant. +- Effectiveness: checks whether the agent performs measurably better with the skill than without it. +- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work. + +Underlying evaluation signals used in this run: + +- No Tier 3 evaluation signal details were available in this report. + +## Test Tasks + +Tier 3 evaluation task details were not available in this report. + +## Results + +Tier 3 dimension rollup was not available in this report. + +## Tier 1: Static Validation Summary + +Tier 1 validation passed with observations. NVSkills-Eval ran 9 checks and found 11 total findings. + +Top findings: + +- MEDIUM QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.author' (`skills/nemoclaw-user-get-started/SKILL.md`) +- MEDIUM QUALITY/quality_correctness: SKILL_SPEC recommended field missing: 'metadata.tags' (`skills/nemoclaw-user-get-started/SKILL.md`) +- MEDIUM QUALITY/quality_efficiency: Deeply nested references in windows-preparation.md (`skills/nemoclaw-user-get-started/SKILL.md`) +- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (`skills/nemoclaw-user-get-started/SKILL.md`) +- MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (`skills/nemoclaw-user-get-started/SKILL.md`) + +## Tier 2: Deduplication Summary + +Tier 2 validation passed. NVSkills-Eval ran 2 checks and found 0 total findings. + +Notable observations: + +- Context Deduplication: Collected 5 file(s) +- Inter-Skill Deduplication: Parsed skill 'nemoclaw-user-get-started': 459 char description + +## Publication Recommendation + +The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change. diff --git a/skills/nemoclaw-user-get-started/skill-card.md b/skills/nemoclaw-user-get-started/skill-card.md new file mode 100644 index 00000000000..cf458d3cc3c --- /dev/null +++ b/skills/nemoclaw-user-get-started/skill-card.md @@ -0,0 +1,51 @@ +## Description:
+Installs NemoClaw, launches a sandbox, and runs the first agent prompt.
+ +This skill is ready for commercial/non-commercial use.
+ +## Owner +NVIDIA
+ +### License/Terms of Use:
+Apache 2.0
+## Use Case:
+Developers and engineers installing NemoClaw for the first time, launching a sandboxed OpenClaw agent, and running their first agent prompt.
+ +### Deployment Geography for Use:
+Global
+ +## Known Risks and Mitigations:
+Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills.
+Mitigation: Review and scan skill before deployment.
+ +## Reference(s):
+- [Prerequisites](references/prerequisites.md)
+- [Quickstart Details](references/quickstart-details.md)
+- [Quickstart Hermes](references/quickstart-hermes.md)
+- [Windows Preparation](references/windows-preparation.md)
+ + +## Skill Output:
+**Output Type(s):** [Shell commands, Configuration instructions]
+**Output Format:** [Markdown with inline bash code blocks]
+**Output Parameters:** [1D]
+**Other Properties Related to Output:** [None]
+ +## Evaluation Metrics Used:
+Reported benchmark dimensions:
+- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
+- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output.
+- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
+- Effectiveness: Checks whether the agent performs measurably better with the skill than without it.
+- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work.
+ + + +## Skill Version(s):
+0.1.0 (source: package.json)
+ +## Ethical Considerations:
+NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
+ +(For Release on NVIDIA Platforms Only)
+Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns [here](https://app.intigriti.com/programs/nvidia/nvidiavdp/detail).
diff --git a/skills/nemoclaw-user-get-started/skill.oms.sig b/skills/nemoclaw-user-get-started/skill.oms.sig new file mode 100644 index 00000000000..0279dd3df66 --- /dev/null +++ b/skills/nemoclaw-user-get-started/skill.oms.sig @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibmVtb2NsYXctdXNlci1nZXQtc3RhcnRlZCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNDk5OWVkYTQ1M2E2OTNhMzBmODhkMjdhNjZiMTgwZmEwZDdkN2IyYWI5Zjc0MmU0YzJiY2JjOWNkNDU5Mjg5IgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlVHlwZSI6ICJodHRwczovL21vZGVsX3NpZ25pbmcvc2lnbmF0dXJlL3YxLjAiLAogICJwcmVkaWNhdGUiOiB7CiAgICAicmVzb3VyY2VzIjogWwogICAgICB7CiAgICAgICAgIm5hbWUiOiAiQkVOQ0hNQVJLLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICIzYjY4NjgyMmQ1NWY0ODdhY2I1ZGM0MjJmNTM3OTI0ZjM5MzEyOTlmZDhhMzY1YzZiZmU3YjdlMzUxM2VmNTlmIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAiU0tJTEwubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImYwYmUzZTQ1NWUzNDQ3YTBiYzFkMjUzY2UwZjRlZGE0NWQ4YTQyZmZiNDIyMDE4OGIwMDc0NWJlOGZjZTJlZGQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJldmFscy9ldmFscy5qc29uIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI3NGZiYmNmY2JiZmM4ZDA4YjhiZmIyZDgxZjI5MDJiNTA2MjA1NTkxNTJlYTNhNjMyY2E0ZTQ4ZjEwMTlmMWVhIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9wcmVyZXF1aXNpdGVzLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJkYjUzMjU0MTY5MTg4MjI1MDI4ZDdmMGIyOGY2ZGY5NGE3ZGU5Yzk2ZmE4OTRiZGIxMzI2Yjg0ZDJmNDJlMDA3IgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9xdWlja3N0YXJ0LWRldGFpbHMubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImYyYTMxMWU4NDM5MTMyMzU1NTU4MTg0YzNlOTc3MDdiZDE0N2RmZjliMmI2YWQ1ZGQwYjAzNGI0MTE1ZmY3ZGYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3F1aWNrc3RhcnQtaGVybWVzLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI3ZTUwNGYyYWZmYWNlNWUwMGViOThiZWQyZTdiYmViOGYwOTdmNmVjZWRmZTg5NDIzOWNkMjRhODE5NDE3YWI5IgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy93aW5kb3dzLXByZXBhcmF0aW9uLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJjNDRkODIwNmViODE1MjUzYzJiMTMxOGJkYWE5MDA4OGEzYTAzYjUwMTA0ZmQ1YmYzNjY2MGFmZTQ4NTE1YmVhIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAic2tpbGwtY2FyZC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiNjcyNDE4YTkyYjgyNjY1OGJkZDA5ODU0ZGZiZmJiMGFjYWY0MjY3NDAyNmFmMDhkMTIwYWU2NjU0NDc3YWUxOSIKICAgICAgfQogICAgXSwKICAgICJzZXJpYWxpemF0aW9uIjogewogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJpZ25vcmVfcGF0aHMiOiBbCiAgICAgICAgIi5naXQiLAogICAgICAgICIuZ2l0aHViIiwKICAgICAgICAiLmdpdGlnbm9yZSIsCiAgICAgICAgIi5naXRhdHRyaWJ1dGVzIgogICAgICBdLAogICAgICAibWV0aG9kIjogImZpbGVzIiwKICAgICAgImFsbG93X3N5bWxpbmtzIjogZmFsc2UKICAgIH0KICB9Cn0=","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGYCMQC2vGYDViIpi2lKpoWhDygh8AarnryY8zvuKItp9bdxShQFcExzxFFy9zYMG+MkqYUCMQDL7ai/r88U29yfkn1IhJ1fx+q2ERH5xu4aWyyat/wg7tl8rkWmgI9o8VQuHl9dw30=","keyid":""}]}} \ No newline at end of file