banger/internal
Thales Maciel b33f24865c
vm run --rm: ephemeral sandboxes
New `--rm` flag deletes the VM once the ssh session or `-- cmd`
exits, making `vm run` one-shot. Exit code from command mode still
propagates correctly.

Semantics:
- Create fails → no VM to delete, nothing to do.
- SSH-wait timeout → VM intentionally kept alive so `vm logs <name>`
  shows why; the timeout error already pointed users at that. Even
  with --rm, this path skips delete — a wedged sshd is exactly when
  you want post-mortem access.
- Session/command ends (any exit code, any reason) → VM is deleted
  via `vm.delete` RPC. Uses a fresh 10s context so Ctrl-C during the
  session doesn't abort the cleanup.

New vmDeleteFunc seam at the top of banger.go alongside the other
RPC seams. Two tests cover the happy path (session ends cleanly →
delete fires with correct ref) and the skip-on-timeout path (ssh
wait errors → delete does NOT fire).

README updated with an ephemeral example and a note about the
timeout-skip behaviour.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 16:06:46 -03:00
..
api Remove image build --from-image; doctor treats catalog images as OK 2026-04-18 15:54:29 -03:00
buildinfo Stamp shared build metadata into banger binaries 2026-03-22 17:14:06 -03:00
cli vm run --rm: ephemeral sandboxes 2026-04-18 16:06:46 -03:00
config vm create: auto-pull image and kernel from catalogs if missing 2026-04-18 15:10:26 -03:00
daemon Remove image build --from-image; doctor treats catalog images as OK 2026-04-18 15:54:29 -03:00
firecracker Add experimental Void guest workflow and vsock agent 2026-03-19 14:51:25 -03:00
guest Add guest.session.send and vm.workspace.export RPCs 2026-04-14 15:21:50 -03:00
guestconfig Refactor VM lifecycle around capabilities 2026-03-18 19:28:26 -03:00
guestnet Stop using kernel IP autoconfig for runtime VMs 2026-03-21 21:54:18 -03:00
hostnat Move helper NAT management into Go 2026-03-17 15:07:49 -03:00
imagecat publish-golden-image: content-addressed tarball names 2026-04-18 15:26:57 -03:00
imagepull imagepull/BuildExt4: omit positional fs-size; rely on file truncation 2026-04-18 14:58:42 -03:00
kernelcat Prune legacy void/alpine + customize.sh flows 2026-04-18 15:39:53 -03:00
model Remove image build --from-image; doctor treats catalog images as OK 2026-04-18 15:54:29 -03:00
namegen Remove runtime-bundle image dependencies 2026-03-21 18:34:53 -03:00
opencode Wait for real guest vsock health before opencode 2026-03-21 21:14:22 -03:00
paths Phase 1: imagepull package — pull, flatten, ext4 2026-04-16 17:22:13 -03:00
policy Add vsock-backed VM port inspection 2026-03-19 15:52:11 -03:00
rpc Propagate RPC cancellation to daemon requests 2026-03-16 18:28:33 -03:00
sessionstream Add guest sessions and agent VM defaults 2026-04-12 23:48:42 -03:00
store Add guest sessions and agent VM defaults 2026-04-12 23:48:42 -03:00
system Phase B-1: ownership fixup via debugfs pass 2026-04-16 18:04:22 -03:00
toolingplan Bootstrap vm run tooling before attach 2026-03-29 11:38:05 -03:00
vmdns Replace mapdns with daemon DNS 2026-03-17 15:49:35 -03:00
vsockagent Add vsock-backed VM port inspection 2026-03-19 15:52:11 -03:00
webui Remove image build --from-image; doctor treats catalog images as OK 2026-04-18 15:54:29 -03:00