Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
15 changes: 15 additions & 0 deletions docs/get-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,24 @@ Use these details when your first-run path needs more control.
curl -fsSL https://www.nvidia.com/nemoclaw.sh | \
NEMOCLAW_NON_INTERACTIVE=1 \
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 \
NEMOCLAW_AGENT=openclaw \
NEMOCLAW_PROVIDER=build \
NVIDIA_INFERENCE_API_KEY=<your-key> \
NEMOCLAW_SANDBOX_NAME=my-gpt-claw \
bash
```

The example uses NVIDIA Endpoints.
Set `NEMOCLAW_AGENT` to `hermes` or `langchain-deepagents-code` to install another agent.
Set `NEMOCLAW_PROVIDER` and the matching credential variable for another provider, then use a sandbox name that does not depend on a previous onboarding session.
To select a specific NemoClaw release, replace `vX.Y.Z` with its versioned release tag.
`NEMOCLAW_INSTALL_REF` is a higher-priority development override, so clear it when pinning a release tag.

```bash
curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_REF= NEMOCLAW_INSTALL_TAG=vX.Y.Z bash
```

Keep both install variables on the `bash` side of the pipeline so the installer can read them.
Do not place `NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1` before `curl`, because the installer process cannot read it there.
Refer to the [Commands reference](../reference/commands#nemoclaw-onboard) for the full non-interactive configuration.
</Accordion>
Expand All @@ -119,6 +129,11 @@ Use these details when your first-run path needs more control.
If the installer adds you to the `docker` group, run the printed `newgrp docker` command before you rerun it.
On macOS, start Docker Desktop or Colima first.

When a coding agent reports that its execution sandbox blocked Docker, use its command-scoped approval flow, if available.
Approve only the exact Docker-dependent command that the coding agent requests to rerun outside the sandbox.
Do not change Docker socket permissions or grant broad host access only to bypass the restriction.
If your organization blocks command-scoped approval, stop the coding-agent setup and contact the administrator who manages coding-agent permissions.

DGX Spark, qualifying Station GB300 hosts, and Windows WSL offer an interactive express-install path that chooses a managed local inference option for the platform.
Station accepts the generic Ubuntu 24.04 ARM64 image and stock DGX OS `7.2.0`, `7.4.0`, or `7.5.0` when a safe, root-owned `/etc/dgx-release` marker identifies `DGX Server for GALAXY-GB300`.
On a qualifying Station, accepting the prompt selects the pinned `nemotron-3-ultra-550b-a55b` managed-vLLM recipe and completes onboarding without more provider, model, policy, or sandbox-name choices.
Expand Down
4 changes: 2 additions & 2 deletions docs/manage-sandboxes/update-sandboxes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash
$$nemoclaw upgrade-sandboxes --check
```

If a support workflow asks you to pass the maintained tag explicitly, set `NEMOCLAW_INSTALL_TAG` on the `bash` side of the install pipeline.
If a support workflow asks you to pass the maintained tag explicitly, clear any inherited `NEMOCLAW_INSTALL_REF` and set `NEMOCLAW_INSTALL_TAG` on the `bash` side of the install pipeline.

```bash
curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_TAG=lkg bash
curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_REF= NEMOCLAW_INSTALL_TAG=lkg bash
```

Before upgrade work, the installer prepares the current NemoClaw CLI without replacing OpenShell and requires a fresh backup of every registered sandbox.
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/commands.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3338,8 +3338,8 @@ Set them before running `$$nemoclaw onboard`.
| `NEMOCLAW_SANDBOX_NAME` | sandbox name | Preferred environment override for the default sandbox. Used by onboarding defaults and host-level commands such as `list`, `status`, `tunnel`, `services`, and `debug`. |
| `NEMOCLAW_SANDBOX` | sandbox name | Alternate spelling of `NEMOCLAW_SANDBOX_NAME`; used when neither a flag nor `NEMOCLAW_SANDBOX_NAME` is set. |
| `SANDBOX_NAME` | sandbox name | Compatibility spelling used after `NEMOCLAW_SANDBOX_NAME` and `NEMOCLAW_SANDBOX`. |
| `NEMOCLAW_INSTALL_REF` | git ref | For internal installer commands: the git ref to install from. Overridden by the `--install-ref` flag. |
| `NEMOCLAW_INSTALL_TAG` | release tag | For internal installer commands: the release tag to install. Defaults to the admin-promoted `lkg` tag when unset. Overridden by the `--install-tag` flag. |
| `NEMOCLAW_INSTALL_REF` | git ref | For internal installer commands: the git ref to install from. A nonempty value takes precedence over `NEMOCLAW_INSTALL_TAG`. Overridden by the `--install-ref` flag. |
| `NEMOCLAW_INSTALL_TAG` | release tag | For internal installer commands: the release tag to install when `NEMOCLAW_INSTALL_REF` is unset or empty. Defaults to the admin-promoted `lkg` tag when unset. Overridden by the `--install-tag` flag. |
| `NEMOCLAW_VLLM_MODEL` | registry slug or Hugging Face model id | Selects the model the managed-vLLM install path serves. Recognised slugs: `qwen3.6-27b`, `qwen3.6-35b-a3b-nvfp4`, `nemotron-3-nano-4b`, `deepseek-v4-flash`, `nemotron-3-ultra-550b-a55b`, `deepseek-r1-distill-70b`. Unset uses the per-platform profile default. The DGX Station express installer sets `nemotron-3-ultra-550b-a55b` explicitly. Gated models (e.g. `deepseek-r1-distill-70b`) require `HF_TOKEN` or `HUGGING_FACE_HUB_TOKEN`. |
| `NEMOCLAW_VLLM_EXTRA_ARGS_JSON` | JSON array of non-blank strings | Appends advanced operator-owned tokens to the managed `vllm serve` command after NemoClaw's registry defaults. Example: `["--max-num-seqs","2"]`. Malformed JSON, non-string tokens, or blank tokens fail before Docker work starts. |
<AgentOnly variant="openclaw">
Expand Down
18 changes: 16 additions & 2 deletions docs/resources/starter-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ Choices:
2. Hermes.
3. LangChain Deep Agents Code.

Use `NEMOCLAW_AGENT=hermes` or `nemohermes onboard` for Hermes.
Use `NEMOCLAW_AGENT=langchain-deepagents-code` or `nemo-deepagents onboard` for Deep Agents.
Set `NEMOCLAW_AGENT=openclaw` for OpenClaw.
Set `NEMOCLAW_AGENT=hermes` for Hermes, or use `nemohermes onboard`.
Set `NEMOCLAW_AGENT=langchain-deepagents-code` for Deep Agents, or use `nemo-deepagents onboard`.

## Hardware and Readiness

Expand All @@ -64,6 +65,16 @@ Use `NEMOCLAW_AGENT=langchain-deepagents-code` or `nemo-deepagents onboard` for
- Offer a user-local alternative only when official documentation supports it for that exact operation.
- Do not silently use user-local Ollama for a system Ollama upgrade when the old system service would remain active.

## Execution Sandbox

- If the coding agent's execution sandbox blocks a Docker command, use its command-scoped approval flow, if available.
- Request permission to rerun only that exact command outside the sandbox.
- Before requesting approval, explain that Docker daemon access can modify containers, images, and host files.
- Do not change Docker socket permissions or request broad host access only to bypass the execution sandbox.
- If the user or managed policy denies approval, stop before the command.
- Explain that `NEMOCLAW_NON_INTERACTIVE=1` removes NemoClaw prompts.
- Explain that `NEMOCLAW_NON_INTERACTIVE=1` does not bypass execution-sandbox permissions.

## Platform-Specific Instructions

After the readiness check, load exactly one matching instruction asset before provider selection:
Expand Down Expand Up @@ -121,6 +132,9 @@ Ask required model, endpoint, credential, and download questions one at a time.
- Collect every choice before running the installer.
- Ask one question at a time for model, endpoint, sandbox name, web search, messaging when the selected agent supports it, policy when no platform-asset install path is selected, credentials, administrator access, and downloads.
- Use non-interactive environment variables whenever supported.
- For installation outside an accepted platform-asset path, set `NEMOCLAW_AGENT` and `NEMOCLAW_PROVIDER` from my selections.
- Use the maintained release unless I request a specific version.
- For a specific version, clear any inherited `NEMOCLAW_INSTALL_REF`, then set `NEMOCLAW_INSTALL_TAG=vX.Y.Z` to its versioned release tag.
- Never leave a command waiting at `Choose [1]:`.
- If a choice cannot be supplied non-interactively, stop before starting and explain the supported alternative.
- The DGX Station asset is the exception for the official third-party-software notice and Express confirmation. Keep those installer prompts visible, wait for the user's response, and do not pre-answer them.
Expand Down
53 changes: 53 additions & 0 deletions test/starter-prompt-docs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,59 @@ describe("starter prompt docs CTA", () => {
).toThrow("use LF line endings");
});

it("names non-interactive install controls and scopes sandboxed Docker approval (#7311)", () => {
const promptSource = readStarterPrompt();
const quickstartSource = read("docs/get-started/quickstart.mdx");
const commandsSource = read("docs/reference/commands.mdx");
const updateSource = read("docs/manage-sandboxes/update-sandboxes.mdx");

for (const variable of ["NEMOCLAW_AGENT", "NEMOCLAW_PROVIDER", "NEMOCLAW_INSTALL_TAG"]) {
expect(promptSource, `starter prompt names ${variable}`).toContain(variable);
expect(quickstartSource, `quickstart names ${variable}`).toContain(variable);
}

expect(promptSource).toContain("NEMOCLAW_AGENT=openclaw");
expect(promptSource).toContain("NEMOCLAW_INSTALL_TAG=vX.Y.Z");
expect(promptSource).toContain("clear any inherited `NEMOCLAW_INSTALL_REF`");
expect(promptSource).toContain(
"Request permission to rerun only that exact command outside the sandbox",
);
expect(promptSource).toContain("`NEMOCLAW_NON_INTERACTIVE=1` removes NemoClaw prompts");
expect(promptSource).toContain(
"`NEMOCLAW_NON_INTERACTIVE=1` does not bypass execution-sandbox permissions",
);
expect(promptSource).toContain(
"Do not change Docker socket permissions or request broad host access only to bypass the execution sandbox.",
);
expect(promptSource).not.toContain("or another approved host command");
expect(quickstartSource).toContain(
"curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_REF= NEMOCLAW_INSTALL_TAG=vX.Y.Z bash",
);
expect(quickstartSource).toContain(
"Approve only the exact Docker-dependent command that the coding agent requests",
);
expect(quickstartSource).toContain(
"Do not change Docker socket permissions or grant broad host access only to bypass the restriction.",
);
expect(promptSource).not.toContain("## Codex Execution Sandbox");
expect(quickstartSource).not.toContain("When Codex reports");
expect(quickstartSource).not.toContain("NEMOCLAW_INSTALL_TAG=vX.Y.Z curl");
expect(quickstartSource).not.toContain(
"https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_TAG=vX.Y.Z bash",
);
expect(commandsSource).toContain(
"A nonempty value takes precedence over `NEMOCLAW_INSTALL_TAG`.",
);
expect(updateSource).toContain(
"curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_REF= NEMOCLAW_INSTALL_TAG=lkg bash",
);
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
expect(updateSource).not.toContain(
"https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_TAG=lkg bash",
);
expect(promptSource).not.toContain("NEMOCLAW_INSTALL_TAG=<git-ref>");
expect(quickstartSource).not.toContain("NEMOCLAW_INSTALL_TAG=<git-ref>");
});

it("rejects missing or stale generated snippets and accepts the current output (#5048)", () => {
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-starter-prompt-"));
const generatedPath = path.join(tempDir, "StarterPrompt.generated.mdx");
Expand Down
Loading