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¶
- Open a machine → Snapshots tab.
- Take snapshot (optional name).
- 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¶
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¶
- Snapshots exist and
delete_snapshotsis not set → 409 (nothing deleted). delete_snapshots=true→ snapshots deleted first, then the machine.preserve_storage=truekeeps 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.