Persistent storage
A disk at /data that survives deploys, for the files a database is the wrong home for.
An app’s filesystem is rebuilt on every deploy, so anything written while it runs is gone the next time it ships. Uploads, generated files, a cache you paid to warm.
Persistent storage is the answer for those. It is mounted at /data, it survives every deploy and restart, and it is billed per GB per month. See the pricing page for the rate.
What belongs there
User uploads, when you are not using object storage. Generated artifacts worth keeping between deploys: rendered PDFs, thumbnails, exports. A cache whose warm-up is expensive enough to be worth paying for.
Not your application data. Rows belong in a database, which is backed up daily, can be reached from more than one app, and does not disappear if you rebuild the app around it. This is a disk, with a disk’s guarantees and no more.
Not a SQLite file, tempting as it looks. Marina’s managed SQLite is a real database with a free tier and daily snapshots; a .db file on a disk is neither.
Adding one
This is a dashboard action. There is no CLI command for it and nothing in the API a token can call, so a script or an agent cannot add or grow it: open the app in the dashboard and set its storage there.
Once it exists, /data is just a path. Write to it from your app like any other directory, and read it back after the next deploy.
Growing it
Storage goes up, not down, and the difference is settled from the wallet immediately rather than at the end of the month. The app restarts once to pick up the new size.
If you find yourself wanting to shrink one, the honest answer is that you cannot, and the way out is smaller storage on a new app with the files copied across.
What it does not get you
It is not backed up. Backups covers managed databases only; that storage is yours to copy elsewhere if the contents matter.
It is one disk, on one app. Two apps cannot share it, and it does not follow you if you delete the app and make another. For files that several things need to read, object storage is the right shape.
When the wallet runs dry
An app that stops for non-payment keeps its storage. Stopping is not deleting: the disk and everything on it survives, and a top-up brings the app back with its files. Deletion is a separate, much later, deliberate step.
