Repository navigation
v0.4.0 — spectator uninstall (inverse of install; rm -rf workdir)
Adds a first-class spectator uninstall verb. spectator down was always meant to be non-destructive (stops processes / containers / tmux, leaves the install on disk for next bring-up); v0.4.0 makes the cleanup-the-whole-thing case a first-class verb instead of "manually rm -rf and hope you typed the right path".
Behavior
$ ./spectator uninstall --target myspark1-local
This will stop everything Spectator launches on myspark1-local
and remove ~/.spectator/ (the entire workdir, including VSS clone,
audio-venv, ui-server state, and any transcripts in audio-out/).
Proceed? [y/N]:
- Confirms (defaults to No so a stray Enter doesn't nuke anything; pass
--force/-yfor scripts). - Calls
stack.down()first so VSS containers + tmux sessions exit cleanly. Best-effort — if down already ran, that's fine. rm -rf $workdir/with safety guards: the bash payload refuses to operate when the workdir resolves to empty ///$HOME.- Prints a checklist of categories deliberately left alone, with the canonical commands to clean each manually.
Left untouched (and why)
- Docker images cached locally (~30 GB). Re-pulling is slow (~30-45 min) and the cache may be useful for adjacent NIM-based tooling. List:
docker images | grep nvcr.io. Remove:docker rmi <image-id>. ~/.docker/config.jsonNGC login entry. May coexist with other registries the user uses. Revoke:docker logout nvcr.io.--apply-systemmutations (nvidia-ctk runtime config, docker group membership). These were opt-in via an explicit flag, so reversal is also explicit.~/.local/bin/uv. The user installed it and may use it for other projects.
Tests
53/53 (was 50, +3): bash payload pinned for safety guards + each "left alone" category mention; stack.down is called before rm -rf (verified for both local and remote paths via monkey-patched call-order capture); --help advertises --target / --workdir / --force and the destructive-action language.
down vs uninstall — when to use which
| down | uninstall | |
|---|---|---|
| Stops VSS containers | yes | yes (via down internally) |
| Kills tmux sessions | yes | yes (via down internally) |
| Removes $workdir/ | no | yes |
| Use case | between work sessions | tearing down a host you're done with |