DocsConcepts

Ephemeral databases

How seedkit's ephemeral Postgres works under the hood — Neon, scale-to-zero, TTL, lifecycle, restore.


When you run seedkit new, we provision a fresh Neon project — a real Postgres 16 instance with its own URL. This page covers what that means in practice.

Where they run

  • Provider: Neon. Postgres 16. Serverless architecture.
  • Region: EU (eu-central-1) by default. Override with --region. Available: eu-central-1, us-east-1, us-west-2, ap-southeast-1.
  • Compute: scales to zero between queries. First query after a sleep wakes the DB in ~200ms.

This is what makes the free tier sustainable — your DB doesn't burn compute when nobody's hitting it.

Lifecycle

PhaseTriggerWhat happens
Provisioningseedkit newNew Neon project + branch + role created. Schema applied. Cached SQL replayed (or freshly generated).
Readyprovisioning ✓Connection string is live. Queries work.
Sleepingno queries for ~5minCompute scales to zero. Connection still works; first query wakes it.
ExpiredTTL elapsedNeon project + connection deleted. Cached SQL survives.
Revivedseedkit reviveFresh Neon project; cached SQL replayed. New connection string.

TTL by tier

TierDefault TTLMax TTLConcurrent DBs
Free1 hour1 hour1
Pro24 hours7 days5
Team7 days30 days25

Set with --ttl 6h or --ttl 3d on seedkit new / seedkit revive.

What's persisted vs. destroyed

  • Persisted forever (until you --purge or delete via the dashboard):
    • The schema spec
    • The cached SQL dump (your seed)
    • The seed name → key mapping
  • Destroyed on TTL or seedkit destroy:
    • The Neon project
    • Compute credentials and connection string
    • Any data you wrote outside of the seedkit insert (e.g. rows you INSERT-ed manually after the fact)

Restore

Run seedkit revive <name>. We provision a fresh Neon project and replay the cached SQL. New URL, identical data.

seedkit revive crm-demo --ttl 24h --env

See seedkit revive for the full reference.

See also