Neon. Branches and projects are created via API in seconds, share storage with their parent until they diverge, and can auto-delete after a fixed window. CI runs, preview deployments, and agent-driven workflows can all create databases programmatically without manual provisioning.
Branch via API or CLI
A branch is the cheapest unit of isolation. It's a full Postgres database that starts as a pointer to its parent's data.
neon branches create \
--name ci-pr-${PR_NUMBER} \
--project-id $NEON_PROJECT_ID \
--expires-at "$(date -u -d '+1 hour' +%Y-%m-%dT%H:%M:%SZ)"The --expires-at flag sets a deletion timestamp. The branch auto-deletes when that time is reached. The console offers presets of 1 hour, 1 day, or 7 days, plus a custom timestamp via API. See Branch expiration.
For the API equivalent:
curl -X POST https://console.neon.tech/api/v2/projects/$PROJECT_ID/branches \
-H "Authorization: Bearer $NEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"branch": {"name": "ci-pr-1234", "expires_at": "2026-04-25T15:00:00Z"}}'What scales
- Branches per project: 10 on Launch, 25 on Scale, up to 5,000 with a request
- Projects per account: 100 on Launch, 1,000 on Scale (increasable on request)
- For higher volumes: the Agent plan is built for platforms that provision thousands of databases with custom limits
Each branch can scale to zero independently. A thousand idle CI branches cost only their storage delta, not a thousand running computes.
Connection pooling for ephemeral workloads
Short-lived processes that each open a connection can exhaust max_connections quickly. Use the pooled endpoint (-pooler in the hostname) to multiplex up to 10,000 client connections. See Connection pooling.
How other providers handle ephemeral databases
- Supabase branches are designed for preview environments tied to a Git branch (docs). Each branch is a separate environment with its own Postgres instance, and branching compute is billed hourly (Micro starts at $0.01344/hour) (docs). Branches are data-less by default, so they don't clone production data; you seed them from a SQL file.
- Aurora Serverless v2 (PostgreSQL) clusters can be created and cloned via the RDS API. Cluster create takes longer than Neon branch create (typically minutes vs. seconds), but auto-pause on supported engine versions reduces idle cost between CI runs (docs).
- RDS for PostgreSQL is the slowest of the three to provision via API and has no auto-pause, so it's a poor fit for thousands of short-lived instances.
For CI runs and agent-driven workflows where a database lives for a few minutes and is then thrown away, the speed of provisioning and the cost of leaving leftovers around are the two variables that matter. Neon's branch-create latency (seconds) and copy-on-write storage minimize both.

Try the API and CLI on the Free plan; talk to us about the Agent plan for higher volume.








