Managed Databases
Each organization can provision managed database instances directly from the UI — no separate tooling, no connection strings to assemble by hand.
Engines
Pick an engine from the logo cards in the create dialog, then a version:
| Engine | Versions | Injected variable |
|---|---|---|
| PostgreSQL | 16, 17 | DATABASE_URL |
| MySQL | 8.4, 8.0 | MYSQL_URL |
| MongoDB | 7, 6 | MONGODB_URL |
| Redis | 7 | REDIS_URL |
Provisioning pulls the engine image and waits for the instance to accept authenticated connections before marking it ready — the first MySQL or MongoDB instance takes a while, since those images are hundreds of megabytes.
Attaching to an app
Attach an instance to an app to grant it per-app, isolated credentials — its own database/user, not the admin account. Attaching injects the engine’s connection variable into the app’s environment at deploy time.
One attachment per engine per app, so an app can hold one of each simultaneously. Detaching drops the per-app credentials again.
Redis instances offer a shared mode (one password) or ACL mode (per-app ACL users), chosen at creation.
Storage, snapshots, and logs
-
Data lives in volumes under
<dataDir>/databases/<id> -
Manual snapshots can be triggered from the UI and are written to
<dataDir>/db-backups/<id>/, downloadable from the UI:Engine Method File Postgres pg_dumpall --clean.sqlMySQL mysqldump --all-databases.sqlMongoDB mongodumparchive.archiveRedis BGSAVE+LASTSAVE-verified copy ofdump.rdb.rdb -
Provisioning logs land in
<dataDir>/db-logs/and are viewable per instance in the UI
Snapshots contain admin credentials or password hashes, so taking and downloading them requires the admin role in the org.
Managed-database snapshots are separate from Cargo's own scheduled control-plane backups, which cover users, orgs, apps, and encrypted secrets — see Operations & Hardening.
Redis modes
Redis instances choose between two modes at creation. Both give each attached app its own ACL user and its own logical database index, so no app can read another’s keys or flush the instance:
| Mode | Pub/sub | Use when |
|---|---|---|
| acl | Disabled (channels are global, not scoped to an index) | Default. Maximum isolation |
| shared | Apps can publish/subscribe to each other’s channels | An app needs pub/sub |
Pick shared only if an app genuinely needs pub/sub; acl is the safer
default.
Instances can optionally expose a host port for external clients (e.g.
a local psql or redis-cli). Only enable this if you understand the
instance will be reachable from outside the docker network.