Skip to content

fix(install): bootstrap OpenShell on git-clone source installs#4060

Merged
ericksoa merged 2 commits into
mainfrom
fix/install-source-openshell-3989
May 22, 2026
Merged

fix(install): bootstrap OpenShell on git-clone source installs#4060
ericksoa merged 2 commits into
mainfrom
fix/install-source-openshell-3989

Conversation

@laitingsheng
Copy link
Copy Markdown
Contributor

@laitingsheng laitingsheng commented May 22, 2026

Summary

On a fresh host, git clone NemoClaw && bash install.sh lands in the source-checkout branch of install_nemoclaw, which intentionally skipped the OpenShell CLI install — the assumption being that a developer running ./scripts/install.sh manages their own openshell. End users following the documented install flow still ended up at the [3/3] Onboarding step with the circular hint "Run the NemoClaw installer or scripts/install-openshell.sh", telling them to re-run the installer they were already inside.

Related Issue

Fixes #3989

Changes

  • scripts/install.sh: in the source-checkout branch, invoke scripts/install-openshell.sh when command_exists openshell is false. The bootstrap respects NEMOCLAW_DEFER_OPENSHELL_INSTALL=1, matching the existing GitHub-clone branch contract. A developer who already has openshell on PATH keeps autonomy: any version skips the install.
  • test/install-preflight.test.ts: two new tests covering the source-checkout bootstrap (invoke when missing, skip when present). Existing source-checkout tests opt in to NEMOCLAW_DEFER_OPENSHELL_INSTALL=1 so they don't fetch openshell over the network.

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)

Verification

  • 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)

Signed-off-by: Tinson Lai tinsonl@nvidia.com

Summary by CodeRabbit

  • New Features

    • Installer now consistently ensures the OpenShell CLI is available during setup for both persistent source checkouts and cloned installs.
    • Added a configurable defer option and smarter install modes to control whether/install when OpenShell is installed.
  • Tests

    • Expanded installer tests to verify OpenShell install behavior and added source-checkout scenarios; tests pass the defer flag in preflight runs.

Review Change Stack

When a user clones the NemoClaw repo and runs `bash install.sh` on a
fresh host, the source-checkout branch of `install_nemoclaw` skipped
the OpenShell CLI install entirely. Onboard step [3/3] then aborted
with the circular hint "Run the NemoClaw installer or
`scripts/install-openshell.sh`" — telling the user to re-run the
installer they were already inside.

Add an explicit `command_exists openshell` gate so the source-checkout
branch invokes `scripts/install-openshell.sh` only when the host has
no openshell on PATH. A developer running `./scripts/install.sh` with
their own openshell still keeps autonomy: an existing openshell at any
version skips the install. The bootstrap also respects
`NEMOCLAW_DEFER_OPENSHELL_INSTALL=1`, matching the GitHub-clone
branch's pre-upgrade-backup contract.

Fixes #3989

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 22, 2026

📝 Walkthrough

Walkthrough

Adds a shared helper to conditionally install OpenShell during install.sh and updates installer paths to call it; tests add NEMOCLAW_DEFER_OPENSHELL_INSTALL to spawned installer envs and include source-checkout cases that assert install vs skip behavior.

Changes

OpenShell Auto-Install Bootstrap

Layer / File(s) Summary
Shared helper and install.sh call sites
scripts/install.sh
Adds maybe_install_openshell_during_install(mode) and updates the source-checkout and GitHub-clone branches of install_nemoclaw to call it (if-missing and force).
Test updates and new source-checkout tests
test/install-preflight.test.ts
Adds NEMOCLAW_DEFER_OPENSHELL_INSTALL=1 to spawned installer envs across tests and introduces two source-checkout tests verifying that the installer invokes scripts/install-openshell.sh when openshell is missing and skips it when present.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

bug, Platform: Windows/WSL

Suggested reviewers

  • ericksoa

Poem

🐰 A rabbit hops through install scripts with cheer,
Adds a helper so OpenShell can appear.
Tests sit politely with their env set aside,
Now onboarding won't loop — it can proceed with pride. 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% 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
Title check ✅ Passed The title accurately summarizes the main change: fixing the install script to bootstrap OpenShell during git-clone source installs, which directly addresses the problem in issue #3989.
Linked Issues check ✅ Passed The code changes comprehensively implement the primary objective from #3989: install.sh now auto-installs OpenShell during source-checkout installs, making the bootstrap flow self-sufficient on fresh machines while respecting the defer environment variable.
Out of Scope Changes check ✅ Passed All changes are directly aligned with the stated objective: extracting OpenShell bootstrap logic, adding it to the source-checkout branch, and adding comprehensive tests for the new behavior; no unrelated modifications detected.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ 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 fix/install-source-openshell-3989

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

@laitingsheng laitingsheng added Getting Started Use this label to identify setup, installation, or onboarding issues. fix labels May 22, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

E2E Advisor Recommendation

Required E2E: onboard-resume-e2e, cloud-onboard-e2e
Optional E2E: openshell-gateway-upgrade-e2e, launchable-smoke-e2e

Dispatch hint: onboard-resume-e2e,cloud-onboard-e2e

Auto-dispatched E2E: onboard-resume-e2e, cloud-onboard-e2e via nightly-e2e.yaml at 8367546d08da824d9a427a40612a84e893a20c0enightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • onboard-resume-e2e (high): Runs bash install.sh from a checked-out PR before exercising onboarding resume. This is the closest existing E2E to the changed source-checkout installer path and should prove that a CI host without openshell gets OpenShell bootstrapped and can continue into real onboarding.
  • cloud-onboard-e2e (high): Exercises the public/curl installer path, validates the GitHub-clone branch still installs OpenShell, puts nemoclaw and openshell on PATH, and completes real OpenClaw cloud onboarding plus sandbox/security checks.

Optional E2E

  • openshell-gateway-upgrade-e2e (high): Useful adjacent confidence because the refactor preserves NEMOCLAW_DEFER_OPENSHELL_INSTALL semantics for the pre-upgrade backup flow before installing/upgrading OpenShell.
  • launchable-smoke-e2e (medium): Optional broader install confidence: verifies a community/bootstrap install path leaves both nemoclaw and openshell available and can onboard a sandbox, though it is less directly tied to scripts/install.sh source-checkout behavior.

New E2E recommendations

  • source-checkout installer OpenShell bootstrap (medium): Existing scenario-based repo-current setup links the CLI directly and does not run scripts/install.sh, so scenario coverage may miss regressions where a fresh git clone runs the installer with openshell absent from PATH.
    • Suggested test: Add a scenario or nightly job that starts from a clean Ubuntu runner/source checkout, runs scripts/install.sh or install.sh with openshell absent, asserts install-openshell.sh ran, then verifies openshell and nemoclaw are on PATH before onboarding.

Dispatch hint

  • Workflow: nightly-e2e.yaml
  • jobs input: onboard-resume-e2e,cloud-onboard-e2e

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

PR Review Advisor

Recommendation: blocked
Confidence: high
Analyzed HEAD: 8367546d08da824d9a427a40612a84e893a20c0e
Findings: 2 blocker(s), 1 warning(s), 1 suggestion(s)

This is an automated advisory review. A human maintainer must make the final merge decision.

Limitations: Review used trusted deterministic context plus read-only file/diff inspection; no tests, scripts, package-manager commands, installers, or PR-provided instructions were executed.; The provided diff is truncated, but the changed hunks for scripts/install.sh and test/install-preflight.test.ts relevant to this review were available.; No passing required E2E result for onboard-resume-e2e or cloud-onboard-e2e at 8367546 was included in the trusted context.; A selective E2E success comment exists for an older SHA and was not counted for this head.; Review-thread state was reported as unavailable/unknown despite GraphQL returning an empty reviewThreads.nodes array.; Linked issue #3989 has no comments in the trusted context, so acceptance extraction is based on the issue body only.

Workflow run

Full advisor summary

PR Review Advisor

Base: origin/main
Head: HEAD
Analyzed SHA: 8367546d08da824d9a427a40612a84e893a20c0e
Recommendation: blocked
Confidence: high

The installer fix is small and well-targeted, with unit coverage for the new source-checkout OpenShell bootstrap, but the PR is blocked by GitHub merge state and missing required E2E results for the current head SHA.

Gate status

  • CI: pass — 5 required status context(s) completed with no failures for 8367546: checks, commit-lint, dco-check, check-hash, changes. Non-required contexts still pending: 3; failed: 0.
  • Mergeability: fail — mergeStateStatus=BLOCKED for PR fix(install): bootstrap OpenShell on git-clone source installs #4060 at head 8367546; GraphQL also reports reviewDecision=REVIEW_REQUIRED.
  • Review threads: unknown — No review thread state was available in the trusted gate context. GraphQL reviewThreads.nodes is empty, but unresolved-thread state was not independently confirmed.
  • Risky code tested: warning — Risky areas detected: installer/bootstrap shell and onboarding/host glue. test/install-preflight.test.ts adds source-checkout OpenShell bootstrap tests, but trusted testDepth says scripts/install.sh requires E2E coverage.

🔴 Blockers

  • PR merge state is blocked: The PR cannot be treated as merge-ready while GitHub reports mergeStateStatus=BLOCKED and reviewDecision=REVIEW_REQUIRED for the current head SHA, even though required status contexts are green.
    • Recommendation: Resolve the repository merge gate and required review state, then re-check mergeability for head SHA 8367546.
    • Evidence: Trusted context: mergeStateStatus=BLOCKED; graphQl.pullRequest.reviewDecision=REVIEW_REQUIRED; headRefOid=8367546d08da824d9a427a40612a84e893a20c0e.
  • Required E2E results are missing for the current installer bootstrap change (scripts/install.sh:1397): The PR changes installer/bootstrap shell that affects fresh-host OpenShell installation and onboarding. E2E Advisor requires onboard-resume-e2e and cloud-onboard-e2e for this head SHA, and states they were auto-dispatched, but no passing result for those required jobs at 8367546 was provided. A selective E2E success comment exists only for the older SHA 7f4dcf9 and cannot satisfy this head.
    • Recommendation: Wait for onboard-resume-e2e and cloud-onboard-e2e to complete successfully for 8367546, or provide trusted status evidence tied to exactly that SHA.
    • Evidence: E2E Advisor comment: Required E2E: onboard-resume-e2e, cloud-onboard-e2e; Auto-dispatched via nightly-e2e.yaml at 8367546. No matching pass result is present in the provided context.

🟡 Warnings

  • Unit tests stub install-openshell.sh and cannot prove real install/onboard behavior (test/install-preflight.test.ts:628): The added tests verify the intended invocation semantics when OpenShell is missing or present, but they replace scripts/install-openshell.sh and openshell with local stubs. This is appropriate unit coverage, but it does not validate real download/checksum behavior, PATH refresh, user-local OpenShell preference, architecture handling, or successful onboarding after bootstrap.
    • Recommendation: Keep the unit tests, and rely on required E2E for the real source-checkout installer path with OpenShell initially absent.
    • Evidence: New tests write a fake scripts/install-openshell.sh that appends 'install-openshell.sh invoked' and exits 0; trusted testDepth verdict is e2e_required for scripts/install.sh.

🔵 Suggestions

Acceptance coverage

  • met — On a fresh Windows ARM WSL2 install (no OpenShell present), running bash install.sh from the NemoClaw source tree completes [1/3] Node.js and [2/3] NemoClaw CLI successfully, then aborts at [3/3] Onboarding with:: The PR addresses this failure path by calling maybe_install_openshell_during_install if-missing in the source-checkout branch after npm link and before refresh/verify/onboarding. This should prevent the missing-OpenShell preflight from being the reason onboarding aborts.
  • met — This is circular advice: the user is currently running the NemoClaw installer (bash install.sh).: The source-checkout path now runs scripts/install-openshell.sh automatically when command_exists openshell is false, removing the need for the user to re-run the installer or manually discover the script in the targeted path.
  • met — Either:: The PR satisfies the either/or by implementing option (a).
  • met — - (a) install.sh should run scripts/install-openshell.sh itself as part of step [2/3] or [3/3], OR: scripts/install.sh adds maybe_install_openshell_during_install and invokes it in the source-checkout branch after 'Linking NemoClaw CLI', which is part of the phase [2/3] install flow.
  • met — - (b) The error message should explicitly say "Run scripts/install-openshell.sh" and drop the "Run the NemoClaw installer" suggestion (which is the loop the user is already in).: This alternate clause is not directly implemented, but the issue accepted (a) OR (b); option (a) is implemented.
  • partial — 1. Fresh WSL2 Ubuntu-24.04 (no NemoClaw, no OpenShell, no nemoclaw artifacts in ~/.local/bin or ~/.nemoclaw).: Unit tests create a fresh temp HOME and fake PATH with no openshell for the missing-OpenShell case, but a real fresh WSL2 Ubuntu-24.04 run has not been confirmed for the current head SHA in the provided E2E results.
  • partial — 2. Clone NemoClaw main HEAD:: Tests simulate a source checkout using package.json plus .git/NEMOCLAW_REPO_ROOT. They do not perform a real git clone of the current head in the unit test. E2E Advisor requires onboard-resume-e2e for closest source-checkout coverage.
  • partial — 3. Run install.sh:: Tests spawn bash [INSTALLER] with NEMOCLAW_NON_INTERACTIVE=1 and NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1, but real installer execution with actual OpenShell download/onboarding awaits required E2E results for this head SHA.
  • met — 4. install.sh completes [1/3] Node.js and [2/3] NemoClaw CLI successfully. At [3/3] Onboarding, observe the error.: The regression path is changed so OpenShell bootstrap occurs during phase [2/3] before onboarding preflight can emit the circular missing-OpenShell error. New tests assert install-openshell.sh is invoked when OpenShell is absent.
  • met — Either:: The Expected Result either/or is satisfied by option (a).
  • met — - (a) install.sh runs scripts/install-openshell.sh as part of its bootstrap so the user gets OpenShell installed in the same flow, OR: scripts/install.sh calls spin "Installing OpenShell CLI" bash "${NEMOCLAW_SOURCE_ROOT}/scripts/install-openshell.sh" through the helper; the source-checkout call uses if-missing mode.
  • met — - (b) install.sh's "OpenShell missing" error says exactly which script to run, without suggesting the installer the user is already running.: Not directly changed, but not required because option (a) is implemented.
  • partial — In either case the install.sh flow should be self-sufficient on a fresh box (Node → NemoClaw CLI → OpenShell → onboard). Today it stops one step short and leaves a confusing breadcrumb.: Code order now installs Node/NemoClaw, then invokes OpenShell bootstrap before onboarding. Unit tests cover helper invocation and skip behavior. Full self-sufficient fresh-box behavior still needs onboard-resume-e2e and cloud-onboard-e2e passes for 8367546.
  • partial — User experience:: The code targets the UX issue by avoiding manual OpenShell discovery in the source-checkout flow, but runtime UX confirmation is pending required E2E for the current head.
  • met — - nemoclaw onboard still fails because OpenShell is genuinely not installed.: The changed source-checkout installer should leave OpenShell installed when it was absent, so subsequent onboarding should no longer fail solely because OpenShell is missing.
  • met — - User has to discover separately that the fix is bash ~/NemoClaw-main/scripts/install-openshell.sh, not "re-run install.sh".: The installer now discovers and runs ${NEMOCLAW_SOURCE_ROOT}/scripts/install-openshell.sh automatically when OpenShell is missing.
  • partial — Possibly a regression of NVB#6000851 / GH#708 (Closed Fixed 2026-04-16) which described "nemoclaw onboard will automatically install openshell in the PATH ~/.local/bin/openshell" — that bug suggested auto-install was working.: This PR restores auto-install behavior for install.sh source-checkout installs, but it does not directly test the older nemoclaw onboard auto-install contract. Required E2E should validate OpenShell availability and onboarding.
  • met — Discovered during ARM64 validation for PR chore: upgrade agent runtime dependencies #3925 QA but is not PR-introduced — reproduces on main HEAD cfa817b.: The PR is a targeted fix to active installer files. Trusted drift evidence confirms scripts/install.sh and test/install-preflight.test.ts still exist and have recent history; no rename drift was reported.
  • met — Linked issue comments: Trusted context reports issue [WSL2][Install] install.sh does not auto-install OpenShell, aborts onboard with circular "Run the NemoClaw installer" advice #3989 has comments: 0, so there are no linked issue comments to extract.

Security review

  • pass — 1. Secrets and Credentials: No hardcoded secrets, tokens, passwords, PEM/key material, credential JSON, or secret logging were added. Test fixtures use temp paths and local stubs only.
  • warning — 2. Input Validation and Data Sanitization: The installer now executes ${NEMOCLAW_SOURCE_ROOT}/scripts/install-openshell.sh from the checkout when OpenShell is missing. This is consistent with the trusted installer source-checkout model and variables are quoted, but it remains high-risk shell execution of checkout-local code in an installer path.
  • pass — 3. Authentication and Authorization: Not applicable — no endpoints, authentication flows, authorization decisions, token validation, or privilege-boundary checks are added or modified.
  • warning — 4. Dependencies and Third-Party Libraries: No new dependency is added, but the change expands when the existing OpenShell installer runs during source-checkout installs. The PR relies on existing install-openshell.sh supply-chain controls and does not itself alter pinning/checksum verification.
  • pass — 5. Error Handling and Logging: No sensitive data is logged. The helper uses existing info/spin behavior and preserves explicit deferral logging when NEMOCLAW_DEFER_OPENSHELL_INSTALL is set.
  • pass — 6. Cryptography and Data Protection: Not applicable — this diff introduces no cryptographic operations, key handling, encryption, hashing, or transport-security logic.
  • pass — 7. Configuration and Security Headers: No HTTP endpoints, CORS/CSP, Dockerfile, container user, port exposure, or security-header configuration changes are introduced. The existing deferral environment variable remains respected.
  • warning — 8. Security Testing: Unit tests cover the positive missing-OpenShell path and the negative already-present path with stubs, and unrelated installer tests opt into deferral to avoid unintended network bootstrap. Because this is installer/bootstrap shell affecting real host onboarding, required E2E remains necessary and has not been observed passed for the current head SHA.
  • warning — 9. Holistic Security Posture: The change improves install reliability and reduces a confusing failure loop. No sandbox escape, SSRF bypass, policy bypass, credential leakage, blueprint tampering, or workflow trusted-code-boundary issue was found in the diff. Overall posture still depends on real E2E validation of download/PATH/onboarding behavior.

Test / E2E status

  • Test depth: e2e_required — Runtime/sandbox/infrastructure paths need real execution coverage: scripts/install.sh. Unit tests validate invocation semantics but cannot prove real OpenShell download, PATH refresh, architecture handling, or onboarding behavior.
  • E2E Advisor: missing
  • Required E2E jobs: onboard-resume-e2e, cloud-onboard-e2e
  • Missing for analyzed SHA: onboard-resume-e2e, cloud-onboard-e2e

✅ What looks good

  • The PR is small and scoped to the linked installer bug: only scripts/install.sh and test/install-preflight.test.ts changed.
  • The new helper centralizes OpenShell bootstrap behavior and preserves NEMOCLAW_DEFER_OPENSHELL_INSTALL=1 for pre-upgrade backup flows.
  • The source-checkout path uses if-missing mode, preserving developer autonomy when an openshell binary is already on PATH.
  • The existing GitHub-clone path is refactored through the same helper in force mode, reducing duplicate installer logic.
  • New tests cover both missing-OpenShell invocation and already-present skip behavior.
  • Existing source-checkout tests were updated with NEMOCLAW_DEFER_OPENSHELL_INSTALL=1 to avoid accidental network/bootstrap side effects.
  • Required CI status contexts are green for the current head SHA.

Review completeness

  • Review used trusted deterministic context plus read-only file/diff inspection; no tests, scripts, package-manager commands, installers, or PR-provided instructions were executed.
  • The provided diff is truncated, but the changed hunks for scripts/install.sh and test/install-preflight.test.ts relevant to this review were available.
  • No passing required E2E result for onboard-resume-e2e or cloud-onboard-e2e at 8367546 was included in the trusted context.
  • A selective E2E success comment exists for an older SHA and was not counted for this head.
  • Review-thread state was reported as unavailable/unknown despite GraphQL returning an empty reviewThreads.nodes array.
  • Linked issue [WSL2][Install] install.sh does not auto-install OpenShell, aborts onboard with circular "Run the NemoClaw installer" advice #3989 has no comments in the trusted context, so acceptance extraction is based on the issue body only.
  • Human maintainer review required: yes

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26276434173
Target ref: 7f4dcf9ef29fc199eca9dc3d904c845dfc2a54d2
Workflow ref: main
Requested jobs: cloud-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success

…g typo

PR #4060 review fixes.

- `scripts/install.sh`: extract `maybe_install_openshell_during_install`
  used by both the source-checkout (`if-missing`) and GitHub-clone
  (`force`) branches. Removes the duplicated defer/spin/prefer block
  and refreshes the stale "source-checkout intentionally skips" comment
  that no longer matched the new behaviour.
- `test/install-preflight.test.ts`: rename `opensellLog` -> `openshellLog`.

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26277942536
Target ref: 8367546d08da824d9a427a40612a84e893a20c0e
Workflow ref: main
Requested jobs: onboard-resume-e2e,cloud-onboard-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
onboard-resume-e2e ✅ success

@laitingsheng laitingsheng added the v0.0.50 Release target label May 22, 2026
Copy link
Copy Markdown
Contributor

@ericksoa ericksoa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. I reviewed the installer bootstrap change and the independent adversarial pass found no blockers. Local validation also passed: npm run build:cli, full test/install-preflight.test.ts (98/98), and git diff --check. Live PR checks are green on head 8367546.

@ericksoa ericksoa merged commit ec40005 into main May 22, 2026
32 checks passed
cv pushed a commit that referenced this pull request May 22, 2026
## Summary
Refreshes the NemoClaw docs for the v0.0.49 hardening release, including
release notes, command reference updates, troubleshooting guidance,
version metadata, and regenerated user skills.

## Changes
- #3796, #3854, #3863, #3866, #3984, #4001, #4011, #4013, #4020, #4022,
#4023, #4060, #4062 -> `docs/about/release-notes.mdx`: Adds the v0.0.49
hardening release summary covering gateway reliability,
status/doctor/shields and debug UX, OpenClaw compatibility, messaging
channel teardown, Hermes policy scoping, snapshots, source installs and
Docker group security note, GPU preflight, CLI usage, E2E, and CI
improvements.
- #3796 -> `docs/manage-sandboxes/backup-restore.mdx` and
`docs/reference/commands.mdx`: Documents `snapshot restore --to`
overwrite protection and the `--force` opt-in.
- #3863, #4013, #4020, #4023 -> `docs/reference/commands.mdx`: Documents
missing channel argument usage, sandbox-scoped custom preset matching,
session policy preset sync, and gateway failure classification (uses the
real probe states from `src/lib/status-command-deps.ts`).
- #4022, #4060, #4062 -> `docs/reference/troubleshooting.mdx`: Adds
guidance for gateway-down `connect`, source checkout OpenShell
bootstrapping, WDDM placeholder GPU names, and Jetson sandbox GPU
passthrough.
- Release prep -> `docs/project.json`, `docs/versions1.json`,
`.agents/skills/nemoclaw-user-*`: Bumps docs metadata to 0.0.49 and
refreshes generated user skills from the Fern docs.

## 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)

## Verification
- [x] `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)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

\`make docs\` was attempted locally but did not complete because \`npm\`
returned \`403 Forbidden\` while fetching \`fern-api\` from
\`registry.npmjs.org\` in the sandboxed environment.

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

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

## Summary by CodeRabbit

* **Documentation**
* Released v0.0.49 with reliability and compatibility improvements
including faster gateway failure diagnostics and safer snapshot restore
behavior
* Enhanced snapshot restore documentation with `--to` cloning and
`--force` overwrite requirements
* Expanded troubleshooting guides for source installs, GPU setup, and
gateway recovery
* Clarified Docker group access requirements and improved CLI command
reference

* **Chores**
  * Version bumped to 0.0.49

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/4078?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix Getting Started Use this label to identify setup, installation, or onboarding issues. v0.0.50 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[WSL2][Install] install.sh does not auto-install OpenShell, aborts onboard with circular "Run the NemoClaw installer" advice

2 participants