Sistemo v0.5.0: Storage-Driven Machine Lifecycle

Every machine now has a tracked root volume. Resize storage, move data between machines, and preserve disks across deletions. Storage is a first-class citizen.

v0.5.0 is here, and it brings the biggest architectural change since launch. Every machine now has a tracked root volume — storage is no longer a hidden implementation detail, it's a first-class resource you can inspect, resize, detach, and preserve independently of the machine that created it.

What changed

Root volumes

When you deploy a machine, Sistemo now automatically creates a tracked root volume for it. No extra flags needed — it just works.

sistemo machine deploy debian --name web --storage 5GB

That single command creates both the machine and a root volume named web-root with 5 GB of storage.

Volume resize

Need more space? Grow a volume without redeploying. Stop the machine, resize, start it back up.

sistemo machine stop web
sistemo volume resize web-root 10GB
sistemo machine start web

Attach and detach

Data volumes can be moved between machines. Create a volume once, attach it to whichever machine needs it, detach when done.

sistemo volume create 2G --name appdata
sistemo machine stop web
sistemo machine volume attach web appdata
sistemo machine start web

# later, move it to another machine
sistemo machine stop web
sistemo machine volume detach web appdata
sistemo machine volume attach api appdata
sistemo machine start api

Preserve storage on delete

The new --preserve-storage flag lets you delete a machine while keeping its volumes intact. Rebuild the machine later and reattach the same data.

Volume listing

$ sistemo volume list
NAME         SIZE    STATUS     ATTACHED TO   TYPE
web-root     5.0GB   attached   web           root
appdata      2.0GB   attached   web           data
pgbackup     1.0GB   detached   -             data

Why this matters

Before v0.5.0, a machine's root filesystem was a hidden file buried inside the vms/ directory. When you deleted a machine, the rootfs was deleted with it — no questions asked, no way to recover it.

Now the rootfs is a tracked volume. It shows up in sistemo volume list, it can survive machine deletion, and it can be resized without redeploying. This is how production infrastructure works — we built Sistemo on patterns proven in large-scale platforms — and now those patterns are available on your own hardware.

Example workflow

Here's a real workflow that shows the new storage features working together:

# Deploy with custom storage
sistemo machine deploy debian --name web --storage 5GB

# Create and attach a data volume
sistemo volume create 2G --name appdata
sistemo machine stop web
sistemo machine volume attach web appdata
sistemo machine start web

# Resize the root volume
sistemo machine stop web
sistemo volume resize web-root 10GB
sistemo machine start web

# Delete machine but keep data
sistemo machine delete web --preserve-storage
sistemo volume list  # volumes still there

After that last command, both web-root and appdata are still on disk, ready to be attached to a new machine whenever you need them.

Other improvements in v0.5.0

  • Per-IP rate limiting — configurable, defaults to 100 requests per second
  • Graceful daemon shutdown — in-flight operations complete cleanly on SIGTERM
  • Configurable reconciler interval and SSH timeout — tune the daemon to your workload
  • Security hardening — XSS prevention, input validation, daemon URL validation
  • Better error messages — no more raw e2fsck output leaking into the CLI
  • Comprehensive audit logging — every operation is tracked in the history log
  • JSON output — add -o json to list and status commands for scripting
  • Skip confirmation — use -y to skip delete prompts in scripts
  • Command aliases ls for list, rm for delete, show for status
  • Boot from volume — use --volume to deploy a machine from an existing root volume