[NemoClaw][onboard][All Platforms] nemoclaw uninstall + reinstall flow leaves an orphaned sandbox that the reinstalled CLI can't recover or clean up
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 715
Description
## Description
Description
Running nemoclaw uninstall --yes (default flags, no --destroy-user-data) followed immediately by a fresh install of the same tag leaves the environment in an inconsistent state:
- Uninstall preserves
sandboxes.jsonunder~/.nemoclawby design, but also removes the OpenShell CLI, the Docker container/gateway, the gateway metadata, and all provider registrations — everything that would be needed to interact with the sandbox recorded in that preservedsandboxes.json. - On reinstall, the installer reads the preserved
sandboxes.json, tries to "recover and upgrade pre-existing sandboxes," and immediately hitsError: × No gateway metadata found for 'nemoclaw'because uninstall deleted the gateway registration that the recorded sandbox referenced. - The installer then bootstraps a new gateway (also named
nemoclaw), notices the recorded sandboxmy-assistantisn't observable on it, and printsSkipping 1 sandbox(es) not observed on the selected gateway — verify their recorded gateway or start them first. - The installer reports
=== Installation complete ===andExisting sandboxes were recovered and upgraded— but nothing was actually recovered.my-assistantis stranded: its metadata is insandboxes.json, its Docker image was removed during uninstall (Removed Docker image 80ed9cda5bf6), and the new gateway has no record of it.
There's also a version-drift oddity worth flagging: the stale-sandbox line reads NemoClaw image v0.0.77 → v0.0.76, i.e. the installer is proposing a downgrade from v0.0.77 to the requested v0.0.76. This is a consequence of NEMOCLAW_INSTALL_TAG=v0.0.76 being older than whatever built my-assistant originally, but the installer surfaces it as a routine "upgrade" step without warning.
Net effect: the "preserve sandboxes on uninstall" contract is broken — the preserved data is unrecoverable by design after uninstall removes its dependencies, and the reinstall path reports success while silently orphaning the user's sandbox.
Environment:
- Host: macOS (Mac Studio), user
hellonemoclaw - Container runtime:
colima - Node.js:
v22.23.1, npm10.9.8 - Uninstall command:
nemoclaw uninstall --yes - Reinstall command:
curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_TAG=v0.0.76 bash - Preserved sandbox:
my-assistant(stopped,v2026.6.10, imagev0.0.77)
Steps to reproduce
- Have a working NemoClaw install with at least one registered sandbox (
my-assistant, stopped is fine), built on a newer image than the tag you'll reinstall to. - Run:
nemoclaw uninstall --yes
Observe that it preserves
rebuild-backups and sandboxes.json under ~/.nemoclaw, but removes the OpenShell CLI, the gateway, all providers, and the Docker image.
3. Confirm the CLI is gone:
openshell gateway select
# zsh: command not found: openshell
curl -fsSL https://www.nvidia.com/nemoclaw.sh | NEMOCLAW_INSTALL_TAG=v0.0.76 bash
Expected output
One of the following, consistent behavior:
- Preferred: uninstall and reinstall are symmetric. Either uninstall preserves everything needed to recover the sandboxes it preserves (gateway metadata, provider registrations, and the Docker image referenced by
sandboxes.json), or it clearly warns that preservingsandboxes.jsonwithout those dependencies makes the preserved data unrecoverable and offers to purge it too. On reinstall,my-assistantis either brought back to a usable state on the new gateway or the user is given a concrete remediation path. - Acceptable: the reinstall path detects that the recorded sandboxes reference a gateway/image that no longer exist, prints an actionable diagnostic (e.g. "sandbox
my-assistantcannot be recovered because its Docker image was removed during uninstall; runnemoclaw sandbox forget my-assistantto clear it, ornemoclaw onboard my-assistantto rebuild"), and does not reportInstallation complete/Existing sandboxes were recovered and upgradedwhen nothing was recovered.
In addition, a proposed downgrade (v0.0.77 → v0.0.76) should be surfaced explicitly rather than framed as a routine upgrade step.
Actual output
Uninstall (relevant excerpt):
Preserving rebuild-backups, sandboxes.json under /Users/hellonemoclaw/.nemoclaw.
...
[2/6] OpenShell resources
Deleted all OpenShell sandboxes skipped
Deleted provider 'nvidia-nim' skipped
Deleted provider 'vllm-local' skipped
Deleted provider 'ollama-local' skipped
Deleted provider 'nvidia-ncp' skipped
Deleted provider 'nim-local' skipped
Gateway 'nemoclaw' already removed or unreachable
...
[4/6] Docker resources
Removed Docker image 80ed9cda5bf6
...
Removed contents of /Users/hellonemoclaw/.nemoclaw (preserved: rebuild-backups, sandboxes.json)
Reinstall (relevant excerpt):
[3/3] Onboarding
[INFO] Recovering and upgrading pre-existing sandboxes before onboarding…
Error: × No gateway metadata found for 'nemoclaw'.
│ Register it first with: openshell gateway add --name nemoclaw
│ Or list available gateways: openshell gateway select[2/8] Starting OpenShell gateway
Starting OpenShell Docker-driver gateway...
✓ Docker-driver gateway is healthy
✓ Active gateway set to 'nemoclaw'Stale sandboxes:
my-assistant v2026.6.10 unchanged; NemoClaw image v0.0.77 → v0.0.76 (stopped)Skipping 1 sandbox(es) not observed on the selected gateway — verify their recorded gateway or start them first.
No running stale sandboxes to rebuild.
[INFO] Existing sandboxes recovered; skipping generic onboarding.
[INFO] === Installation complete ===Existing sandboxes were recovered and upgraded.
No new sandbox onboarding was needed.
Notable specifics:
- Every step under
[2/6] OpenShell resourcesreportsskippedalongside "Deleted …" — the wording is contradictory. It reads as "Deleted X skipped," which is ambiguous about whether deletion happened. If the intent is "already gone, nothing to delete," the phrasing needs to beSkipped 'nvidia-nim' (already removed), notDeleted provider 'nvidia-nim' skipped. - The
Error: × No gateway metadata found for 'nemoclaw'line is printed mid-flow, then the installer proceeds and printsInstallation complete— the error was swallowed, not addressed. - Final lines claim
Existing sandboxes were recovered and upgradedandNo new sandbox onboarding was needed, both false in this run. One sandbox was silently skipped and the user is left with no path to recover or forget it. - The stale-sandbox line shows a downgrade (
v0.0.77 → v0.0.76) but doesn't call it out as such.
## Bug Details
| Field | Value |
|-------|-------|
| Priority | Unprioritized |
| Action | Dev - Open - To fix |
| Disposition | Open issue |
| Module | Machine Learning - NemoClaw |
| Keyword | NemoClaw, NEMOCLAW_GH_SYNC_APPROVAL, NemoClaw_Onboard |
---
[NVB#6432188]
Contributor guide
Assessment
This issue has not been assessed yet.