Persistent Volumes
Attach durable block storage to any service — data survives restarts, redeploys, and scaling events
Persistent volumes attach durable block storage to any service on Ink. Data survives restarts, redeploys, and scaling events.
Specs
| Property | Value |
|---|---|
| Size range | 10 GB -- 100 GB per volume |
| Mount path | Any path inside the container (e.g. /data, /var/lib/postgresql/data) |
| Billing | $0.0000035 per GB/min (~$0.15/GB/mo) |
| Persistence | Survives restarts, redeploys, scaling events |
| Works with | Databases, application services, any container workload |
Attaching volumes
Via MCP
The volumes parameter on create_service and update_service accepts an array of {name, mountPath, sizeGi} objects. The agent passes this when creating or updating a service.
create_service(
"name": "my-db",
"repo": "ink/my-db",
"volumes": {
"0": "[object Object]"
}
)Via CLI
Volumes are configured via MCP tools or the dashboard. Database templates automatically include volumes when deployed with ink deploy.
Via dashboard
Toggle Persistent Volume in the service config panel, then set the mount path and size (10--100 GB slider).
When to use volumes
- Database services (PostgreSQL, Redis, MySQL, MongoDB) -- all database templates include volumes by default
- Persistent file storage -- uploads, caches, logs that must outlive a single container
- Any workload where data must survive container restarts
Important notes
Database templates (postgresql, redis, mysql, mongodb) automatically include a persistent volume. No manual configuration needed.
- Volume data persists even if the service is redeployed or restarted.
- Deleting a service also deletes its attached volumes -- this is irreversible.
Pricing
$0.0000035 per GB per minute, billed only while the volume exists. That works out to approximately $0.15 per GB per month.
A 10 GB volume costs ~$1.50/mo. A 100 GB volume costs ~$15/mo.