fix(install): bootstrap OpenShell on git-clone source installs#4060
Conversation
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>
📝 WalkthroughWalkthroughAdds 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. ChangesOpenShell Auto-Install Bootstrap
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Auto-dispatched E2E: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
PR Review AdvisorRecommendation: blocked 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. Full advisor summaryPR Review AdvisorBase: 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
🔴 Blockers
🟡 Warnings
🔵 Suggestions
Acceptance coverage
Security review
Test / E2E status
✅ What looks good
Review completeness
|
Selective E2E Results — ✅ All requested jobs passedRun: 26276434173
|
…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>
Selective E2E Results — ✅ All requested jobs passedRun: 26277942536
|
ericksoa
left a comment
There was a problem hiding this comment.
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.
## 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 --> [](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>
Summary
On a fresh host,
git clone NemoClaw && bash install.shlands in the source-checkout branch ofinstall_nemoclaw, which intentionally skipped the OpenShell CLI install — the assumption being that a developer running./scripts/install.shmanages 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 orscripts/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, invokescripts/install-openshell.shwhencommand_exists openshellis false. The bootstrap respectsNEMOCLAW_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 toNEMOCLAW_DEFER_OPENSHELL_INSTALL=1so they don't fetch openshell over the network.Type of Change
Verification
npx prek run --all-filespassesnpm testpassesmake docsbuilds without warnings (doc changes only)Signed-off-by: Tinson Lai tinsonl@nvidia.com
Summary by CodeRabbit
New Features
Tests