Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7299bec
feat(installer): prepare DGX Station host prerequisites
ericksoa Jul 16, 2026
35c26d3
fix(installer): harden station host preparation
ericksoa Jul 16, 2026
9763bff
test(installer): cover station resume symlinks
ericksoa Jul 16, 2026
8e5fb90
test(installer): cover station resume boundaries
ericksoa Jul 16, 2026
34ac3fb
fix(installer): secure station bootstrap state
ericksoa Jul 16, 2026
c56f6c5
fix(installer): recheck workloads before runtime changes
ericksoa Jul 16, 2026
88d1156
test(installer): prove Station helper ships in bootstrap
ericksoa Jul 16, 2026
7c2ee15
ci: retry credentialed e2e after runner loss
ericksoa Jul 16, 2026
80fdb0a
fix(installer): constrain Docker runtime repair
ericksoa Jul 16, 2026
fb2be36
test(installer): guard Station project assignment
ericksoa Jul 16, 2026
fb6adef
fix(installer): complete Station GPU prerequisites
ericksoa Jul 16, 2026
c1edd7b
fix(installer): preserve Station host policies
ericksoa Jul 16, 2026
b2230f9
fix(installer): persist Station CDI lifecycle
ericksoa Jul 16, 2026
26eef09
fix(installer): enforce DGX Station preparation boundaries
senthilr-nv Jul 16, 2026
c5e6ab8
fix(installer): tighten Station host safety gates
senthilr-nv Jul 16, 2026
f3c6f13
Merge remote-tracking branch 'upstream/main' into feat/dgx-station-ho…
senthilr-nv Jul 16, 2026
81c80f3
fix(installer): fail closed on Station CDI refresh
senthilr-nv Jul 16, 2026
7304a11
merge: refresh Station host preparation onto main
senthilr-nv Jul 16, 2026
01ddd1f
fix(installer): avoid Docker restart on workload race
senthilr-nv Jul 16, 2026
0e36663
Merge remote-tracking branch 'origin/main' into feat/dgx-station-host…
ericksoa Jul 16, 2026
ee5d6d3
fix(installer): clarify Station GPU probe contract
ericksoa Jul 16, 2026
4078165
Merge remote-tracking branch 'origin/main' into feat/dgx-station-host…
ericksoa Jul 16, 2026
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
23 changes: 23 additions & 0 deletions docs/get-started/prerequisites.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,29 @@ If the group change is not active in the current shell, the installer exits with
If you choose the native Linux Ollama install path, the onboard wizard also requires `zstd` for Ollama archive extraction.
The installer also requires `strings` from `binutils` to verify the OpenShell binary before it continues with OpenShell install work.

On a DGX Station GB300 running the generic Ubuntu 24.04 ARM64 image, accepting express install prepares the host with NVIDIA open driver `610.43.02`, Docker CE `29.6.1` with Buildx, and NVIDIA Container Toolkit `1.19.1`.
DGX OS, NVIDIA BaseOS images, and other Station generations are outside this automatic preparation boundary and stop before host preparation.
On those systems, set `NEMOCLAW_PROVIDER` or `NEMOCLAW_NO_EXPRESS=1` explicitly to continue without Station host automation.
The preparation probes package and runtime state first, reuses exact matches, and installs only missing pinned packages, including the NVIDIA Container Toolkit libraries and `nvidia-ctk` CLI.
It permits only the reviewed factory transition from `dkms` `3.0.11-1ubuntu13` to `1:3.4.0-1ubuntu1`.
After reboot, preparation enables NVIDIA's packaged CDI refresh path and service, requires the `nvidia.com/gpu=all` device, and verifies it with a real container launch.
If the packaged refresh fails or does not produce that device, preparation prints service diagnostics and stops for administrator repair.
It does not bypass the packaged lifecycle with direct CDI generation.
If the `docker --gpus all` acceptance probe fails, preparation registers the NVIDIA Docker runtime only when `docker info` diagnoses that runtime as absent; any other launch failure stops without changing daemon configuration.
If registration or a post-change acceptance probe fails, preparation restores the prior Docker daemon configuration; if restoration fails, it reports the backup path and stops.
After successful registration, the runtime remains configured until the same acceptance probe succeeds through a replacement Docker and NVIDIA runtime integration.
It requires Secure Boot to be disabled, matching headers for the running kernel, at least 20 GiB free on the root filesystem, and no active agent, inference, or Docker workloads.
It also stops when systemd reports a failed unit unless the unit matches an exact, condition-qualified state from the generic Station image: the pinned OEM `cloud-init` telemetry failure, a network-wait failure while current network health is established, masked `fwupd`, or an SSSD socket on a host without SSSD configuration.
Any other failed unit blocks preparation for administrator review.
It does not install a host CUDA toolkit or Docker Compose.
If any other existing prerequisite version differs, preparation stops instead of changing it automatically.
After changing pinned packages, the installer exits with status `10`; reboot, sign in, and run the printed command, which pins the exact accepted NemoClaw commit before resuming express setup.

<Warning title="DGX Station Support Status">
DGX Station remains Deferred.
Full NemoClaw onboarding with this recipe has not completed end-to-end validation on physical DGX Station hardware.
</Warning>

<Warning title="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.
Expand Down
22 changes: 19 additions & 3 deletions docs/get-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,15 @@ 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.

DGX Spark, DGX Station, and Windows WSL offer an interactive express-install path that chooses a managed local inference option for the platform.
On DGX Station, accepting the express prompt selects the pinned `nemotron-3-ultra-550b-a55b` managed-vLLM recipe and completes onboarding without more provider, model, policy, or sandbox-name choices.
DGX Spark, Station GB300 hosts running the generic Ubuntu 24.04 ARM64 image, and Windows WSL offer an interactive express-install path that chooses a managed local inference option for the platform.
On that Station configuration, accepting the express prompt selects the pinned `nemotron-3-ultra-550b-a55b` managed-vLLM recipe and completes onboarding without more provider, model, policy, or sandbox-name choices.
DGX OS, NVIDIA BaseOS images, and other Station generations stop before host preparation.
Set `NEMOCLAW_PROVIDER` or `NEMOCLAW_NO_EXPRESS=1` explicitly to continue on an unqualified Station without host automation.
It probes the pinned driver, Docker, Buildx, and NVIDIA Container Toolkit versions, reuses exact matches, installs missing pins, and permits only the reviewed factory `dkms` transition.
It establishes NVIDIA CDI through the packaged refresh service, then proves both CDI and `--gpus all` with real container launches.
If the packaged refresh fails or does not advertise `nvidia.com/gpu=all`, preparation prints service diagnostics and stops for administrator repair instead of generating CDI configuration directly.
After it changes pinned packages, the installer exits with status `10` at the required reboot boundary; reboot, sign in, and run the printed exact-commit command to resume the accepted recipe without another prompt.
This automation does not change Station's Deferred support status; physical end-to-end validation remains open.
Pass `--station-deepseek` to use DeepSeek V4 Flash for a Station demo instead.
Refer to [Platform Support](../reference/platform-support) and [Choose an Inference Provider](../inference/learn-and-choose/choose-inference-provider) for the current platform behavior.

Expand Down Expand Up @@ -186,10 +193,19 @@ Use these details when your first-run path needs more control.
curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash
```

On DGX Spark, DGX Station, and Windows WSL, interactive installation offers express install after you accept the third-party software notice.
On DGX Spark, Station GB300 hosts running the generic Ubuntu 24.04 ARM64 image, and Windows WSL, interactive installation 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.
DGX Spark uses managed vLLM with `qwen3.6-35b-a3b-nvfp4` by default.
DGX Station express install explicitly selects `nemotron-3-ultra-550b-a55b` instead of the Station managed-vLLM profile default, `deepseek-v4-flash`, and discloses the approximately `352 GB` model download before confirmation.
Before onboarding, the Station path requires Station GB300 with the generic Ubuntu 24.04 ARM64 image and checks for NVIDIA open driver `610.43.02`, Docker CE `29.6.1` with Buildx, and NVIDIA Container Toolkit `1.19.1`.
DGX OS, NVIDIA BaseOS images, and other Station generations are outside this automatic preparation boundary.
Set `NEMOCLAW_PROVIDER` or `NEMOCLAW_NO_EXPRESS=1` to continue without Station host automation.
Preparation reuses exact versions, installs missing pinned packages, permits only the reviewed `dkms` transition from `3.0.11-1ubuntu13` to `1:3.4.0-1ubuntu1`, and refuses every other mismatched version.
It requires the packaged NVIDIA CDI refresh service to advertise `nvidia.com/gpu=all`, and verifies CDI and `--gpus all` with real container launches.
If the packaged refresh fails or omits that device, preparation prints service diagnostics and stops for administrator repair instead of generating CDI configuration directly.
If NVIDIA Docker runtime registration or a post-change acceptance probe fails, preparation restores the prior Docker daemon configuration.
Changing pinned packages exits with status `10` for a reboot; after you sign in and run the printed exact-commit command, the accepted express recipe resumes without another prompt.
This automation does not change Station's Deferred support status; physical end-to-end validation remains open.
To select DeepSeek V4 Flash while retaining the one-confirmation Station express flow, run `curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --station-deepseek`.
Unless `NEMOCLAW_POLICY_TIER` is set, express install applies policy in `suggested` mode with the `balanced` tier, including the base sandbox policy and supported package, model, web-search, and local-inference presets.
Express install uses `my-assistant` as the sandbox name across all platforms unless `NEMOCLAW_SANDBOX_NAME` is set.
Expand Down
5 changes: 3 additions & 2 deletions docs/reference/troubleshooting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2271,7 +2271,8 @@ When shared gateway cleanup would be unsafe, follow the targeted destroy or gate

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`.
Outside Station Express, the standard NemoClaw installer detects this gap before onboarding, first tries to enable the NVIDIA CDI refresh systemd units, and can fall back to generating the spec directly with `nvidia-ctk`.
Station Express requires the packaged refresh lifecycle to work; if it fails or omits `nvidia.com/gpu=all`, inspect `nvidia-cdi-refresh.service`, repair it, and rerun the printed exact-commit install command.
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.
Expand All @@ -2286,7 +2287,7 @@ nvidia-ctk cdi list
$$nemoclaw onboard
```

If the refresh units are unavailable or do not generate CDI devices, generate the spec directly:
For other native Linux installations, if the refresh units are unavailable or do not generate CDI devices, generate the spec directly:

```bash
sudo mkdir -p /etc/cdi
Expand Down
4 changes: 4 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ exec_installer_from_ref() {
legacy_script="${source_root}/install.sh"

if has_payload_marker "$payload_script"; then
# The public curl|bash boundary deliberately executes from the complete
# selected-ref checkout, not from a standalone payload file. Installer
# helpers beside scripts/install.sh (including DGX Station preparation)
# are therefore staged from the same ref before payload execution.
verify_downloaded_script "$payload_script" "versioned installer"
NEMOCLAW_INSTALL_REF="$ref" NEMOCLAW_INSTALL_TAG="$ref" NEMOCLAW_BOOTSTRAP_PAYLOAD=1 \
bash "$payload_script" "$@"
Expand Down
1 change: 1 addition & 0 deletions scripts/checks/vitest-project-overlap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const INSTALLER_INTEGRATION_TESTS = new Set([
"test/install-openshell-version-check.test.ts",
"test/install-preflight-docker-bootstrap.test.ts",
"test/install-preflight.test.ts",
"test/install-station-host-preparation.test.ts",
]);

function normalizeRepoPath(file: string): string {
Expand Down
Loading
Loading