Skip to content
Sistemo
GitHub Docs Install

Machines

Deploy

sistemo machine deploy debian
# or: sistemo vm deploy debian
sistemo machine deploy ./my-image.rootfs.ext4 --name my-vm
sistemo machine deploy debian --vcpus 4 --memory 2G --storage 10G --name dev-box
sistemo machine deploy debian --attach=mydata
sistemo machine deploy --volume web-root --name web2
sudo sistemo image build nginx:latest
sistemo machine deploy nginx --name my-nginx
sistemo machine deploy https://example.com/images/custom.rootfs.ext4
sistemo machine deploy debian --name web --expose 80 --expose 8443:443

The --expose flag maps a host port to a machine port. Use hostPort:machinePort for different ports, or just port to map the same port on both sides. See Port expose for details.

sistemo network create backend
sistemo machine deploy debian --name db1 --network backend

Sistemo automatically resolves images from cache or the registry, injects its SSH key and /init script into every deployed machine, so the browser terminal and exec work out of the box.

List, start, stop, restart, delete

sistemo machine list
sistemo machine start debian
sistemo machine stop debian        # keeps the disk, can restart later
sistemo machine restart debian     # stop + start in one command
sistemo machine delete debian      # removes everything
sistemo machine delete debian -y   # skip confirmation prompt

You can use the machine name or UUID interchangeably. restart preserves the machine's IP address and port expose rules.

Aliases: ls for list, rm for delete, show for status:

sistemo machine ls                 # same as sistemo machine list
sistemo machine rm debian -y       # same as sistemo machine delete debian -y
sistemo machine show debian        # same as sistemo machine status debian

JSON output: Add -o json to any list or status command for machine-readable output:

sistemo machine list -o json
sistemo machine status debian -o json

Browser terminal

sistemo machine terminal debian

Opens a browser tab at http://localhost:7777/terminals/vm/<id> with xterm.js over WebSocket (SSH under the hood).

Info

The machine image must have openssh-server for the browser terminal to work. Pre-built images include it. When building from Docker with sistemo image build, openssh-server is automatically installed via chroot if it's missing — so any Docker image works out of the box.

SSH into a machine

sistemo machine ssh debian

Opens an interactive SSH session using the sistemo SSH key. No password needed.

Run commands

For non-interactive commands (scripting, automation):

sistemo machine exec debian uname -a
sistemo machine exec debian df -h
sistemo machine exec debian -- cat /etc/os-release

Commands with flags work directly — sistemo passes everything after the machine name to SSH.

For commands with shell operators, quote the whole thing:

sistemo machine exec debian "ls -la /tmp && echo done"

Logs and status

sistemo machine logs debian    # Firecracker boot log
sistemo machine status debian  # machine details: IP, namespace, status, created time

Volumes

Every machine gets a root volume automatically when deployed. The root volume holds the OS and is named {machine-name}-root.

Attaching data volumes

For persistent data that should survive machine deletes, create and attach a data volume:

sistemo volume create 5G --name pgdata
sistemo machine deploy debian --name db --attach pgdata

The --attach flag accepts comma-separated names for multiple volumes:

sistemo machine deploy debian --attach pgdata,uploads

Volume status

Volume information is included in machine status:

sistemo machine status db

This shows attached volumes along with the machine's IP, ports, and resource allocation.

Preserving data on delete

By default, deleting a machine removes its root volume. Use --preserve-storage to keep data volumes:

sistemo machine delete db --preserve-storage

Data volumes become available and can be attached to a new machine. See Volumes for full details on creating, resizing, and managing volumes.

Auto-recovery

The daemon runs a reconciler every 30 seconds that detects crashed machines and cleans up their network namespaces and resources automatically.