Volumes
A Volume is persistent storage that lives outside any single pod. Attach one to a pod and the data survives pod termination, can be moved to another pod later, and never has to fit on the host's local disk.
When attached, the volume is mounted at /mnt inside your container. Use it for datasets, model weights, training checkpoints, evaluation outputs — anything you don't want to lose when a pod is deleted.
Volumes are backed by S3-compatible object storage. Throughput is fine for streaming/loading, but sustained random I/O is slower than the pod's local disk. For tight inner loops, copy the working set into
/rootand write results back to/mnt.
Create a volume​
In the dashboard:
- Click Volumes in the sidebar.
- Click ADD NEW + (top-right).
- Enter a Name (letters, digits, hyphens, underscores, dots, spaces, and
,()!?/— max 100 chars). Description is optional. - Create.

The page shows your volumes with their Size, Files, and Date created. The Current Rate widget at the top is a calculator — set Storage Amount × Time Period to estimate hourly cost.
Attach a volume to a pod​
When deploying a pod (Browse Pods → RENT NOW):
- Find the Volume field on the Create Pod form.
- Open Choose Volume and select an existing volume — or click Add a Volume to create one inline.
- Deploy. The volume mounts at
/mntautomatically.
Forgot to pick one at deploy time? Open the pod detail page and click Volume in the action bar. It works only while the pod has no volume yet.
Pick the right volume before you attach it. Once a pod has one, the Volume action is greyed out and the API rejects the change, so it can't be swapped for a different volume or detached while the pod runs.
To stop using a volume on a pod, terminate the pod. The data on the volume survives that.
The reverse is not restricted: the same volume can be attached to more than one pod at a time, including pods on different nodes. Each pod mounts the same bucket, so they all see the same files.
Nothing coordinates those pods. Two pods writing the same file will not merge their changes, the last write wins. And the check that stops you deleting a volume that is in use only looks at one pod, so with several pods attached it can let the deletion through. Deleting a volume destroys the data for every pod still using it.
You can attach a volume to a Docker-in-Docker template — nested Docker keeps working and /mnt stays writable. Files on the volume belong to root inside the pod, and permissions you set on them are stored with the objects.
On a small number of nodes the volume still turns Docker-in-Docker off. The deploy log says so when it happens; move the pod to another node if you need both.
Use it from inside the pod​
# SSH into the pod
ssh root@<pod-ip> -p <pod-port>
# Volume is at /mnt
ls /mnt
df -h /mnt # confirm it's mounted
# Suggested layout
/mnt/
├── datasets/ # input data
├── models/ # trained weights you want to keep
├── checkpoints/ # in-progress training state
└── outputs/ # results, evaluation reports
Tip: keep the working set on /root (the local mount, fast disk) during training, then rsync /root/checkpoints/ /mnt/checkpoints/ between epochs.
Billing​
- Charged per-GB / per-hour based on the actual data stored, not the allocated capacity.
- Continues to accrue while the volume is detached — your data stays available.
- Stops only when you delete the volume (irreversible).
- Pay-as-you-use AWS pass-through — no markup. The Volumes page calculator at the top of the list shows the current
$/GB/hourrate.
Delete a volume​
In the Volumes list, click the trash icon on the row. This permanently destroys the data — there is no undo and no archive.
If you might want the data back, take a Backup of the relevant pod first, then delete the volume.
Limits & rules​
| Rule | Detail |
|---|---|
| Mount point | Always /mnt |
| Volumes per pod | 1, fixed once attached |
| Pods per volume | No limit — they all mount the same bucket, with no locking |
| Size cap | None — volumes scale automatically |
| Name pattern | [a-zA-Z0-9\s\-_.,()!?/]+, 1–100 chars |
For agents and automation: API + CLI
# List your volumes
curl https://lium.io/api/volumes \
-H "X-API-Key: $LIUM_API_KEY"
# Get one
curl https://lium.io/api/volumes/<volume_id> \
-H "X-API-Key: $LIUM_API_KEY"
# Create one
curl -X POST https://lium.io/api/volumes \
-H "X-API-Key: $LIUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-dataset", "description": "Training data v2"}'
# Delete one (data is gone — no recovery)
curl -X DELETE https://lium.io/api/volumes/<volume_id> \
-H "X-API-Key: $LIUM_API_KEY"
CLI: lium volumes list / new / rm (reference). Get an API key first.