You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<!-- markdownlint-disable MD041 -->
## Summary
NemoClaw now preserves a reachable Docker CLI default, including a
custom `DOCKER_CONFIG`, when `DOCKER_HOST` is unset instead of replacing
it with the first existing socket.
If the default is unreachable, the CLI probes only its bounded
local-socket candidates and selects a fallback only when server-version
evidence identifies one runtime.
## Related Issue
Fixes#8816
## Changes
- Preserve an explicit `DOCKER_HOST` without probing or replacing its
authority.
- Probe the Docker CLI default before local fallbacks so a reachable
Docker Engine remains selected when Docker and Podman sockets coexist.
- Validate each allowlisted fallback for reachability and Docker or
Podman identity. Mixed or unknown fallback identities produce no
automatic override.
- Reuse the existing Docker-compatible server-version classifier from
host preflight instead of creating a second runtime identity rule.
- Preserve a reachable configured `DOCKER_CONTEXT` and its
`DOCKER_CONFIG` directory for Docker commands, and clear the context
only when a verified socket fallback must take precedence.
- Add regression coverage for explicit endpoints, coexistence,
Podman-only hosts, stale sockets, mixed runtimes, unknown engines, and
probe environment filtering.
- Update the system-readiness reference with the default and fallback
authority order.
## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [x] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)
## Quality Gates
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Maintainer review
covered endpoint validation, credential filtering, failure handling, and
runtime authority. The read-only default probe and Docker runner
preserve `DOCKER_CONTEXT` and its `DOCKER_CONFIG` path; fallback probes
and host overrides omit both; selecting a verified fallback clears the
conflicting context; and non-Docker commands receive neither value.
Regression coverage confirms `NVIDIA_INFERENCE_API_KEY` remains filtered
at both boundaries. The maintainer explicitly approved this Docker-only
configuration boundary.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:
## Documentation Writer Review
- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/reference/system-readiness.mdx` documents Docker
default-authority selection with `DOCKER_CONTEXT` and `DOCKER_CONFIG`,
verified local socket fallback, and conflicting context removal.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 982a17d -->
<!-- docs-review-agents-blob-sha: c4923a3 -->
## DGX Station Hardware Evidence
- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:
## Verification
- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: 10
focused regression and security files passed 308 tests on the refreshed
head; CLI and plugin builds and type checks passed; the full pre-commit,
commit-message, and pre-push sequence passed against `upstream/main`.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not required for this
focused CLI change.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [x] `npm run docs` builds without warnings (doc changes only) —
result: the build passed; Fern reported two baseline warnings that it
suppresses unless run with `--warnings`.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
---
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Enhancements**
* Improved Docker runtime detection using configured hosts, Docker CLI
defaults, and eligible local sockets.
* Verifies runtime identity before selecting an endpoint, distinguishing
Docker from Podman and rejecting unknown or conflicting results.
* Improved readiness and profile selection when multiple container
runtimes are available.
* Applies Docker context settings appropriately, clearing them for
selected socket fallbacks while preserving explicit configurations.
* **Documentation**
* Updated system readiness guidance to explain Docker fallback detection
and runtime compatibility behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Senthil Ravichandran <senthilr@nvidia.com>
Copy file name to clipboardExpand all lines: docs/reference/system-readiness.mdx
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,10 +97,14 @@ Do not use `observedAt` as build identity.
97
97
98
98
## Interpret Docker storage
99
99
100
-
The report rejects an unsupported `DOCKER_HOST` before it uses Docker daemon evidence.
100
+
The report rejects an unsupported explicit `DOCKER_HOST` before it uses Docker daemon evidence.
101
101
`host.docker.host_invalid` records whether the configured endpoint is invalid, `host.docker.endpoint_supported` is absent when a configured endpoint is not an absolute local `unix://` socket, and the blocking `host.docker.host_invalid` finding identifies that condition.
102
102
TCP, SSH, relative Unix socket, and unsafe path values do not fall back to the default Docker socket.
103
-
Unset `DOCKER_HOST` continues to use Docker's default local socket.
103
+
When `DOCKER_HOST` is unset, NemoClaw first probes the Docker CLI's selected authority, including `DOCKER_CONTEXT` and its `DOCKER_CONFIG` directory when set, without a host override.
104
+
If that authority is unreachable, NemoClaw probes a bounded set of local Unix sockets and accepts only an endpoint with valid server-version evidence.
105
+
When it selects a fallback socket, NemoClaw clears the unreachable `DOCKER_CONTEXT` so later Docker commands use the selected `DOCKER_HOST`.
106
+
A mixed set of reachable Docker and Podman fallbacks, or a fallback with an unknown server identity, produces no automatic `DOCKER_HOST` override.
107
+
A reachable Podman endpoint remains classified as Podman and does not satisfy the standard Docker runtime requirement.
104
108
105
109
The Docker storage capabilities separate the current host configuration from NemoClaw's supported remediation path.
0 commit comments