Skip to content
sistemo.io beta
GitHub Docs Quickstart

Snapshots

A snapshot is a copy-on-write, point-in-time image of a machine's root volume (ZFS). Near-instant, cheap (you pay only changed blocks over time). Use it to undo a bad change, restore a known-good disk, or boot a new machine from a captured environment.

Snapshot ≠ backup

Snapshots live on the same host disk as the machine — an undo button, not off-site disaster recovery. If the host is lost, the machine and its snapshots are lost together. Off-host replication is a future feature.

Disk snapshot, not memory

This is a disk snapshot. Firecracker memory snapshot / live-resume is separate and not available yet.

Dashboard

  1. Open a machine → Snapshots tab.
  2. Take snapshot (optional name).
  3. Restore (machine must be stopped), New machine, or Delete.

Concepts

Idea Detail
Of a volume Snapshot identity is the root volume (origin_volume_id), not “the machine” as a whole
Same-host only Restore and deploy-from stay on that host
Restore Destructive rollback of the live disk to the snapshot
Deploy from POST /v1/machines with snapshot_id → clones into a new root volume

API

Base: https://api.sistemo.io · Authorization: Bearer sk_live_… · full scope for mutations.

Take a snapshot

POST /v1/machines/{machine_id}/snapshots
curl -X POST "https://api.sistemo.io/v1/machines/$MACHINE_ID/snapshots" \
  -H "Authorization: Bearer $SISTEMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"before-upgrade"}'

List

# For one machine
curl "https://api.sistemo.io/v1/machines/$MACHINE_ID/snapshots" \
  -H "Authorization: Bearer $SISTEMO_API_KEY"

# All snapshots on the account
curl "https://api.sistemo.io/v1/snapshots" \
  -H "Authorization: Bearer $SISTEMO_API_KEY"

Restore (in-place rollback)

Machine must be stopped. Refused if newer snapshots exist (would destroy them silently — we don't allow that). There is no automatic pre-restore safety snapshot.

# Stop first
curl -X POST "https://api.sistemo.io/v1/machines/$MACHINE_ID/stop" \
  -H "Authorization: Bearer $SISTEMO_API_KEY"

curl -X POST "https://api.sistemo.io/v1/snapshots/$SNAPSHOT_ID/restore" \
  -H "Authorization: Bearer $SISTEMO_API_KEY"

New machine from a snapshot

curl -X POST https://api.sistemo.io/v1/machines \
  -H "Authorization: Bearer $SISTEMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"from-snap","snapshot_id":"'"$SNAPSHOT_ID"'"}'

Delete a snapshot

curl -X DELETE "https://api.sistemo.io/v1/snapshots/$SNAPSHOT_ID" \
  -H "Authorization: Bearer $SISTEMO_API_KEY"

If another machine was cloned from this snapshot, delete returns 409 until that machine is gone.

Deleting a machine that has snapshots

DELETE /v1/machines/{id}?delete_snapshots=true
  • Snapshots exist and delete_snapshots is not set → 409 (nothing deleted).
  • delete_snapshots=true → snapshots deleted first, then the machine.
  • preserve_storage=true keeps the root volume as a detached disk (still cannot keep snapshots without the machine — ops are machine-keyed today).

The dashboard delete dialog requires the “also delete snapshots” checkbox when needed.

Billing

Snapshot storage is metered as snapshot_gb_month from used_bytes (same storage rate as volumes). See Usage & billing.

Limits

  • Account quota: max snapshots per account (default 50).
  • Full API reference: Snapshots.