Managed PostgreSQL - public beta
Postgres,reduced to itsstrongest shape.
Every project runs in its own isolated database cell - dedicated Postgres, a real connection string, online before npm install finishes.
$ capydb create
postgres://user:pass@myapp.db.capydb.dev:5432/main
Set up a CapyDB Postgres database for this project. Fetch https://capydb.dev/agents.md and follow the instructions for your environment. You'll need me once: to approve access in a browser tab. Everything else is yours.
Works with Claude Code, Cursor, Copilot & friends. One browser approval from you - account, database, env vars: handled.
/a
Isolated cells
Not a slice of someone else's Postgres.
/b
Real Postgres
If it speaks Postgres, it works.
/c
Disposable previews
Drop it when merged.
/d
Time travel
Restore any second of the last 30 days.
01The primitive
One project. One cell.
A database is a service unit. Ours is the cell - a dedicated Postgres runtime with its own process, storage, credentials, extensions, and CPU/RAM limits. We manage the cell; you use a normal Postgres URL.
The spec sheet
One primitive, done properly.
The database cell
Every project runs in its own isolated Postgres runtime - dedicated process, storage, credentials, extensions, and CPU/RAM limits. Online in seconds.
process · storage · credentials · cpu/ram
Throw-away previews
Clone production into a fresh cell for every pull request. It expires with the branch - TTL cleans up after you.
instant clones · auto-expiry
Connection strings, not SDKs
Standard postgres:// URLs, direct or pooled. If it speaks Postgres, it works - your ORM, your CLI, your fifteen-year-old GUI client.
no sdk · no dialect · no lock-in
Isolation, enumerated
Process, credentials, storage quota, network, CPU, and memory - isolated per cell. Strict TLS, one-command credential rotation.
tls everywhere · instant rotation
Point-in-time restore
Continuous transaction-log archiving. Restore any second of the last 30 days into a fresh cell - because you will drop a table eventually.
pitr · 30-day window
02Preview databases
Every PR gets its own cell.
A preview database is spun up for the branch and deleted with it - running in its own cell, with its own connection string, never touching production.
03Scale-to-zero
Sleeps idle. Wakes on connect.
An idle cell releases its compute and keeps its storage. Connect, and it's back - typically in under a second. The connection string never changes.
Zero ceremony.
Three commands, then you're shipping
Create
One project, one cell. Seconds.
capydb createConnect
The tools you already have just work.
DATABASE_URL=postgres://…Ship
Previews per PR. Drop them when merged.
git push && npm run deploy04Regions
Cells on nodes. Nodes form the grid.
Pick a region. That's the whole decision. Your cell lands on hardware we own and run there - and every node on the grid runs the same boring stack.
05What we didn't build
Everything we didn't build.
No auth add-on. No storage buckets. No function runtime. No rewritten storage engine underneath. Standard Postgres, run extremely well - that's where every hour of engineering went.
06What isolated means
Isolated. Honestly.
Not a shared Postgres server - each project gets its own isolated Postgres runtime: process, credentials, storage quota, network, CPU, memory. One thing is shared on standard plans: storage IO is best-effort.
An honest fit check
Pick the right tool.
Run with us if
- You want managed Postgres, not a backend platform.
- You prefer connection strings over proprietary SDKs.
- You clone a database for every PR.
- You want your existing tools to work unchanged.
Walk away if
- You want auth, storage, and functions bundled.
- You need a GraphQL/REST auto-API generated.
- You enjoy vendor lock-in.
- You hate writing SQL.
If you want a platform, buy a platform. If you want Postgres at full strength - use us.