Skip to main content

Snapshots

Snapshots are the foundation that makes Null Autos fast. A snapshot is a point-in-time copy of a disk volume, stored on a high-performance storage tier. The platform uses snapshots to boot emulators quickly and to start builds warm instead of cold.

The problem snapshots solve

Android Automotive builds are huge, and emulator disk images are large. Doing either from scratch every time is slow and wasteful. Snapshots let you capture a known-good state once and clone it instantly thereafter.

Two ways snapshots are used

1. Fast emulator boot

Every emulator launches by cloning a snapshot rather than building or downloading an image. Cloning on the high-performance storage tier is near instant, so devices go from "create" to "running" quickly and consistently.

2. Warm CI builds

For CI/CD, the platform automatically:

  • restores the most recent matching snapshot when a job starts, so the job begins with prior state already in place, and
  • captures a new snapshot when the job finishes (configurable: on success, on failure, or always).

A pipeline opts in with a few environment variables, and no manual volume management is required. See CI/CD integration.

Snapshot trees

Snapshots are related in a tree: a snapshot can have a parent it was derived from. This captures the lineage of your build and device state.

The portal visualizes this tree, and you can explore it from the CLI (nullctl get snapshots) or API (GET /api/v1/snapshots/tree).

Retention & storage health

Snapshots consume storage, so the platform manages them automatically:

  • Retention policies keep the most relevant snapshots by count, size, or age, per logical group.
  • Roots are protected. A snapshot promoted to a retention root, or one still referenced as the source of a volume, is never deleted out from under you.
  • Storage stays fast. The platform monitors capacity and consolidates long snapshot chains in the background to maintain performance.
  • Portability (optional). Snapshots can be backed up to object storage for movement across environments.

You can see storage capacity at any time:

nullctl get snapshots          # list snapshots

or via GET /api/v1/snapshots/diskpool.

Managing snapshots

ActionPortalCLIAPI
ListSnapshots dashboardnullctl get snapshotsGET /snapshots
InspectSnapshot detailnullctl get snapshot <name>GET /snapshots/{name}
View treeSnapshot tree viewnullctl get snapshotsGET /snapshots/tree
DeleteSnapshot actionsnullctl delete snapshot <name>DELETE /snapshots/{name}
Promote to rootAdmin actionsnullctl snapshot promote-root <name>POST /snapshots/{name}/promote-root
Demote rootAdmin actionsnullctl snapshot demote-root <name>POST /snapshots/{name}/demote-root
Score for retentionn/anullctl snapshot scoren/a

Promoting checks that the snapshot is safe to protect and returns 409 with a list of problems if not (e.g. not deployable yet); pass force: true to promote anyway. The Snapshots dashboard shows each snapshot's root status, retention score, and (when the controller has annotated one) a breakdown of what drove that score, and lets an admin promote or demote directly from the table or detail drawer. The emulator creation picker only lists deployable snapshots and defaults to the newest promoted root.

Next steps