Skip to content

Snapshots and restore

A snapshot is a verified Native backup of a sleeping project’s data directory, produced by Native’s own tool:

hyphae backup create --data-dir <project dir> --out <snapshot dir>

Native copies the checkpointed state, writes NATIVE_BACKUP.json, and independently verifies the result. The Cloud stores the engine’s identifiers — visible_csn, root_digest, directory_lineage, checkpoint_digest — and adds an id (snap_…), a label, timestamps and paths. It is not a filesystem copy and not a Cloud hash: the Cloud never runs cp, tar or a digest of its own over engine files.

Restore (POST /v0/projects/{id}/restore with a snapshot_id) runs hyphae restore into a fresh directory — Native verifies the backup, runs its doctor and activates — and the Cloud then swaps that directory into place. Restore replaces the project’s data directory: it is not a branch, a fork or a point-in-time view. The previous directory is moved aside and retained. The project is left asleep; wake it to serve.

Both operations require the project to be asleep (409 tenant_running otherwise) because Native’s tools take the directory lock.

  • Storage objects (bytes or catalog) — object storage is Cloud metadata plus a blob backend, not part of the Native directory.
  • Function sources or secrets — they live in the control store.
  • Keys, labels, project settings.

A snapshot is the engine’s state at the moment backup create ran. Retention is manual: snapshots are directories under the daemon’s snapshot root until an operator removes them.