Skip to content

Storage

Mikrom has three storage surfaces: volumes (block storage for an app), databases (managed PostgreSQL), and snapshots (of volumes, databases, and deployment microVMs).

A volume is block storage created independently and then attached to an app at a mount point.

Terminal window
mikrom volume create --name data --size 10240 # size in MiB
mikrom volume list --app my-app
mikrom volume attach --app my-app --volume-id <id> --mount /data --mode 0
mikrom volume detach --app my-app --volume-id <id>
mikrom volume delete --volume-id <id>

Access modes (--mode):

Value Mode Meaning
0 RWO Read-write by one deployment (default)
1 RWX Read-write by many
2 ROX Read-only by many

Volume snapshots:

Terminal window
mikrom volume snapshot --volume-id <id> --name pre-migration
mikrom volume snapshots list <...> # list
mikrom volume restore --volume-id <id> --snapshot pre-migration

The API also exposes volume usage (GET /v1/volumes/{id}/usage) and cloning (POST /v1/volumes/{id}/clone).

Databases are provisioned through Neon. New databases default to PostgreSQL 16 unless another supported version is requested.

Terminal window
mikrom db create orders
mikrom db list
mikrom db info <name-or-id>
mikrom db connection <name-or-id> # prints how to connect
mikrom db delete <name-or-id>

mikrom db connection returns:

  • an SSH tunnel command to reach the database VM,
  • the psql command to connect through that tunnel,
  • the same metadata as JSON with --output json.
Terminal window
mikrom db branches <id>
mikrom db backup <id>
mikrom db snapshots <id>
mikrom db snapshot-create <id> nightly-2026-08-27
mikrom db snapshot-restore <id> nightly-2026-08-27
mikrom db snapshot-delete <id> nightly-2026-08-27

You can snapshot the microVM of a running deployment and restore it later — useful before a risky migration or to capture a known-good state.

Terminal window
mikrom deployment snapshots --app my-app --job-id <job-id>
mikrom deployment snapshot-create --app my-app --job-id <job-id> snap-v1
mikrom deployment snapshot-restore --app my-app --job-id <job-id> snap-v1
mikrom deployment snapshot-delete --app my-app --job-id <job-id> snap-v1
You want to preserve Use
A data volume’s contents mikrom volume snapshot
A database’s state mikrom db snapshot-create
A running microVM (app + ephemeral disk) mikrom deployment snapshot-create