Aquanode LogoAquanode Docs
Storage

Volumes

A Volume is /workspace: your code, checkpoints, and datasets, owned by your team and usable by any of your pods. Only one running pod writes it at a time.

A Volume is /workspace. Your code, your checkpoints, your datasets. What you made, not what you installed. If losing it would hurt, it belongs here.

A volume is standalone and team-owned, not tied to one pod. Any number of your pods can point at the same volume; only one of them can be running with it at a time. It restores to the box's own local disk at Start, so a running pod reads and writes at local-disk speed with the filesystem semantics that pip, git, and databases actually depend on, then saves back to object storage while you work and at Stop.

Volume and environment are independent

A pod's Environment is the software it starts from: the base image, what you installed, /opt, /root. A pod's Volume is its data. Either exists without the other, and deleting one never breaks the other. What a Stop keeps depends on which ones your pod has:

Pod hasOn StartOn Stop
Environment + Volumesoftware restored, then /workspace restoredboth saved
Environment onlysoftware restored, empty /workspacesoftware saved; /workspace writes lost
Volume onlyclean base image, /workspace restoredfiles saved; anything installed is lost
Neitherclean boxnothing saved

Files can depend on the software that made them

A venv or node_modules built inside /workspace, or a ComfyUI install reading models from /workspace, can be tied to the environment that built it. Pairing a volume with a different environment may not run. Aquanode does not enforce this pairing; it is on you to keep them together when it matters.

ComfyUI pods keep models, inputs, outputs, and workflows on the pod's volume the same way, so they come back with the rest of /workspace on the next Start.

Only one running pod at a time

Any number of pods can be pointed at the same volume, and a stopped pod never blocks anything: another pod can pick the same volume, roll it back, or the volume can be deleted out from under it (a stopped pod using a deleted volume just starts with an empty /workspace next time). The one rule is that only one running pod writes a volume at a time.

That rule is enforced at Start, before anything is rented. Starting a second pod on a volume already in use is refused up front:

Volume "training-data" is in use by pod "finetune-run-3". Stop it first.

Status

A volume's status is one of:

StatusWhat it means
In use by <pod>A running pod holds it right now
IdleNo running pod has it; free to attach or delete
Never savedCreated, nothing written to it yet
CopyingA save or duplicate is in flight
Save failingThe last save attempt did not complete

Automatic history

There is no manual save button. Every Stop of a pod using a volume writes one new point in its history, labelled by why it happened:

ProvenanceWhen it is written
Pod stoppedA manual Stop, or Stop as the first half of a Move
Auto-stoppedThe pod's own idle auto-stop released the machine

The volume's head is what the next Start restores. Stop and a successful save tick both move it forward; nothing ever moves it backward except you, deliberately, with Restore a point.

Saved while the pod runs

Between stops, a volume saves itself in the background so a sudden provider kill loses only the interval since the last save, not everything since the last Stop.

A save tick can catch a file mid-write

A background save can land in the middle of a file being written and capture it torn. This is a known trade-off, not a bug: the tick exists to bound your worst case, not to promise every intermediate save is clean. A Stop is always the clean point, because it only happens once nothing is being written.

These background saves do not create new history points. They exist purely to shrink how much a provider kill can cost you; Restore a point only ever offers you the points written by an actual Stop.

Restore a point

Pick any point in a volume's history and set it as the head. This is only available while the volume is not in use by a running pod: stop that pod first.

aq volume restore <id> <point-id>

Restoring never deletes later points from the history; it only changes what the next Start reads.

Attach to a pod

From a volume's row, Attach to pod opens a picker of your team's pods: any stopped pod, or New pod. Picking a stopped pod takes effect the next time it starts.

A running pod's own Storage section has Change and Detach for its volume. Both need the pod stopped first, and take effect at its next Start:

  • Change swaps in a different volume of yours.
  • Detach removes the volume; the pod starts with a clean, empty /workspace until you attach another one.

There is no aq subcommand yet for changing or detaching a pod's volume; both are console-only.

Duplicate

Duplicating a volume makes an independent copy right away: a new volume, its own history, seeded from the source's current head. Writes on the copy never flow back to the source, and later writes on the source never appear on the copy.

aq volume dup <id> <new-name>

This is the move for "start a second pod from the same data without the two ever writing over each other."

Delete

aq volume rm <id>            # delete; refused while in use

Delete is refused only while a running pod is using the volume; stop it first. Deleting a volume that stopped pods still point at is allowed: those pods are detached and start with an empty /workspace next time. Deleting a volume deletes its whole history; there is no per-point delete.

Deleting a pod does not delete its volume by default. Tick Also delete volume if you want both gone together; otherwise the volume is kept, still billing, for you to reattach or clean up later.

A detached or unused volume still bills

A volume keeps its data, and keeps costing, after you detach it from a pod or delete the pod without deleting the volume. Delete volumes you no longer need to stop the charge.

Bringing in a volume from outside

aq import [flags]

Adopts data you already have (from a box you rent elsewhere) as a new volume, without going through a pod first. See aq import.

Sharing

Sharing an environment (see Sharing an environment) can optionally include files: a frozen copy of one saved point on your volume, at the time you share. The recipient never gets your live volume; they get a new volume of their own, duplicated from that point.

What it costs

You pay to hold a volume's history at $0.02/GiB per month. Saving while you work is free; only the bytes held count. Deleting a volume you no longer need is the way to bring that number down; there is no per-point delete, so a volume's whole history goes together.