docs(reference): document Docker-driver compute path alongside legacy k3s#3433
docs(reference): document Docker-driver compute path alongside legacy k3s#3433latenighthackathon wants to merge 1 commit into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughDocs updated to describe a split sandbox runtime topology: on the Docker-driver path the sandbox runs as a sibling Docker container alongside the gateway and export pipeline; on the legacy embedded k3s path the sandbox runs as a pod inside the gateway-embedded k3s cluster. Prerequisites text and storage-driver note adjusted accordingly. ChangesSplit Sandbox Topology Documentation
🎯 2 (Simple) | ⏱️ ~10 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
docs/reference/architecture.md (3)
156-159: ⚡ Quick winApply code formatting to technical terms in table.
Technical identifiers like
k3s,Landlock,seccomp, andnetnsshould use inline code formatting even within table cells for consistency.Suggested fix
-| Gateway container | Docker container | Hosts the credential store and the L7 proxy. On the legacy k3s path, also hosts the embedded k3s control plane. | -| k3s (legacy path only) | Process tree inside the gateway container | Kubernetes control plane that schedules the sandbox pod. | -| Sandbox container (Docker driver path) | Sibling Docker container managed by the gateway | Runs the OpenClaw agent and the NemoClaw plugin under Landlock + seccomp + netns. | -| Sandbox pod (legacy k3s path) | Pod in the embedded k3s cluster | Runs the OpenClaw agent and the NemoClaw plugin under Landlock + seccomp + netns. | +| Gateway container | Docker container | Hosts the credential store and the L7 proxy. On the legacy `k3s` path, also hosts the embedded `k3s` control plane. | +| `k3s` (legacy path only) | Process tree inside the gateway container | Kubernetes control plane that schedules the sandbox pod. | +| Sandbox container (Docker driver path) | Sibling Docker container managed by the gateway | Runs the OpenClaw agent and the NemoClaw plugin under `Landlock` + `seccomp` + `netns`. | +| Sandbox pod (legacy `k3s` path) | Pod in the embedded `k3s` cluster | Runs the OpenClaw agent and the NemoClaw plugin under `Landlock` + `seccomp` + `netns`. |As per coding guidelines, CLI commands, file paths, flags, parameter names, and values must use inline code formatting.
🤖 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/reference/architecture.md` around lines 156 - 159, Update the table rows so all technical identifiers are formatted as inline code: wrap terms like `Gateway container` entries' `k3s` (in "k3s (legacy path only)"), `Landlock`, `seccomp`, and `netns` in backticks within their respective table cells (also apply to any CLI commands, file paths, flags, parameter names, or values present in the same rows), e.g., modify the "k3s (legacy path only)" row and both "Sandbox container (Docker driver path)" and "Sandbox pod (legacy k3s path)" descriptions to use inline code formatting for those terms to meet the coding guidelines.
93-93: ⚡ Quick winApply code formatting to technical term.
The term
k3sshould use inline code formatting for consistency with other technical identifiers in the documentation.Suggested fix
-The sandbox runs as a sibling Docker container or as a pod inside an embedded k3s cluster, depending on the host platform. +The sandbox runs as a sibling Docker container or as a pod inside an embedded `k3s` cluster, depending on the host platform.As per coding guidelines, CLI commands, file paths, flags, parameter names, and values must use inline code formatting.
🤖 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/reference/architecture.md` at line 93, Replace the plain text occurrence of the technical term k3s in the sentence inside the architecture doc with inline code formatting (e.g., `k3s`) so it matches the project's guideline for CLI/technical identifiers; update the phrase "embedded k3s cluster" to "embedded `k3s` cluster" where it appears.
101-102: ⚡ Quick winFix passive voice and apply code formatting to technical terms.
Line 102 uses passive voice ("are replaced by"), which violates the active voice requirement. Additionally,
k3sand the technical security terms should use inline code formatting.Suggested fix
-The diagram below shows the legacy k3s path. -On the Docker driver path, the embedded k3s cluster and the sandbox pod are replaced by a sibling Docker container that hosts the OpenClaw agent under the same Landlock, seccomp, and netns confinement. +The diagram below shows the legacy `k3s` path. +On the Docker driver path, a sibling Docker container replaces the embedded `k3s` cluster and sandbox pod, hosting the OpenClaw agent under the same `Landlock`, `seccomp`, and `netns` confinement.As per coding guidelines, active voice is required, and CLI commands, file paths, flags, parameter names, and values must use inline code formatting.
🤖 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/reference/architecture.md` around lines 101 - 102, Rewrite the sentence to use active voice and apply inline code formatting to technical terms: change "On the Docker driver path, the embedded k3s cluster and the sandbox pod are replaced by a sibling Docker container that hosts the OpenClaw agent under the same Landlock, seccomp, and netns confinement." to an active construction that explicitly names the actor (e.g., "The Docker driver replaces the embedded `k3s` cluster and the sandbox pod with a sibling Docker container that hosts the `OpenClaw` agent under the same `Landlock`, `seccomp`, and `netns` confinement.")—ensure `k3s`, `OpenClaw`, `Landlock`, `seccomp`, and `netns` are formatted as inline code and prefer "replaces" (active verb) instead of passive phrasing.
🤖 Prompt for all review comments with 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.
Inline comments:
In `@docs/get-started/prerequisites.md`:
- Line 35: The paragraph on sandbox image memory should be rewritten so each
sentence is on its own line: split the existing six-sentence block into six
separate lines, preserving the original wording and order (sentences about image
size, concurrent processes: Docker daemon/OpenShell gateway/sandbox runtime,
pipeline buffering decompressed layers in memory, OOM killer on machines <8 GB,
recommendation to configure at least 8 GB swap if memory cannot be increased,
and note about slower performance), ensuring one sentence per line to satisfy
the one-sentence-per-line style requirement.
---
Nitpick comments:
In `@docs/reference/architecture.md`:
- Around line 156-159: Update the table rows so all technical identifiers are
formatted as inline code: wrap terms like `Gateway container` entries' `k3s` (in
"k3s (legacy path only)"), `Landlock`, `seccomp`, and `netns` in backticks
within their respective table cells (also apply to any CLI commands, file paths,
flags, parameter names, or values present in the same rows), e.g., modify the
"k3s (legacy path only)" row and both "Sandbox container (Docker driver path)"
and "Sandbox pod (legacy k3s path)" descriptions to use inline code formatting
for those terms to meet the coding guidelines.
- Line 93: Replace the plain text occurrence of the technical term k3s in the
sentence inside the architecture doc with inline code formatting (e.g., `k3s`)
so it matches the project's guideline for CLI/technical identifiers; update the
phrase "embedded k3s cluster" to "embedded `k3s` cluster" where it appears.
- Around line 101-102: Rewrite the sentence to use active voice and apply inline
code formatting to technical terms: change "On the Docker driver path, the
embedded k3s cluster and the sandbox pod are replaced by a sibling Docker
container that hosts the OpenClaw agent under the same Landlock, seccomp, and
netns confinement." to an active construction that explicitly names the actor
(e.g., "The Docker driver replaces the embedded `k3s` cluster and the sandbox
pod with a sibling Docker container that hosts the `OpenClaw` agent under the
same `Landlock`, `seccomp`, and `netns` confinement.")—ensure `k3s`, `OpenClaw`,
`Landlock`, `seccomp`, and `netns` are formatted as inline code and prefer
"replaces" (active verb) instead of passive phrasing.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 302cd111-35e8-4909-8787-e9636926e59e
📒 Files selected for processing (2)
docs/get-started/prerequisites.mddocs/reference/architecture.md
|
✨ Thanks for submitting this detailed PR to document the Docker-driver compute path alongside the legacy k3s path. This change aims to improve the accuracy of the documentation by reflecting the dual-path compute model that landed in 0.0.39. Related open PRs:
Related open issues: |
24ab014 to
c685875
Compare
4b5ffc6 to
bd03480
Compare
19b7a20 to
52920d9
Compare
… k3s Closes NVIDIA#3432. `docs/reference/architecture.md` describes only the legacy `k3s` path even though every supported platform now selects the Docker driver (see `src/lib/onboard/docker-driver-platform.ts`: `isLinuxDockerDriverGatewayEnabled = platform === "linux" || (platform === "darwin" && arch === "arm64")`). Operators who do not already know the dispatch rule cannot tell from the docs whether their sandbox runs as a Kubernetes pod or as a sibling Docker container, which matters for runtime debugging, log paths, and the resource model. Add a platform / compute-path table at the top of the "What runs where" section that names every platform in [`ci/platform-matrix.json`] with its compute path and links the dispatch function so the source of truth is one click away. The table matches the current dispatch exactly: | Platform | Compute path | |---------------------------------------|---------------| | Linux (any arch, incl. DGX Spark / Station) | Docker driver | | Windows WSL2 (Docker Desktop) | Docker driver | | macOS Apple Silicon (Colima / Docker Desktop) | Docker driver | Mark the legacy `k3s` diagram below as historical context; clarify the "What runs where" intro and layering table so the Sandbox container and Sandbox pod variants are documented side by side rather than the pod being the only documented shape. Update the prerequisites note that attributed the fuse-overlayfs limitation to `k3s` so it points at the OpenShell gateway image (the limitation surfaces on both compute paths on hosts that use Docker's containerd image store). `prek` clean. `markdownlint-cli2` + `Verify docs-to-skills output` pass. No source code changes; docs-only. Signed-off-by: latenighthackathon <latenighthackathon@users.noreply.github.com>
bfdab6a to
66a2396
Compare
Summary
Refresh
docs/reference/architecture.mdxso it reflects the dual-path compute model that landed in 0.0.39 (Linux via #3001, macOS Apple Silicon via #3383). The page previously described the OpenShell sandbox exclusively as a Kubernetes pod inside a gateway-embedded k3s cluster, which is no longer accurate for the platforms most NemoClaw users run on.Problem
isLinuxDockerDriverGatewayEnabledreturns true forplatform === "linux"and forplatform === "darwin" && arch === "arm64", so the Docker-driver path is the default with no opt-in on those platforms. The legacy k3s path still applies to macOS Intel and a few other fallback cases. The 0.0.39 release notes call out the Docker-driver migration, but architecture.mdx was not refreshed at the time and still told readers the sandbox is always a Kubernetes pod. New users reading the architecture page formed the wrong mental model on day one.See #3432 for the original gap analysis with verified-against-code reproduction steps.
Changes
docs/reference/architecture.mdx:platform === "linux")docs/get-started/prerequisites.mdx:<Note>form; no additional change carried in this PR.Related Issue
Closes #3432.
Test plan
prek runcleansrc/lib/onboard/docker-driver-platform.tsdispatch (platform === "linux" || (platform === "darwin" && arch === "arm64"))Signed-off-by: latenighthackathon latenighthackathon@users.noreply.github.com