Skip to content

docs: reorganize Get Started and add Deployment Topology diagram#2445

Merged
ericksoa merged 8 commits into
mainfrom
docs/vdr
Apr 24, 2026
Merged

docs: reorganize Get Started and add Deployment Topology diagram#2445
ericksoa merged 8 commits into
mainfrom
docs/vdr

Conversation

@miyoungc

@miyoungc miyoungc commented Apr 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Reorganize the Get Started section, document the full runtime topology in the Architecture reference, and clarify how to uninstall NemoClaw. Prerequisites now live on their own page (with the tested-platform matrix included directly from the README), Windows pre-setup is renamed to windows-preparation.md, and DGX Spark readers are pointed to the NVIDIA Spark playbook rather than an in-repo tutorial.

Changes

Get Started reorganization

  • New docs/get-started/prerequisites.md. Extracts Hardware, Software, and the tested-platform matrix from Quickstart into its own page. The matrix is pulled in via Sphinx {include} from the README so there is a single source of truth.
  • docs/get-started/windows-setup.mddocs/get-started/windows-preparation.md (renamed to "Prepare Windows for NemoClaw"). Nested under Prerequisites in the toctree.
  • docs/get-started/quickstart.md no longer duplicates the Prerequisites section; it links to the new page instead.
  • docs/index.md Get Started toctree is now Prerequisites then Quickstart.
  • docs/conf.py redirects get-started/windows-setupwindows-preparation.html so the pre-reorg URL still resolves.

Architecture reference: Deployment Topology

  • New ## Deployment Topology section in docs/reference/architecture.md with a mermaid diagram showing the runtime substrate — host CLI → Docker daemon → OpenShell gateway container → embedded k3s cluster → sandbox pod → OpenClaw agent + plugin — plus the inference router's role on the path to external providers.
  • Per-layer role table (host CLI, Docker daemon, gateway container, k3s, sandbox pod, inference router).
  • Points DGX Spark readers to the NVIDIA Spark playbook for the Spark-specific variant.

Uninstall documentation

  • docs/reference/commands.md nemoclaw uninstall section corrects a drift bug (the CLI does not auto-fall-back to a remote script; it prints the versioned URL for manual review) and adds a comparison table between nemoclaw uninstall and the hosted curl … | bash form.
  • README and Quickstart Uninstall sections now lead with nemoclaw uninstall (version-pinned, no network fetch) and keep the curl … | bash form as a fallback for when the CLI is missing or broken. Both link to the comparison table.

Troubleshooting reference

  • New ## DGX Spark section in docs/reference/troubleshooting.md covering CoreDNS CrashLoop, k3s image-pull failure after a local build, GPU passthrough (not CI-tested on Spark), pip install system-packages errors, and the AI Workbench port 3000 conflict.
  • Section header points to the Spark playbook for end-to-end walkthroughs.
  • Windows cross-links retargeted to ../get-started/windows-preparation.md.

Platform matrix source of truth

  • ci/platform-matrix.json DGX Spark notes now link the Spark playbook. README matrix regenerated.
  • README Documentation table gains a Prerequisites row and updates the pointer below the matrix to point at Prerequisites instead of a now-removed hub.
  • scripts/generate-platform-docs.py drops docs/get-started/quickstart.md from its patch targets — the matrix moved to prerequisites.md and is pulled via {include} from README, so only README needs patching.
  • .pre-commit-config.yaml platform-matrix-sync hook updated to match (removed the quickstart path from both git add and files).

Agent skill generator (scripts/docs-to-skills.py)

Goal: skill files are self-contained. They never reference repository paths like ../../../docs/…, and they never couple the skill tree to the repo layout.

  • Rewrite precedence in rewrite_doc_paths:
    1. If the link target maps to a generated skill, emit text (use the `<skill>` skill).
    2. Otherwise, if the target is a page inside docs/, emit an absolute [text](<html_baseurl><page>.html#frag).
    3. Otherwise (target outside docs/, or no base URL), strip the hyperlink and keep the link text. Self-containment wins over navigability in the fallback.
  • New load_html_baseurl(docs_dir) reads the html_baseurl assignment from Sphinx's conf.py via ast (no exec side effects), so the script is project-agnostic: any docs tree with that assignment works. A warning is printed (and the script continues) if the base URL is missing.
  • Include placeholders (> *Content included from … — see the original doc for full text.*) follow the same precedence: emit a published URL if available, else drop the breadcrumb since the content is already inlined.
  • Fragment anchors are now preserved across the rewrite (the pre-existing rewrite silently stripped them).
  • Scope the index.md exclusion to the top-level docs/index.md only. Subdirectory index pages (for example docs/get-started/platform-setup/index.md) are legitimate hub content and can now participate in skill grouping — which is what makes rule 1 above kick in for links to those hubs.
  • Because emitted content no longer depends on where it is written, the earlier output_file parameter plumbing and the multi-output-dir invariant guard are gone. output_dirs can be any mirrors (symlinks, bind mounts, independent trees) without caveat.

Repo-root stub

  • spark-install.md rewritten as a short redirect paragraph pointing to the NVIDIA Spark playbook and the Quickstart.

Agent skills

  • .agents/skills/ regenerated from the new doc tree. nemoclaw-user-get-started now covers prerequisites.md + windows-preparation.md; nemoclaw-user-reference picks up the revised architecture, commands, and troubleshooting pages.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

The only non-doc code changes are to the skill-generator script (scripts/docs-to-skills.py), the platform-matrix-generator target list (scripts/generate-platform-docs.py), and the pre-commit hook entry. Everything else is docs or generated docs.

Verification

  • check-docs.sh --only-links phase 1 (local links) passes. Phase 2 flags prerequisites.html as "unreachable" because it is a new page not yet published; it will resolve after this PR merges and the docs site rebuilds.
  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • make docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Note on unchecked boxes: prek's CLI vitest suite surfaces pre-existing environmental failures on my machine (nemoclaw/dist/blueprint/private-networks.js missing and integration tests that try to reach a live gateway). No source file under src/, nemoclaw/src/, bin/, or test/ is touched by this diff, so those failures are unrelated. make docs wasn't run locally.

AI Disclosure

  • AI-assisted — tool: Claude Code

Signed-off-by: Miyoung Choi miyoungc@nvidia.com

Summary by CodeRabbit

  • New Features

    • Added a dedicated Prerequisites page with minimum/recommended hardware, software versions, and platform notes.
    • Added DGX Spark troubleshooting and an end-to-end local Ollama walkthrough reference.
  • Documentation

    • Reorganized Get Started to surface Prerequisites and updated Windows preparation wording.
    • Reworked uninstall guidance to prefer the CLI nemoclaw uninstall (local, version‑pinned) and document a hosted-script fallback and comparison.
    • Replaced a lengthy Spark install guide with an external playbook pointer.
  • Reference

    • Expanded architecture and commands docs to clarify deployment topology, credential flow, and uninstall behavior.
  • Chores

    • Updated docs generation/redirect tooling to emit published links and target platform docs appropriately.

… Tutorials

Reorganize the Get Started section into Prerequisites → Platform Setup →
Quickstart and add a new Tutorials section with a DGX Spark + Local Ollama
tutorial. Extend the Architecture reference with a Deployment Topology
diagram that shows the host CLI → Docker → gateway container → embedded k3s
→ sandbox pod stack. Port Spark-specific troubleshooting (CoreDNS, k3s
image pull, GPU passthrough, pip system-packages, AI Workbench port 3000)
into the central Troubleshooting reference and replace the tutorial's
Troubleshooting section with a cross-link.

Document `nemoclaw uninstall` vs the hosted `uninstall.sh` curl one-liner,
update the source-of-truth `ci/platform-matrix.json` to link the DGX Spark
tutorial from the platform matrix, and add Sphinx redirects for the
pre-reorg doc URLs. Regenerate agent skills from the updated docs tree.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@miyoungc miyoungc self-assigned this Apr 24, 2026
@coderabbitai

coderabbitai Bot commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 921d61b3-ac4c-4f50-b8f2-9ab8e94f750e

📥 Commits

Reviewing files that changed from the base of the PR and between 073b3a9 and 065eb38.

📒 Files selected for processing (5)
  • .agents/skills/nemoclaw-user-get-started/SKILL.md
  • .agents/skills/nemoclaw-user-reference/references/architecture.md
  • docs/get-started/quickstart.md
  • docs/reference/architecture.md
  • scripts/docs-to-skills.py
🚧 Files skipped from review as they are similar to previous changes (4)
  • docs/get-started/quickstart.md
  • docs/reference/architecture.md
  • .agents/skills/nemoclaw-user-reference/references/architecture.md
  • .agents/skills/nemoclaw-user-get-started/SKILL.md

📝 Walkthrough

Walkthrough

This PR reorganizes and expands documentation: extracts prerequisites into a dedicated page, clarifies uninstall behavior (CLI-run, version-pinned local script with hosted fallback), adds a host-level deployment topology and DGX Spark troubleshooting, updates Windows prep wording, and adjusts docs-generation scripts and tooling targets.

Changes

Cohort / File(s) Summary
Skill docs & references
.agents/skills/nemoclaw-user-get-started/SKILL.md, .agents/skills/nemoclaw-user-get-started/references/prerequisites.md, .agents/skills/nemoclaw-user-get-started/references/windows-preparation.md, .agents/skills/nemoclaw-user-reference/references/architecture.md, .agents/skills/nemoclaw-user-reference/references/commands.md, .agents/skills/nemoclaw-user-reference/references/troubleshooting.md
Updated skill frontmatter and content: Quickstart → Prerequisites framing, new prerequisites page, revised uninstall description (CLI uses bundled version‑pinned uninstall.sh; hosted script documented as fallback), added concrete deployment/topology text and DGX Spark troubleshooting notes.
Published Get Started docs
docs/get-started/prerequisites.md, docs/get-started/quickstart.md, docs/get-started/windows-preparation.md, docs/index.md
Adds standalone Prerequisites page and surfaces it in toctree; removes duplicate prerequisites from Quickstart; changes primary uninstall guidance to nemoclaw uninstall; rewords Windows preparation heading/intro.
Reference docs & README
docs/reference/architecture.md, docs/reference/commands.md, docs/reference/troubleshooting.md, README.md, spark-install.md
Adds host-level deployment topology, explains gateway L7 credential injection and resume readiness behavior; documents nemoclaw uninstall local-first behavior and contrasts with hosted uninstall; adds DGX Spark troubleshooting and replaces long Spark doc with external playbook pointer; README updated to reference prerequisites and uninstall behavior.
Docs generation scripts
scripts/docs-to-skills.py, scripts/generate-platform-docs.py
scripts/docs-to-skills.py adds load_html_baseurl() and threads html_baseurl into rewrite_doc_paths/generate_skill so links to docs become published URLs or skill references when possible; generate-platform-docs.py now targets README only for the generated platforms table.
CI / tooling / config
.pre-commit-config.yaml, ci/platform-matrix.json, docs/conf.py, scripts/generate-platform-docs.py
Narrows pre-commit hook scope to exclude quickstart, updates DGX Spark notes in platform matrix, adds Sphinx redirect from legacy Windows setup to new Windows prep page, and adjusts platform-doc generation target.
Docs organization / index
docs/get-started/*, docs/index.md, docs/conf.py
Reordered Get Started toctree to surface Prerequisites ahead of Quickstart and added redirect/links for relocated Windows content.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

enhancement: documentation

Poem

🐰 I hopped through pages, tidy and spry,
Prereqs first now — no more surprise.
Local uninstall snug, hosted for when broken,
Topology mapped, and DGX tips spoken. 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main changes: documentation reorganization of Get Started section and addition of a Deployment Topology diagram to the Architecture reference.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/vdr

Comment @coderabbitai help to get the list of available commands and usage tips.

@miyoungc miyoungc marked this pull request as draft April 24, 2026 19:08
@copy-pr-bot

copy-pr-bot Bot commented Apr 24, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 10

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
docs/reference/architecture.md (1)

19-20: ⚠️ Potential issue | 🟠 Major

SPDX header is not in the required repository format.

Please use the exact markdown SPDX header text with 2026.

As per coding guidelines, "**/*.{js,mjs,ts,tsx,sh,md}: Every source file must include an SPDX license header: ... Copyright (c) 2026 ...."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/architecture.md` around lines 19 - 20, Update the SPDX header
in the file to the exact required markdown format and year 2026: replace the
current two-line header with the standard SPDX markdown header text including
"Copyright (c) 2026" and "SPDX-License-Identifier: Apache-2.0" so the file
conforms to the repository rule for files matching *.md; ensure the header
matches the exact casing and punctuation used by other repository files.
docs/get-started/quickstart.md (1)

19-20: ⚠️ Potential issue | 🟠 Major

SPDX header does not use the required canonical format.

Please switch to the exact repository-required SPDX text (2026).

As per coding guidelines, "**/*.{js,mjs,ts,tsx,sh,md}: Every source file must include an SPDX license header: ... Copyright (c) 2026 ...."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/quickstart.md` around lines 19 - 20, The SPDX header in the
quickstart markdown uses an incorrect year range; update the SPDX license header
text so it exactly matches the repository-required canonical form by replacing
the existing "Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All
rights reserved." line with the mandated SPDX line that uses "Copyright (c) 2026
NVIDIA CORPORATION & AFFILIATES. All rights reserved." and keep the
SPDX-License-Identifier: Apache-2.0 line unchanged.
docs/reference/troubleshooting.md (1)

19-20: ⚠️ Potential issue | 🟠 Major

SPDX header format is not the required canonical string.

Please align to the exact repository-required SPDX header with 2026.

As per coding guidelines, "**/*.{js,mjs,ts,tsx,sh,md}: Every source file must include an SPDX license header: ... Copyright (c) 2026 ...."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/troubleshooting.md` around lines 19 - 20, Replace the
non-canonical SPDX header lines by updating the SPDX-FileCopyrightText year to
2026 and ensuring the SPDX-FileCopyrightText and SPDX-License-Identifier lines
exactly match the repository-required canonical header (use the
SPDX-FileCopyrightText and SPDX-License-Identifier tokens to locate the two
header lines and change the year to 2026 and keep the license identifier as
Apache-2.0).
🧹 Nitpick comments (4)
docs/get-started/platform-setup/index.md (1)

43-44: Remove bold from routine status text (LLM pattern detected).

Use plain text for these status words unless this is a genuine warning/UI label.

Proposed fix
-Platforms marked **Not required** have everything they need once Docker is installed and running, so you can go directly to the [Quickstart](../quickstart.md).
-Platforms marked **Required** have a linked guide that walks through the extra steps before the Quickstart.
+Platforms marked not required have everything they need once Docker is installed and running, so you can go directly to the [Quickstart](../quickstart.md).
+Platforms marked required have a linked guide that walks through the extra steps before the Quickstart.
As per coding guidelines: "Unnecessary bold on routine instructions ... LLM pattern detected."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/platform-setup/index.md` around lines 43 - 44, Remove the
bold markdown formatting around the routine status words by changing "**Not
required**" to "Not required" and "**Required**" to "Required" in the sentence
that references the Quickstart link; keep the surrounding text and link
unchanged (the phrases "Not required" and "Required" are the unique identifiers
to locate the edits).
README.md (1)

150-154: Prefer a tagged/manual fallback over piping main directly to bash.

For recovery guidance, using refs/heads/main here can mismatch the installed CLI version and weakens the review step. Consider documenting a “download + review + run” flow with a versioned tag URL.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 150 - 154, Replace the unsafe "curl ...
refs/heads/main/uninstall.sh | bash" fallback in README.md with a documented
manual flow: instruct users to download the specific versioned/tagged uninstall
script URL (use a tag instead of refs/heads/main), inspect/review the downloaded
file, and only then execute it (e.g., download to a local file, review, and run
with bash). Reference the CLI name "nemoclaw" and the original URL string
"https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh"
so maintainers can update that to a versioned tag URL and provide the three-step
guidance: download, review, run.
docs/reference/troubleshooting.md (1)

679-679: Use active voice in this troubleshooting instruction.

Line 679 uses passive voice (“It is expected to work...”); rephrase in active voice.

As per coding guidelines, "Voice and Tone: Active voice required. Flag passive constructions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/troubleshooting.md` at line 679, The sentence at line 679 uses
passive voice ("It is expected to work when you pass `--gpu`..."); change it to
active voice by rewriting the line to directly state the actor and action, e.g.,
"The application works when you pass `--gpu` and you have configured the NVIDIA
Container Toolkit." Update the sentence in docs/reference/troubleshooting.md
replacing the passive construction with this active phrasing and keep the
existing `--gpu` and NVIDIA Container Toolkit mentions.
docs/get-started/tutorials/dgx-spark.md (1)

25-27: Split multi-sentence lines into one sentence per line.

Several edited lines contain multiple sentences on the same source line (for example, Line 25 and Line 90), which hurts diff readability.

As per coding guidelines: One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line.

Also applies to: 90-103, 146-152

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/tutorials/dgx-spark.md` around lines 25 - 27, Several source
lines in the DGX Spark tutorial contain multiple sentences on the same line (for
example the paragraph starting "This tutorial shows you how to set up NemoClaw
with Ollama on an NVIDIA DGX Spark." and the sentence beginning "DGX Spark ships
with Ubuntu 24.04 and Docker pre-installed...") as well as the later paragraphs
flagged in the review; split each multi-sentence source line so each sentence
occupies its own line, preserving paragraph breaks and existing punctuation;
locate and update the affected paragraphs (the introductory sentences and the
later sections the reviewer flagged) to follow the "one sentence per line"
guideline to improve diff readability.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/get-started/platform-setup/index.md`:
- Around line 53-60: Add an explicit "Next Steps" section at the bottom of the
page: create a "## Next Steps" header after the existing Quickstart
sentence/toctree and list links (e.g., the existing
[Quickstart](../quickstart.md) and any related pages like windows) so the page
ends with a clear Next Steps block rather than just the transition
sentence/toctree.
- Line 23: The document's H1 "# Platform Setup" does not match the frontmatter
key title.page; update the H1 to exactly match the frontmatter value
(title.page) or modify title.page to exactly match the H1 so they are identical,
ensuring punctuation/capitalization/spacing are the same; check the frontmatter
key "title.page" and the H1 line and make them identical.

In `@docs/get-started/prerequisites.md`:
- Line 23: The H1 heading in the markdown must match the frontmatter title.page
exactly: replace the existing "# Prerequisites" H1 with "# NemoClaw
Prerequisites" so the page-level heading equals the frontmatter title.page
value; update the H1 at the top of the document (the visible page heading) to
match "NemoClaw Prerequisites" precisely, including capitalization and spacing.
- Around line 54-56: Rename the section header "## Next" to "## Next Steps" in
the docs/get-started/prerequisites.md file so the bottom-of-page link follows
the project's page structure guideline; locate the header text "## Next" and
update it to "## Next Steps", leaving the link to the Quickstart intact.
- Around line 19-20: The SPDX header in the Markdown file uses "2025-2026" but
must match the project-required single year "2026"; update the two header lines
in the file (the SPDX copyright line and SPDX-License-Identifier line shown in
the diff) to use the exact required header text with "Copyright (c) 2026" and
"SPDX-License-Identifier: Apache-2.0" so the file matches the project's SPDX
format for Markdown files.

In `@docs/get-started/quickstart.md`:
- Around line 343-345: Replace the CLI code fences that use ```bash with
```console and add a leading "$ " prompt to each command so the examples follow
docs style; specifically update the blocks that contain "nemoclaw uninstall" and
the curl uninstall command (the blocks shown around lines 343–345 and 357–359)
to use ```console and prefix the commands with "$ ".

In `@docs/get-started/tutorials/dgx-spark.md`:
- Around line 67-69: Replace all CLI code fences that use the ```bash (or
```shell) tag with ```console and add a leading $ prompt to each command example
(e.g., the docker run command shown as ```bash ... should become a console block
with lines prefixed by $). Update every listed block (the docker run nvidia/cuda
example and the other blocks referenced) so CLI examples conform to the
guideline: use the console language tag and include the $ prompt on command
lines.
- Line 165: The markdown includes a disallowed third-party repository link to
"github.com/ggml-org/llama.cpp" in the NIM compatibility note; remove that
external link and replace it with non-link text or point readers to an approved
internal resource (or simply mention "llama.cpp (GGUF models)" without a URL) in
the sentence that mentions Nemotron-3-Super-120B-A12B and alternatives like
Ollama, ensuring the text no longer contains any external repository URL.

In `@docs/reference/architecture.md`:
- Line 90: Update the topology paragraph to follow one-sentence-per-line and
remove the colon: change "NemoClaw runs on a Docker daemon" to "NemoClaw uses a
Docker daemon" and then split the rest into separate sentences describing that
the OpenShell gateway runs as a container that embeds a k3s cluster, and that
the sandbox runs as a Kubernetes pod inside that embedded cluster; ensure no
colon is used and each sentence is on its own line, referencing NemoClaw,
OpenShell gateway, k3s cluster, and sandbox to locate the text.

In `@spark-install.md`:
- Around line 2-3: Update the SPDX header in the file's top header so it uses
the exact required year format "2026" instead of the current "2025-2026"; locate
the SPDX header line (the line starting with "SPDX-FileCopyrightText") and
replace the year range with "Copyright (c) 2026" to match repository policy.

---

Outside diff comments:
In `@docs/get-started/quickstart.md`:
- Around line 19-20: The SPDX header in the quickstart markdown uses an
incorrect year range; update the SPDX license header text so it exactly matches
the repository-required canonical form by replacing the existing "Copyright (c)
2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved." line with the
mandated SPDX line that uses "Copyright (c) 2026 NVIDIA CORPORATION &
AFFILIATES. All rights reserved." and keep the SPDX-License-Identifier:
Apache-2.0 line unchanged.

In `@docs/reference/architecture.md`:
- Around line 19-20: Update the SPDX header in the file to the exact required
markdown format and year 2026: replace the current two-line header with the
standard SPDX markdown header text including "Copyright (c) 2026" and
"SPDX-License-Identifier: Apache-2.0" so the file conforms to the repository
rule for files matching *.md; ensure the header matches the exact casing and
punctuation used by other repository files.

In `@docs/reference/troubleshooting.md`:
- Around line 19-20: Replace the non-canonical SPDX header lines by updating the
SPDX-FileCopyrightText year to 2026 and ensuring the SPDX-FileCopyrightText and
SPDX-License-Identifier lines exactly match the repository-required canonical
header (use the SPDX-FileCopyrightText and SPDX-License-Identifier tokens to
locate the two header lines and change the year to 2026 and keep the license
identifier as Apache-2.0).

---

Nitpick comments:
In `@docs/get-started/platform-setup/index.md`:
- Around line 43-44: Remove the bold markdown formatting around the routine
status words by changing "**Not required**" to "Not required" and "**Required**"
to "Required" in the sentence that references the Quickstart link; keep the
surrounding text and link unchanged (the phrases "Not required" and "Required"
are the unique identifiers to locate the edits).

In `@docs/get-started/tutorials/dgx-spark.md`:
- Around line 25-27: Several source lines in the DGX Spark tutorial contain
multiple sentences on the same line (for example the paragraph starting "This
tutorial shows you how to set up NemoClaw with Ollama on an NVIDIA DGX Spark."
and the sentence beginning "DGX Spark ships with Ubuntu 24.04 and Docker
pre-installed...") as well as the later paragraphs flagged in the review; split
each multi-sentence source line so each sentence occupies its own line,
preserving paragraph breaks and existing punctuation; locate and update the
affected paragraphs (the introductory sentences and the later sections the
reviewer flagged) to follow the "one sentence per line" guideline to improve
diff readability.

In `@docs/reference/troubleshooting.md`:
- Line 679: The sentence at line 679 uses passive voice ("It is expected to work
when you pass `--gpu`..."); change it to active voice by rewriting the line to
directly state the actor and action, e.g., "The application works when you pass
`--gpu` and you have configured the NVIDIA Container Toolkit." Update the
sentence in docs/reference/troubleshooting.md replacing the passive construction
with this active phrasing and keep the existing `--gpu` and NVIDIA Container
Toolkit mentions.

In `@README.md`:
- Around line 150-154: Replace the unsafe "curl ... refs/heads/main/uninstall.sh
| bash" fallback in README.md with a documented manual flow: instruct users to
download the specific versioned/tagged uninstall script URL (use a tag instead
of refs/heads/main), inspect/review the downloaded file, and only then execute
it (e.g., download to a local file, review, and run with bash). Reference the
CLI name "nemoclaw" and the original URL string
"https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh"
so maintainers can update that to a versioned tag URL and provide the three-step
guidance: download, review, run.
🪄 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: f0ee439a-f1b0-4a93-91fe-99f84b84838f

📥 Commits

Reviewing files that changed from the base of the PR and between b804db0 and 8ead3d7.

📒 Files selected for processing (23)
  • .agents/skills/nemoclaw-user-get-started/SKILL.md
  • .agents/skills/nemoclaw-user-get-started/references/prerequisites.md
  • .agents/skills/nemoclaw-user-reference/references/architecture.md
  • .agents/skills/nemoclaw-user-reference/references/commands.md
  • .agents/skills/nemoclaw-user-reference/references/troubleshooting.md
  • .agents/skills/nemoclaw-user-tutorial/SKILL.md
  • .agents/skills/nemoclaw-user-windows-presetup/SKILL.md
  • .agents/skills/nemoclaw-user-windows-presetup/references/windows.md
  • .pre-commit-config.yaml
  • README.md
  • ci/platform-matrix.json
  • docs/conf.py
  • docs/get-started/platform-setup/index.md
  • docs/get-started/platform-setup/windows.md
  • docs/get-started/prerequisites.md
  • docs/get-started/quickstart.md
  • docs/get-started/tutorials/dgx-spark.md
  • docs/index.md
  • docs/reference/architecture.md
  • docs/reference/commands.md
  • docs/reference/troubleshooting.md
  • scripts/generate-platform-docs.py
  • spark-install.md

Comment thread docs/get-started/platform-setup/index.md Outdated
Comment thread docs/get-started/platform-setup/index.md Outdated
Comment thread docs/get-started/prerequisites.md
Comment thread docs/get-started/prerequisites.md
Comment thread docs/get-started/prerequisites.md Outdated
Comment thread docs/get-started/quickstart.md
Comment thread docs/get-started/tutorials/dgx-spark.md Outdated
Comment thread docs/get-started/tutorials/dgx-spark.md Outdated
Comment thread docs/reference/architecture.md Outdated
Comment thread spark-install.md
miyoungc and others added 2 commits April 24, 2026 12:30
…lve to skills

Subdirectory index.md pages (for example docs/get-started/platform-setup/
index.md) are real hub content, not Sphinx boilerplate, but the generator
was excluding every file named index.md. With the hub page missing from
the skill map, inter-doc links targeting it fell through to the
file-path fallback and check-docs flagged those paths as broken.

Scope the exclusion to the top-level docs/index.md only. The
platform-setup hub now becomes its own nemoclaw-user-platform-setup
skill, and links to it rewrite to the expected "(use the `<skill>`
skill)" form instead of a filesystem path. The former
nemoclaw-user-windows-presetup skill is subsumed into the new hub skill.

Also preserve fragment anchors across the rewrite (a pre-existing bug)
and emit paths relative to the output file as a sound default for links
that legitimately do not map to any generated skill.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…es + windows-preparation

Simplify the Get Started tree. The short-lived platform-setup hub had only
one real pre-setup page (Windows) and a tested-platform matrix; fold the
matrix directly into prerequisites.md and move the Windows page up one
level as windows-preparation.md. Remove the DGX Spark tutorial — Spark
users now follow the standard Quickstart and the end-to-end walkthrough
lives on the NVIDIA Spark playbook at build.nvidia.com/spark/nemoclaw.

Update everything that linked to the removed pages:

- `ci/platform-matrix.json` DGX Spark notes now point to the Spark
  playbook; README matrix regenerated.
- README Documentation table swaps the Platform Setup row for a
  Prerequisites row; the platform-setup pointer below the matrix now
  points at Prerequisites.
- `docs/reference/architecture.md` deployment-topology Spark callout
  links the playbook instead of the tutorial.
- `docs/reference/troubleshooting.md` DGX Spark section links the
  playbook; the GPU passthrough note inlines the toolkit check command
  instead of cross-referencing a tutorial step; Windows links updated to
  `../get-started/windows-preparation.md`.
- `docs/conf.py` drops the obsolete platform-setup/dgx-spark redirects
  and retargets `get-started/windows-setup` at
  `windows-preparation.html`.
- `docs/get-started/prerequisites.md` Platform row now points at the
  in-page `#platforms` anchor.

Skills regenerated; `nemoclaw-user-platform-setup` and
`nemoclaw-user-tutorial` removed, `nemoclaw-user-get-started` now covers
prerequisites.md + windows-preparation.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@miyoungc miyoungc changed the title docs: restructure Get Started with Platform Setup and Tutorials docs: reorganize Get Started and add Deployment Topology diagram Apr 24, 2026
miyoungc and others added 2 commits April 24, 2026 13:52
…-per-line

Replace the colon-linked compound sentence with five plain sentences on
their own lines, and swap "runs on a Docker daemon" for "uses a Docker
daemon" to match the project's prose style. The rendered output is
identical because CommonMark folds consecutive single-line sentences
into one paragraph; only the source diff changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@miyoungc miyoungc marked this pull request as ready for review April 24, 2026 21:01

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/docs-to-skills.py (1)

466-490: ⚠️ Potential issue | 🟡 Minor

Skill rewrites still drop #fragment context.

When a link like other.md#section resolves through doc_to_skill, the return at Line 489 discards frag and emits only the skill hint. That loses the section pointer this change is trying to preserve. Please carry the fragment through in the emitted hint as well.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/docs-to-skills.py` around lines 466 - 490, The rewrite drops the
fragment because the return that handles mapped docs (using variables raw_path,
frag, path_no_frag, doc_to_skill, skill_name, link_text) omits frag; update the
return in that doc-to-skill branch so the fragment is preserved by appending
frag to the emitted hint (e.g., include frag immediately after the skill_name
inside the parenthetical hint) so links like other.md#section produce a hint
that still contains the `#section` fragment.
🧹 Nitpick comments (1)
README.md (1)

148-156: Prefer the versioned uninstall URL in the documented fallback.

The CLI’s recovery path is intentionally version-pinned, but this README fallback goes back to refs/heads/main | bash. That reintroduces version skew in the exact scenario where users are already recovering from a broken install. Consider documenting the tag-based URL form here, or explicitly calling the main form out as a last-resort fallback.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 148 - 156, Update the README fallback so it prefers a
versioned/tag-based uninstall script URL instead of the branch-based
refs/heads/main one: change the documented curl from the current
"https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh
| bash" to a tag-based form (e.g., using a release tag placeholder like vX.Y.Z
or a variable such as ${NEMOCLAW_VERSION:-vX.Y.Z}) and explicitly mention that
refs/heads/main is a last-resort fallback only to be used when no versioned CLI
is available; ensure the text around the "nemoclaw uninstall" fallback and the
example curl command reflect this preference.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/reference/architecture.md`:
- Line 115: The diagram and layer table incorrectly present an "Inference
router" as a separate architectural component that injects credentials; update
the Mermaid diagram and accompanying text to remove or rename the "Inference
router" node and instead indicate that credential injection is performed by the
L7 proxy (the provider/placeholder system) — reference the utility
isInferenceRouteReady (a readiness check, not a component) and the L7 proxy
behavior (rewriting Authorization headers and URL-path segments) when editing
the diagram labels and prose so the diagram reflects the proxy performing
credential injection rather than a distinct inference-router service.

In `@scripts/docs-to-skills.py`:
- Around line 1045-1060: The current _clean function and use of
skill_md_path/primary_skill_dir rewrite links once against output_dirs[0],
causing incorrect relative links for other output roots; fix by moving the
rewrite_doc_paths call to inside the loop that writes to each output directory
so each output tree gets its own target (pass the per-output output_file/path
into rewrite_doc_paths), or alternatively add an explicit assertion that all
entries in output_dirs resolve to the same on-disk location as primary_skill_dir
before reusing skill_md_path; update uses of _clean, skill_md_path,
primary_skill_dir, and the write loop so rewrite_doc_paths is invoked per-output
with the correct output_file rather than reusing a single precomputed result.

---

Outside diff comments:
In `@scripts/docs-to-skills.py`:
- Around line 466-490: The rewrite drops the fragment because the return that
handles mapped docs (using variables raw_path, frag, path_no_frag, doc_to_skill,
skill_name, link_text) omits frag; update the return in that doc-to-skill branch
so the fragment is preserved by appending frag to the emitted hint (e.g.,
include frag immediately after the skill_name inside the parenthetical hint) so
links like other.md#section produce a hint that still contains the `#section`
fragment.

---

Nitpick comments:
In `@README.md`:
- Around line 148-156: Update the README fallback so it prefers a
versioned/tag-based uninstall script URL instead of the branch-based
refs/heads/main one: change the documented curl from the current
"https://raw.githubusercontent.com/NVIDIA/NemoClaw/refs/heads/main/uninstall.sh
| bash" to a tag-based form (e.g., using a release tag placeholder like vX.Y.Z
or a variable such as ${NEMOCLAW_VERSION:-vX.Y.Z}) and explicitly mention that
refs/heads/main is a last-resort fallback only to be used when no versioned CLI
is available; ensure the text around the "nemoclaw uninstall" fallback and the
example curl command reflect this preference.
🪄 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: 1c7ee433-4f2e-4586-95e3-69cf4fdbf590

📥 Commits

Reviewing files that changed from the base of the PR and between 8ead3d7 and 38783ea.

📒 Files selected for processing (16)
  • .agents/skills/nemoclaw-user-get-started/SKILL.md
  • .agents/skills/nemoclaw-user-get-started/references/prerequisites.md
  • .agents/skills/nemoclaw-user-get-started/references/windows-preparation.md
  • .agents/skills/nemoclaw-user-reference/references/architecture.md
  • .agents/skills/nemoclaw-user-reference/references/troubleshooting.md
  • README.md
  • ci/platform-matrix.json
  • docs/conf.py
  • docs/get-started/prerequisites.md
  • docs/get-started/windows-preparation.md
  • docs/index.md
  • docs/reference/architecture.md
  • docs/reference/commands.md
  • docs/reference/troubleshooting.md
  • scripts/docs-to-skills.py
  • spark-install.md
✅ Files skipped from review due to trivial changes (8)
  • docs/index.md
  • ci/platform-matrix.json
  • .agents/skills/nemoclaw-user-get-started/references/windows-preparation.md
  • .agents/skills/nemoclaw-user-reference/references/architecture.md
  • docs/get-started/windows-preparation.md
  • docs/conf.py
  • docs/get-started/prerequisites.md
  • docs/reference/troubleshooting.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • spark-install.md
  • .agents/skills/nemoclaw-user-get-started/references/prerequisites.md
  • .agents/skills/nemoclaw-user-get-started/SKILL.md

Comment thread docs/reference/architecture.md Outdated
Comment thread scripts/docs-to-skills.py Outdated
…a router

The Deployment Topology diagram showed an "Inference router" node that
performed credential injection. The codebase has no such component:

- src/lib/services.ts:257 attributes the work to the
  "OpenShell provider/placeholder/L7-proxy pipeline".
- src/lib/onboard.ts:4201–4202, :4324, :4357 describe the L7 proxy
  rewriting Authorization headers (Bearer/Bot) and URL-path segments
  with real secrets at egress.
- The only `*InferenceRoute*` symbol is `isInferenceRouteReady`
  (src/lib/onboard.ts:1083), a host-side readiness check used by the
  resume flow — not a service.

Rename the diagram node to "OpenShell L7 proxy", retitle the table row,
update the egress edge labels (agent sends placeholder credentials; the
proxy egresses with real credentials), and add a short prose note
clarifying the provider/placeholder pipeline and the role of
`isInferenceRouteReady`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@miyoungc miyoungc marked this pull request as draft April 24, 2026 21:59
miyoungc and others added 2 commits April 24, 2026 15:28
…cs/ paths

Skills should be self-contained. The rewriter was emitting filesystem
paths back into docs/ whenever a target had no corresponding skill,
which coupled the skill tree to the repo layout and broke when the
tree moved. Replace that fallback with the published HTTPS URL derived
from Sphinx's html_baseurl.

Changes:

- Add `load_html_baseurl(docs_dir)` that reads the assignment from
  conf.py via `ast` (no exec side effects). Project-agnostic: any docs
  tree with an `html_baseurl` works. Falls back to stripping the
  hyperlink (keep text) if the base URL is missing.
- Rewrite precedence in `rewrite_doc_paths` is now:
  1. skill reference (`text (use the `<skill>` skill)`)
  2. published URL (`[text](<html_baseurl><page>.html#frag)`)
  3. plain text (self-containment wins over navigability)
- Include placeholders follow the same precedence: emit the published
  URL if available, else drop the breadcrumb (the content is inlined).
- Remove the `output_file` parameter plumbing added earlier and the
  associated multi-output-dir invariant guard. Since emitted content
  no longer depends on where it's written, `output_dirs` can safely be
  any mirrors (symlinks, bind mounts, independent trees) without
  caveat.
- Thread `html_baseurl` through `generate_skill` from `main()`.

Also a small editorial touch in docs/reference/architecture.md: drop
the Docker daemon version suffix from the deployment-topology diagram.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@miyoungc miyoungc marked this pull request as ready for review April 24, 2026 22:39

@ericksoa ericksoa left a comment

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.

Clean docs reorganization. No source code changes. All CI green.

The Get Started reorg (prerequisites on their own page, Windows rename with redirect) and the Spark content consolidation to the external playbook are both good moves. The deployment topology mermaid diagram and role table are a valuable addition to the architecture reference.

The docs-to-skills.py improvements are well-done — AST-based conf.py parsing avoids exec side effects, and resolving inter-doc links to published HTTPS URLs (with fragment preservation) makes generated skills properly self-contained.

@ericksoa ericksoa merged commit f7a4c23 into main Apr 24, 2026
22 checks passed
DemianHeyGen pushed a commit to DemianHeyGen/NemoClaw that referenced this pull request Apr 30, 2026
…DIA#2445)

## Summary

Reorganize the Get Started section, document the full runtime topology
in the Architecture reference, and clarify how to uninstall NemoClaw.
Prerequisites now live on their own page (with the tested-platform
matrix included directly from the README), Windows pre-setup is renamed
to `windows-preparation.md`, and DGX Spark readers are pointed to the
NVIDIA Spark playbook rather than an in-repo tutorial.

## Changes

**Get Started reorganization**
- New `docs/get-started/prerequisites.md`. Extracts Hardware, Software,
and the tested-platform matrix from Quickstart into its own page. The
matrix is pulled in via Sphinx `{include}` from the README so there is a
single source of truth.
- `docs/get-started/windows-setup.md` →
`docs/get-started/windows-preparation.md` (renamed to "Prepare Windows
for NemoClaw"). Nested under Prerequisites in the toctree.
- `docs/get-started/quickstart.md` no longer duplicates the
Prerequisites section; it links to the new page instead.
- `docs/index.md` Get Started toctree is now `Prerequisites` then
`Quickstart`.
- `docs/conf.py` redirects `get-started/windows-setup` →
`windows-preparation.html` so the pre-reorg URL still resolves.

**Architecture reference: Deployment Topology**
- New `## Deployment Topology` section in
`docs/reference/architecture.md` with a mermaid diagram showing the
runtime substrate — host CLI → Docker daemon → OpenShell gateway
container → embedded k3s cluster → sandbox pod → OpenClaw agent + plugin
— plus the inference router's role on the path to external providers.
- Per-layer role table (host CLI, Docker daemon, gateway container, k3s,
sandbox pod, inference router).
- Points DGX Spark readers to the [NVIDIA Spark
playbook](https://build.nvidia.com/spark/nemoclaw) for the
Spark-specific variant.

**Uninstall documentation**
- `docs/reference/commands.md` `nemoclaw uninstall` section corrects a
drift bug (the CLI does *not* auto-fall-back to a remote script; it
prints the versioned URL for manual review) and adds a comparison table
between `nemoclaw uninstall` and the hosted `curl … | bash` form.
- README and Quickstart Uninstall sections now lead with `nemoclaw
uninstall` (version-pinned, no network fetch) and keep the `curl … |
bash` form as a fallback for when the CLI is missing or broken. Both
link to the comparison table.

**Troubleshooting reference**
- New `## DGX Spark` section in `docs/reference/troubleshooting.md`
covering CoreDNS CrashLoop, `k3s` image-pull failure after a local
build, GPU passthrough (not CI-tested on Spark), `pip install`
system-packages errors, and the AI Workbench port 3000 conflict.
- Section header points to the Spark playbook for end-to-end
walkthroughs.
- Windows cross-links retargeted to
`../get-started/windows-preparation.md`.

**Platform matrix source of truth**
- `ci/platform-matrix.json` DGX Spark notes now link the Spark playbook.
README matrix regenerated.
- README Documentation table gains a Prerequisites row and updates the
pointer below the matrix to point at Prerequisites instead of a
now-removed hub.
- `scripts/generate-platform-docs.py` drops
`docs/get-started/quickstart.md` from its patch targets — the matrix
moved to `prerequisites.md` and is pulled via `{include}` from README,
so only README needs patching.
- `.pre-commit-config.yaml` `platform-matrix-sync` hook updated to match
(removed the quickstart path from both `git add` and `files`).

**Agent skill generator (`scripts/docs-to-skills.py`)**

Goal: skill files are self-contained. They never reference repository
paths like `../../../docs/…`, and they never couple the skill tree to
the repo layout.

- Rewrite precedence in `rewrite_doc_paths`:
1. If the link target maps to a generated skill, emit ``text (use the
`<skill>` skill)``.
2. Otherwise, if the target is a page inside `docs/`, emit an absolute
`[text](<html_baseurl><page>.html#frag)`.
3. Otherwise (target outside `docs/`, or no base URL), strip the
hyperlink and keep the link text. Self-containment wins over
navigability in the fallback.
- New `load_html_baseurl(docs_dir)` reads the `html_baseurl` assignment
from Sphinx's `conf.py` via `ast` (no `exec` side effects), so the
script is project-agnostic: any docs tree with that assignment works. A
warning is printed (and the script continues) if the base URL is
missing.
- Include placeholders (`> *Content included from … — see the original
doc for full text.*`) follow the same precedence: emit a published URL
if available, else drop the breadcrumb since the content is already
inlined.
- Fragment anchors are now preserved across the rewrite (the
pre-existing rewrite silently stripped them).
- Scope the `index.md` exclusion to the top-level `docs/index.md` only.
Subdirectory index pages (for example
`docs/get-started/platform-setup/index.md`) are legitimate hub content
and can now participate in skill grouping — which is what makes rule 1
above kick in for links to those hubs.
- Because emitted content no longer depends on where it is written, the
earlier `output_file` parameter plumbing and the multi-output-dir
invariant guard are gone. `output_dirs` can be any mirrors (symlinks,
bind mounts, independent trees) without caveat.

**Repo-root stub**
- `spark-install.md` rewritten as a short redirect paragraph pointing to
the NVIDIA Spark playbook and the Quickstart.

**Agent skills**
- `.agents/skills/` regenerated from the new doc tree.
`nemoclaw-user-get-started` now covers `prerequisites.md` +
`windows-preparation.md`; `nemoclaw-user-reference` picks up the revised
architecture, commands, and troubleshooting pages.

## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

The only non-doc code changes are to the skill-generator script
(`scripts/docs-to-skills.py`), the platform-matrix-generator target list
(`scripts/generate-platform-docs.py`), and the pre-commit hook entry.
Everything else is docs or generated docs.

## Verification
- [x] `check-docs.sh --only-links` phase 1 (local links) passes. Phase 2
flags `prerequisites.html` as "unreachable" because it is a new page not
yet published; it will resolve after this PR merges and the docs site
rebuilds.
- [ ] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)

Note on unchecked boxes: prek's CLI vitest suite surfaces pre-existing
environmental failures on my machine
(`nemoclaw/dist/blueprint/private-networks.js` missing and integration
tests that try to reach a live gateway). No source file under `src/`,
`nemoclaw/src/`, `bin/`, or `test/` is touched by this diff, so those
failures are unrelated. `make docs` wasn't run locally.

## AI Disclosure
- [x] AI-assisted — tool: Claude Code

---

Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a dedicated Prerequisites page with minimum/recommended
hardware, software versions, and platform notes.
* Added DGX Spark troubleshooting and an end-to-end local Ollama
walkthrough reference.

* **Documentation**
* Reorganized Get Started to surface Prerequisites and updated Windows
preparation wording.
* Reworked uninstall guidance to prefer the CLI `nemoclaw uninstall`
(local, version‑pinned) and document a hosted-script fallback and
comparison.
* Replaced a lengthy Spark install guide with an external playbook
pointer.

* **Reference**
* Expanded architecture and commands docs to clarify deployment
topology, credential flow, and uninstall behavior.

* **Chores**
* Updated docs generation/redirect tooling to emit published links and
target platform docs appropriately.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@wscurran wscurran added this to the GTM: Computex Readiness milestone May 5, 2026
ksapru pushed a commit to ksapru/NemoClaw that referenced this pull request May 12, 2026
…DIA#2445)

## Summary

Reorganize the Get Started section, document the full runtime topology
in the Architecture reference, and clarify how to uninstall NemoClaw.
Prerequisites now live on their own page (with the tested-platform
matrix included directly from the README), Windows pre-setup is renamed
to `windows-preparation.md`, and DGX Spark readers are pointed to the
NVIDIA Spark playbook rather than an in-repo tutorial.

## Changes

**Get Started reorganization**
- New `docs/get-started/prerequisites.md`. Extracts Hardware, Software,
and the tested-platform matrix from Quickstart into its own page. The
matrix is pulled in via Sphinx `{include}` from the README so there is a
single source of truth.
- `docs/get-started/windows-setup.md` →
`docs/get-started/windows-preparation.md` (renamed to "Prepare Windows
for NemoClaw"). Nested under Prerequisites in the toctree.
- `docs/get-started/quickstart.md` no longer duplicates the
Prerequisites section; it links to the new page instead.
- `docs/index.md` Get Started toctree is now `Prerequisites` then
`Quickstart`.
- `docs/conf.py` redirects `get-started/windows-setup` →
`windows-preparation.html` so the pre-reorg URL still resolves.

**Architecture reference: Deployment Topology**
- New `## Deployment Topology` section in
`docs/reference/architecture.md` with a mermaid diagram showing the
runtime substrate — host CLI → Docker daemon → OpenShell gateway
container → embedded k3s cluster → sandbox pod → OpenClaw agent + plugin
— plus the inference router's role on the path to external providers.
- Per-layer role table (host CLI, Docker daemon, gateway container, k3s,
sandbox pod, inference router).
- Points DGX Spark readers to the [NVIDIA Spark
playbook](https://build.nvidia.com/spark/nemoclaw) for the
Spark-specific variant.

**Uninstall documentation**
- `docs/reference/commands.md` `nemoclaw uninstall` section corrects a
drift bug (the CLI does *not* auto-fall-back to a remote script; it
prints the versioned URL for manual review) and adds a comparison table
between `nemoclaw uninstall` and the hosted `curl … | bash` form.
- README and Quickstart Uninstall sections now lead with `nemoclaw
uninstall` (version-pinned, no network fetch) and keep the `curl … |
bash` form as a fallback for when the CLI is missing or broken. Both
link to the comparison table.

**Troubleshooting reference**
- New `## DGX Spark` section in `docs/reference/troubleshooting.md`
covering CoreDNS CrashLoop, `k3s` image-pull failure after a local
build, GPU passthrough (not CI-tested on Spark), `pip install`
system-packages errors, and the AI Workbench port 3000 conflict.
- Section header points to the Spark playbook for end-to-end
walkthroughs.
- Windows cross-links retargeted to
`../get-started/windows-preparation.md`.

**Platform matrix source of truth**
- `ci/platform-matrix.json` DGX Spark notes now link the Spark playbook.
README matrix regenerated.
- README Documentation table gains a Prerequisites row and updates the
pointer below the matrix to point at Prerequisites instead of a
now-removed hub.
- `scripts/generate-platform-docs.py` drops
`docs/get-started/quickstart.md` from its patch targets — the matrix
moved to `prerequisites.md` and is pulled via `{include}` from README,
so only README needs patching.
- `.pre-commit-config.yaml` `platform-matrix-sync` hook updated to match
(removed the quickstart path from both `git add` and `files`).

**Agent skill generator (`scripts/docs-to-skills.py`)**

Goal: skill files are self-contained. They never reference repository
paths like `../../../docs/…`, and they never couple the skill tree to
the repo layout.

- Rewrite precedence in `rewrite_doc_paths`:
1. If the link target maps to a generated skill, emit ``text (use the
`<skill>` skill)``.
2. Otherwise, if the target is a page inside `docs/`, emit an absolute
`[text](<html_baseurl><page>.html#frag)`.
3. Otherwise (target outside `docs/`, or no base URL), strip the
hyperlink and keep the link text. Self-containment wins over
navigability in the fallback.
- New `load_html_baseurl(docs_dir)` reads the `html_baseurl` assignment
from Sphinx's `conf.py` via `ast` (no `exec` side effects), so the
script is project-agnostic: any docs tree with that assignment works. A
warning is printed (and the script continues) if the base URL is
missing.
- Include placeholders (`> *Content included from … — see the original
doc for full text.*`) follow the same precedence: emit a published URL
if available, else drop the breadcrumb since the content is already
inlined.
- Fragment anchors are now preserved across the rewrite (the
pre-existing rewrite silently stripped them).
- Scope the `index.md` exclusion to the top-level `docs/index.md` only.
Subdirectory index pages (for example
`docs/get-started/platform-setup/index.md`) are legitimate hub content
and can now participate in skill grouping — which is what makes rule 1
above kick in for links to those hubs.
- Because emitted content no longer depends on where it is written, the
earlier `output_file` parameter plumbing and the multi-output-dir
invariant guard are gone. `output_dirs` can be any mirrors (symlinks,
bind mounts, independent trees) without caveat.

**Repo-root stub**
- `spark-install.md` rewritten as a short redirect paragraph pointing to
the NVIDIA Spark playbook and the Quickstart.

**Agent skills**
- `.agents/skills/` regenerated from the new doc tree.
`nemoclaw-user-get-started` now covers `prerequisites.md` +
`windows-preparation.md`; `nemoclaw-user-reference` picks up the revised
architecture, commands, and troubleshooting pages.

## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

The only non-doc code changes are to the skill-generator script
(`scripts/docs-to-skills.py`), the platform-matrix-generator target list
(`scripts/generate-platform-docs.py`), and the pre-commit hook entry.
Everything else is docs or generated docs.

## Verification
- [x] `check-docs.sh --only-links` phase 1 (local links) passes. Phase 2
flags `prerequisites.html` as "unreachable" because it is a new page not
yet published; it will resolve after this PR merges and the docs site
rebuilds.
- [ ] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)

Note on unchecked boxes: prek's CLI vitest suite surfaces pre-existing
environmental failures on my machine
(`nemoclaw/dist/blueprint/private-networks.js` missing and integration
tests that try to reach a live gateway). No source file under `src/`,
`nemoclaw/src/`, `bin/`, or `test/` is touched by this diff, so those
failures are unrelated. `make docs` wasn't run locally.

## AI Disclosure
- [x] AI-assisted — tool: Claude Code

---

Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a dedicated Prerequisites page with minimum/recommended
hardware, software versions, and platform notes.
* Added DGX Spark troubleshooting and an end-to-end local Ollama
walkthrough reference.

* **Documentation**
* Reorganized Get Started to surface Prerequisites and updated Windows
preparation wording.
* Reworked uninstall guidance to prefer the CLI `nemoclaw uninstall`
(local, version‑pinned) and document a hosted-script fallback and
comparison.
* Replaced a lengthy Spark install guide with an external playbook
pointer.

* **Reference**
* Expanded architecture and commands docs to clarify deployment
topology, credential flow, and uninstall behavior.

* **Chores**
* Updated docs generation/redirect tooling to emit published links and
target platform docs appropriately.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai coderabbitai Bot mentioned this pull request May 26, 2026
12 tasks
@miyoungc miyoungc deleted the docs/vdr branch May 27, 2026 20:52
@wscurran wscurran added area: docs Documentation, examples, guides, or docs build and removed documentation labels Jun 3, 2026
@wscurran wscurran added the chore Build, CI, dependency, or tooling maintenance label Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: docs Documentation, examples, guides, or docs build chore Build, CI, dependency, or tooling maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants