Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e50d0e1
fix(uninstall): ignore OpenShell-orphaned siblings in cleanup scoping
rluo8 Jul 22, 2026
328f0d5
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
rluo8 Jul 22, 2026
fc698af
test(uninstall): keep gateway-segregation test bodies if-free
rluo8 Jul 22, 2026
bbd2777
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
rluo8 Jul 22, 2026
780f233
fix(uninstall): fail closed on malformed gateway lists
cjagwani Jul 22, 2026
ff943ad
fix(uninstall): revalidate sibling gateways before cleanup
cjagwani Jul 22, 2026
2b887b4
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
rluo8 Jul 23, 2026
9213097
test(uninstall): avoid conditional in gateway cleanup test
rluo8 Jul 23, 2026
7eec1ed
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
cjagwani Jul 23, 2026
7b4c3d7
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
cjagwani Jul 23, 2026
5cff3c2
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
cjagwani Jul 23, 2026
cb38276
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
cjagwani Jul 23, 2026
7d8ff70
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
rluo8 Jul 24, 2026
c60272f
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
rluo8 Jul 24, 2026
0f3f121
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
008bc09
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
04b5f40
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
27f15fb
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
a881bf8
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
ae4b01c
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
68c393a
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
272b22a
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
825ee34
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
a70e29d
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
fee0105
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
1b5f7cb
Merge branch 'main' into fix/7315-uninstall-orphan-sibling-gateway
senthilr-nv Jul 24, 2026
c2b79f2
fix(uninstall): preserve shared resources on unknown liveness
senthilr-nv Jul 24, 2026
475137a
docs(uninstall): explain uncertain gateway cleanup
senthilr-nv Jul 24, 2026
2e68328
merge: refresh from upstream/main
senthilr-nv Jul 24, 2026
6397dd4
docs(uninstall): qualify provider cleanup
senthilr-nv Jul 24, 2026
7af8434
test(uninstall): route gateway probes without branches
senthilr-nv Jul 24, 2026
b752fe1
merge: refresh from upstream/main
senthilr-nv Jul 24, 2026
631fb28
test(uninstall): model a valid gateway listing
senthilr-nv Jul 24, 2026
8c9565c
merge(main): refresh PR #7351 from upstream/main
senthilr-nv Jul 24, 2026
4eed094
fix(uninstall): preserve shared state without openshell
senthilr-nv Jul 24, 2026
a906f3b
test(uninstall): model OpenShell in PTY driver
senthilr-nv Jul 24, 2026
0c9ad7d
merge(main): refresh PR #7351 from upstream/main
senthilr-nv Jul 24, 2026
955fd5f
fix(uninstall): remove redundant gateway guard
senthilr-nv Jul 24, 2026
feb5093
merge(main): refresh PR #7351 from upstream/main
senthilr-nv Jul 24, 2026
c4edc0e
test(sandbox): restore file size budget
senthilr-nv Jul 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions docs/manage-sandboxes/uninstall-nemoclaw.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,18 @@ Do not use `--gateway` to select another instance; when supplied for compatibili
<Note>
For the default gateway, the uninstall command preserves `~/.nemoclaw/rebuild-backups/`, `~/.nemoclaw/backups/`, and `~/.nemoclaw/sandboxes.json` by default.
A non-default gateway uses the corresponding entries under `~/.nemoclaw/gateways/<port>/`.
When no sibling gateways remain, uninstall also removes the shared CLI, services, images, providers, configuration, models, and swap.
When uninstall confirms that no sibling gateways remain, it also removes the shared CLI, services, images, providers, configuration, models, and swap.
When sibling gateways remain, it removes only the selected gateway's resources and port-scoped state and preserves those shared host resources.
If the OpenShell command is unavailable or its gateway list cannot be read, uninstall cannot confirm that the selected gateway is the last one, so it uses the same scoped path and preserves the shared resources.
When the command itself is unavailable, uninstall exits nonzero before OpenShell cleanup so you can restore the command and retry.
Either way, the preserved entries above stay unless you pass `--destroy-user-data`.

Interactive runs prompt before they remove the preserved entries, and the default answer keeps them.
For non-interactive runs using `--yes`, `NEMOCLAW_NON_INTERACTIVE=1`, or a non-TTY shell, pass `--destroy-user-data` or set `NEMOCLAW_UNINSTALL_DESTROY_USER_DATA=1` to acknowledge data loss and remove the preserved entries.

`--yes` stays non-destructive by design and never purges preserved user data on its own.
Preserving `sandboxes.json` does not preserve the gateway registration, provider registrations, or Docker image its recorded sandboxes depend on.
Preserving `sandboxes.json` does not preserve the selected sandbox or gateway registration.
After uninstall confirms that no sibling gateways remain, it also removes the provider registrations and Docker image that the recorded sandboxes depend on.

Uninstall warns that those records cannot be recovered automatically on reinstall, and the remediation is `$$nemoclaw <name> destroy` followed by `$$nemoclaw onboard`.
</Note>
Expand Down
8 changes: 5 additions & 3 deletions docs/reference/commands.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3164,7 +3164,7 @@ It prints the versioned URL of the matching `uninstall.sh` so you can download,

When the gateway is externally supervised, uninstall preserves its process, Docker resources, and OpenShell binaries.
It still deletes the selected sandboxes and attempts to remove the modern local gateway registration.
When no sibling gateways remain, it also deletes NemoClaw provider registrations.
When uninstall confirms that no sibling gateways remain, it also deletes NemoClaw provider registrations.
It does not use the legacy `gateway destroy` command for that gateway.
<AgentOnly variant="openclaw">

Expand Down Expand Up @@ -3212,8 +3212,10 @@ The default gateway uses `~/.nemoclaw/`; a non-default gateway uses `~/.nemoclaw
| `backups/` | Host-side workspace backups that `scripts/backup-workspace.sh` writes. Refer to [Transfer State Manually](../manage-sandboxes/state-and-backups/transfer-state-manually). |
| `sandboxes.json` | Host-side sandbox registry. NemoClaw uses it to map sandbox names back to their persistence directories when you reinstall. |

When no sibling gateways remain, uninstall also removes shared host resources such as the gateway source clone, runtime state, and the Ollama auth proxy PID file.
When uninstall confirms that no sibling gateways remain, it also removes shared host resources such as the gateway source clone, runtime state, and the Ollama auth proxy PID file.
When sibling gateways remain, it removes only the selected gateway's resources and port-scoped state while preserving those shared host resources.
If the OpenShell command is unavailable or its gateway list cannot be read, uninstall cannot confirm that the selected gateway is the last one, so it uses the same scoped path and preserves the shared resources.
When the command itself is unavailable, uninstall exits nonzero before OpenShell cleanup so you can restore the command and retry.

`--yes` deliberately remains non-destructive for user data.
It only acknowledges the global `Proceed?` confirmation prompt and still preserves the listed entries.
Expand All @@ -3235,7 +3237,7 @@ Reinstall NemoClaw and re-onboard the sandbox before `$$nemoclaw <name> snapshot

The preserved `sandboxes.json` file does not make the recorded sandboxes recoverable on its own.
Uninstall deletes the selected sandboxes and attempts to remove the local gateway registration.
When no sibling gateways remain, it also deletes provider registrations.
After uninstall confirms that no sibling gateways remain, it also deletes provider registrations.
For a NemoClaw-managed gateway, it also removes the Docker image.
For an externally supervised gateway, it preserves Docker resources, but the registry still cannot recover deleted sandbox and provider resources.
Uninstall warns about this at preserve time.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ function psStub(pidStr: string, opts: { exited: Set<number>; cmdline?: string; o

function defaultRun(command: string, args: readonly string[]): RunResult {
switch (command) {
case "openshell":
return args[0] === "gateway" && args[1] === "list"
? ok(JSON.stringify([{ name: "nemoclaw" }]))
: ok("");
case "lsof":
return ok("");
default:
Expand Down
Loading
Loading