Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .agents/skills/nemoclaw-user-configure-inference/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,10 @@ Managed vLLM records the model returned by `/v1/models` and uses runtime metadat
If the host reboots and the `nemoclaw-vllm` container is stopped, NemoClaw restarts the managed vLLM container during recovery instead of requiring a fresh onboarding run.
NIM uses the same chat-completions API path restriction as vLLM.

On Linux Docker-driver GPU sandboxes, NemoClaw keeps local inference on the OpenShell bridge route and verifies `https://inference.local/v1/models` from inside the sandbox runtime after the sandbox reaches ready.
It treats only a 2xx response as success because that path includes the proxy authentication rewrite the agent uses.
If the runtime route fails, onboarding reports the endpoint and recovery steps before the first agent prompt.

For registry slugs, Hugging Face token requirements, NGC login behavior, and non-interactive examples, refer to [Inference Options](references/inference-options.md#setup-details-for-local-and-compatible-providers).

## Verify the Configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,11 +234,11 @@ Messaging sessions such as WhatsApp pairing can remain mutable by design so they

### Writable Paths

The agent has read-write access to `/sandbox`, `/tmp`, and `/dev/null`.
The agent has read-write access to `/sandbox`, `/tmp`, `/dev/null`, and `/dev/pts`.

| Aspect | Detail |
|---|---|
| Default | `/sandbox` (agent workspace), `/tmp` (temporary files), `/dev/null`. |
| Default | `/sandbox` (agent workspace), `/tmp` (temporary files), `/dev/null`, and `/dev/pts` (the devpts pseudo-terminal directory, required so PTY-based tools such as `tmux`, `script`, and interactive shells can allocate a terminal). |
| 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`. |
Comment on lines +237 to 244

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Autogenerated skill file should not be edited directly.

Per coding guidelines, files matching .agents/skills/nemoclaw-user-*/*.md are autogenerated and must never be edited directly. The PR objectives mention "Refresh generated NemoClaw user skills from the current docs source" — these changes should originate from the source docs (e.g., docs/) and be regenerated via scripts/docs-to-skills.py, not manually applied to the skill file.

If the source docs have been updated with the /dev/pts content, regenerate the skills. If not, update the source docs first, then regenerate.

Based on coding guidelines: "Autogenerated user skills under .agents/skills/nemoclaw-user-*/*.md must never be edited directly"

🧰 Tools
🪛 LanguageTool

[style] ~243-~243: Try using a synonym here to strengthen your writing.
Context: ...rite to log directories. Adding /home gives access to other user directories. | | R...

(GIVE_PROVIDE)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/nemoclaw-user-configure-security/references/best-practices.md
around lines 237 - 244, The change modifies an autogenerated skill file
(.agents/skills/nemoclaw-user-configure-security/references/best-practices.md)
which must not be edited directly; instead, update the canonical docs under
docs/ to include the /dev/pts content (or revert your manual edit), then
regenerate the skill YAML/MD using scripts/docs-to-skills.py so the change is
produced automatically; finally replace the manual edit with the regenerated
output and commit that—do not keep direct edits to files matching
.agents/skills/nemoclaw-user-*/*.md.

Source: Coding guidelines

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ openshell sandbox upload "$SANDBOX" "$BACKUP_DIR/platforms/" /sandbox/.hermes/pl
To back up every registered, running sandbox in one step, run `nemoclaw backup-all`.
This is the recommended host-installed command before broad maintenance such as `nemoclaw update`, `nemoclaw upgrade-sandboxes`, or an OpenShell gateway migration.

```console
$ nemoclaw backup-all
```bash
nemoclaw backup-all
```

`backup-all` walks the sandboxes registered on the host, creates a snapshot for each running sandbox, and stores the snapshot bundles under `~/.nemoclaw/rebuild-backups/<name>/`.
Expand Down
21 changes: 21 additions & 0 deletions .agents/skills/nemoclaw-user-overview/references/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
# Release Notes

import { AgentOnly } from "../_components/AgentGuide";

NVIDIA NemoClaw is available in early preview starting March 16, 2026.
Use this page to track the highlights of the latest release.
For more detailed release notes, refer to the [NemoClaw GitHub announcements](https://github.com/NVIDIA/NemoClaw/discussions/categories/announcements?discussions_q=is%3Aopen+category%3AAnnouncements).

## v0.0.62

NemoClaw v0.0.62 improves onboarding reliability for GPU sandboxes, local inference, gateway pairing, Hermes configuration, and release validation:

- GPU sandbox creation and local inference checks now match the runtime paths agents use. Docker-driver recreation prefers NVIDIA CDI when the host advertises a CDI spec, Jetson/Tegra sandboxes inherit the device-node group needed for CUDA, and local GPU inference is verified through `inference.local` from inside the sandbox runtime before onboarding reports success. For more information, refer to Use a Local Inference Server (use the `nemoclaw-user-configure-inference` skill).
- Onboarding and recovery fail earlier and stay quieter on common host drift. NemoClaw no longer requires `nc` for port readiness checks, clears pending gateway scope approvals after onboard and recover, preserves install-version fingerprints in package installs without `.git`, and suppresses fresh-sandbox provider cleanup probe noise. For more information, refer to NemoClaw CLI Commands Reference (use the `nemoclaw-user-reference` skill).

<AgentOnly variant="openclaw">

- Sandbox state and OpenClaw operations recover better after direct in-sandbox changes. Startup restores mutable OpenClaw config permissions after a raw in-sandbox `openclaw doctor --fix`, and the host CLI can now run `nemoclaw <name> agents list` alongside the existing agent add and delete passthrough commands. For more information, refer to NemoClaw CLI Commands Reference (use the `nemoclaw-user-reference` skill).
- WhatsApp pairing uses the compact QR renderer used by the real pairing flow. For more information, refer to Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill).

</AgentOnly>
<AgentOnly variant="hermes">

- Hermes setup exposes clearer operator state. Generated Hermes config records the upstream NemoClaw provider and model while still presenting Hermes as a custom proxy route, the provider menu labels Hermes choices more clearly, and NemoClaw rejects the reserved Hermes API port as a dashboard port before sandbox creation. For more information, refer to Messaging Channels (use the `nemoclaw-user-manage-sandboxes` skill).

</AgentOnly>

## v0.0.61

NemoClaw v0.0.61 improves sandbox network visibility, onboarding recovery, Hermes isolation, local inference restart behavior, and release validation:
Expand Down
20 changes: 20 additions & 0 deletions .agents/skills/nemoclaw-user-reference/references/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,12 @@ Use `--control-ui-port <N>` 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.

<AgentOnly variant="hermes">

For Hermes sandboxes, do not use port `8642`; NemoClaw reserves it for the Hermes OpenAI-compatible API and rejects it as a dashboard port before sandbox creation.

</AgentOnly>

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.
Expand Down Expand Up @@ -377,6 +383,8 @@ Use `--gpu` to require GPU passthrough and fail fast if an NVIDIA GPU is not det
Use `--sandbox-gpu` or `--no-sandbox-gpu` to control only direct NVIDIA GPU access inside the sandbox.
Use `--sandbox-gpu --sandbox-gpu-device <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.
When this compatibility path recreates the Docker container, NemoClaw uses an available NVIDIA CDI spec before falling back to Docker `--gpus all` or the NVIDIA runtime.
On Jetson/Tegra hosts, it also adds the host group IDs that own `/dev/nvmap` and `/dev/nvhost-*` so the sandbox user can initialize CUDA.
If the patch fails, onboarding keeps diagnostics and prints a manual cleanup command rather than deleting the failed sandbox automatically.

Prerequisites:
Expand Down Expand Up @@ -1109,6 +1117,18 @@ nemoclaw my-assistant skill remove my-skill
Use the skill name from the `SKILL.md` frontmatter, not the local directory name.
Skill names must contain only alphanumeric characters, dots, hyphens, and underscores, and cannot be `.` or `..`.

### `nemoclaw <name> agents list`

List the OpenClaw agents configured in the sandbox.
This is a thin pass-through to `openclaw agents list` via `openshell sandbox exec`; the OpenClaw CLI owns the gateway `agents.list` call, output formatting, and binding summaries.
Flags accepted by the in-sandbox CLI (`--json`, `--bindings`) are forwarded verbatim.

```bash
nemoclaw my-assistant agents list
nemoclaw my-assistant agents list --json
nemoclaw my-assistant agents list --bindings
```

### `nemoclaw <name> agents add`

Run the OpenClaw interactive add wizard inside the sandbox.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,13 @@ Hermes sandboxes use an agent-specific baseline policy in `agents/hermes/policy-

| Path | Access |
|---|---|
| `/sandbox`, `/tmp`, `/dev/null` | Read-write |
| `/sandbox`, `/tmp`, `/dev/null`, `/dev/pts` | Read-write |
| `/usr`, `/lib`, `/proc`, `/dev/urandom`, `/app`, `/etc`, `/var/log` | Read-only |

`/dev/pts` is the pseudo-terminal (devpts) directory.
It is writable so PTY-based tools (`tmux`, `script`, and interactive shells) can allocate a terminal.
Without it, those tools fail with `fork failed: Permission denied`.

The sandbox process runs as a dedicated `sandbox` user and group.
Landlock LSM enforcement applies on a best-effort basis.

Expand Down
21 changes: 21 additions & 0 deletions docs/about/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,31 @@ keywords: ["nemoclaw release notes", "nemoclaw changelog"]
content:
type: "reference"
---
import { AgentOnly } from "../_components/AgentGuide";

NVIDIA NemoClaw is available in early preview starting March 16, 2026.
Use this page to track the highlights of the latest release.
For more detailed release notes, refer to the [NemoClaw GitHub announcements](https://github.com/NVIDIA/NemoClaw/discussions/categories/announcements?discussions_q=is%3Aopen+category%3AAnnouncements).

## v0.0.62

NemoClaw v0.0.62 improves onboarding reliability for GPU sandboxes, local inference, gateway pairing, Hermes configuration, and release validation:

- GPU sandbox creation and local inference checks now match the runtime paths agents use. Docker-driver recreation prefers NVIDIA CDI when the host advertises a CDI spec, Jetson/Tegra sandboxes inherit the device-node group needed for CUDA, and local GPU inference is verified through `inference.local` from inside the sandbox runtime before onboarding reports success. For more information, refer to [Use a Local Inference Server](../inference/use-local-inference).
- Onboarding and recovery fail earlier and stay quieter on common host drift. NemoClaw no longer requires `nc` for port readiness checks, clears pending gateway scope approvals after onboard and recover, preserves install-version fingerprints in package installs without `.git`, and suppresses fresh-sandbox provider cleanup probe noise. For more information, refer to [NemoClaw CLI Commands Reference](../reference/commands).

<AgentOnly variant="openclaw">

- Sandbox state and OpenClaw operations recover better after direct in-sandbox changes. Startup restores mutable OpenClaw config permissions after a raw in-sandbox `openclaw doctor --fix`, and the host CLI can now run `$$nemoclaw <name> agents list` alongside the existing agent add and delete passthrough commands. For more information, refer to [NemoClaw CLI Commands Reference](../reference/commands).
- WhatsApp pairing uses the compact QR renderer used by the real pairing flow. For more information, refer to [Messaging Channels](../manage-sandboxes/messaging-channels).

</AgentOnly>
<AgentOnly variant="hermes">

- Hermes setup exposes clearer operator state. Generated Hermes config records the upstream NemoClaw provider and model while still presenting Hermes as a custom proxy route, the provider menu labels Hermes choices more clearly, and NemoClaw rejects the reserved Hermes API port as a dashboard port before sandbox creation. For more information, refer to [Messaging Channels](../manage-sandboxes/messaging-channels).

</AgentOnly>

## v0.0.61

NemoClaw v0.0.61 improves sandbox network visibility, onboarding recovery, Hermes isolation, local inference restart behavior, and release validation:
Expand Down
4 changes: 4 additions & 0 deletions docs/inference/use-local-inference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ Managed vLLM records the model returned by `/v1/models` and uses runtime metadat
If the host reboots and the `nemoclaw-vllm` container is stopped, NemoClaw restarts the managed vLLM container during recovery instead of requiring a fresh onboarding run.
NIM uses the same chat-completions API path restriction as vLLM.

On Linux Docker-driver GPU sandboxes, NemoClaw keeps local inference on the OpenShell bridge route and verifies `https://inference.local/v1/models` from inside the sandbox runtime after the sandbox reaches ready.
It treats only a 2xx response as success because that path includes the proxy authentication rewrite the agent uses.
If the runtime route fails, onboarding reports the endpoint and recovery steps before the first agent prompt.
Comment on lines +214 to +216

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify that the runtime probe can be skipped when curl is unavailable.

The text currently reads as unconditional verification, but onboarding can soft-skip this check for minimal images that lack curl (probe-tool-unavailable) and continue. Please make this conditional so operator expectations match behavior.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/inference/use-local-inference.mdx` around lines 214 - 216, Update the
paragraph describing the runtime verification to state it is conditional:
clarify that the onboard runtime probe of https://inference.local/v1/models is
performed when the sandbox runtime has probe tooling (e.g., curl) available, but
onboarding will soft-skip the probe and continue for minimal images that lack
curl (reported as probe-tool-unavailable) rather than failing; keep the note
that only a 2xx response is treated as success and that, if the probe runs and
fails, onboarding will report the endpoint and recovery steps before the first
agent prompt.


For registry slugs, Hugging Face token requirements, NGC login behavior, and non-interactive examples, refer to [Inference Options](inference-options#setup-details-for-local-and-compatible-providers).

## Verify the Configuration
Expand Down
4 changes: 4 additions & 0 deletions docs/reference/commands-nemohermes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ Use `--control-ui-port <N>` 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.

For Hermes sandboxes, do not use port `8642`; NemoClaw reserves it for the Hermes OpenAI-compatible API and rejects it as a dashboard port before sandbox creation.

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.
Expand Down Expand Up @@ -325,6 +327,8 @@ Use `--gpu` to require GPU passthrough and fail fast if an NVIDIA GPU is not det
Use `--sandbox-gpu` or `--no-sandbox-gpu` to control only direct NVIDIA GPU access inside the sandbox.
Use `--sandbox-gpu --sandbox-gpu-device <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.
When this compatibility path recreates the Docker container, NemoClaw uses an available NVIDIA CDI spec before falling back to Docker `--gpus all` or the NVIDIA runtime.
On Jetson/Tegra hosts, it also adds the host group IDs that own `/dev/nvmap` and `/dev/nvhost-*` so the sandbox user can initialize CUDA.
If the patch fails, onboarding keeps diagnostics and prints a manual cleanup command rather than deleting the failed sandbox automatically.

Prerequisites:
Expand Down
8 changes: 8 additions & 0 deletions docs/reference/commands.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,12 @@ Use `--control-ui-port <N>` 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.

<AgentOnly variant="hermes">

For Hermes sandboxes, do not use port `8642`; NemoClaw reserves it for the Hermes OpenAI-compatible API and rejects it as a dashboard port before sandbox creation.

</AgentOnly>

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.
Expand Down Expand Up @@ -386,6 +392,8 @@ Use `--gpu` to require GPU passthrough and fail fast if an NVIDIA GPU is not det
Use `--sandbox-gpu` or `--no-sandbox-gpu` to control only direct NVIDIA GPU access inside the sandbox.
Use `--sandbox-gpu --sandbox-gpu-device <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.
When this compatibility path recreates the Docker container, NemoClaw uses an available NVIDIA CDI spec before falling back to Docker `--gpus all` or the NVIDIA runtime.
On Jetson/Tegra hosts, it also adds the host group IDs that own `/dev/nvmap` and `/dev/nvhost-*` so the sandbox user can initialize CUDA.
If the patch fails, onboarding keeps diagnostics and prints a manual cleanup command rather than deleting the failed sandbox automatically.

Prerequisites:
Expand Down
Loading