How SkelaDB works
PostgreSQL 18 on top and a storage engine that keeps every change underneath, all running in your cluster.
Branch like you branch code
In the default object storage mode, every branch is a full, writable database that shares storage with its parent.
- Fork from now, a timestamp or an exact log position
- A new branch adds no storage until it changes
- Optional dedicated-disk projects make full copies instead
Compute that sleeps
A quiet branch stops its compute, and the built-in proxy wakes it on the next connection.
- Idle timeout per branch, down to seconds
- Choose to stop, use a warm pool or pause
- Pooling for thousands of short-lived clients
Every second is recoverable
Changes go to a replicated log and then into storage that is never rewritten.
- A commit is safe once two of three WAL nodes have it
- Restore to any second in your retention window
- Read replicas stream from the same log
Storage priced like a bucket
By default your data lives in S3, Google Cloud Storage or Azure Blob, with a fast local cache in front.
- Grows without resizing disks
- Dedicated disks per branch when you choose them
- Experimental: archive cold partitions to Parquet
Made for agents
Agents create databases the way people open tabs, and SkelaDB makes that cheap and safe.
- MCP server and CLI as downloadable binaries
- Project-scoped keys with expiry
- An audit trail of every operation
skela branch create --name agent-7f3a \ --parent $MAIN --idempotency-key task-7f3a { "operation_id": "3f1c…", "state": "queued" } skela database query $DB \ --sql 'select count(*) from events' { "rows": [[ 48213 ]] }
// cloud mode means your own install's console API, never a SkelaDB service "mcpServers": { "skeladb": { "command": "skela-mcp", "env": { "SKELA_MCP_MODE": "cloud", "SKELA_CLOUD_API_URL": "https://skela-api.acme.internal", "SKELA_PROJECT_ID": "…" } } }
A console your team will use
Branch, run SQL, manage access, restore and watch performance in one place.
checkout-api Active
PostgreSQL 18.4 · AWS us-east-1 · 6 of 24 branches running
postgresql://app:••••@checkout-api.db.acme.internal/app- app42 tables14.2 GB
- analytics18 tables3.8 GB
- auth9 tables412 MB
pg_trgmpgcryptopostgisBranches 24
Full copies of your data that share storage until they change.
1-- orders by status, last 7 days2select status, count(*) as orders, round(avg(total), 2) as avg_total3from orders4where created_at > now() - interval '7 days'5group by status6order by orders desc;
Restore
Pick any second in the last 7 days. SkelaDB opens it as a new branch; nothing is overwritten.
Measured, not promised
Every number comes from our own test runs, with the conditions beside it.
Durable commit
Median, on disk on two of three WAL nodes. Network between nodes not included.
Warm indexed read
Through the proxy, p95.
Page from object storage
One ranged read, no cache, 20 ms of storage latency added.
Branch to first write
Median on a 1M-row test database, without TLS or scheduling.
Resume from pause
Median. About 600 ms from a warm pool, 1.1 to 1.4 s from zero.
Logins per proxy core
Full TLS and password check.
Queries per core vs PgBouncer
One core, both resetting sessions between clients. About 1.4× against PgBouncer defaults; close to even on two cores.
From September 2026 runs on Linux and macOS test machines and a local Kubernetes cluster with half-core computes, in the default object storage mode. These are not production cloud measurements. Aurora's resume time is from AWS documentation.
The five parts
Each part runs as ordinary Kubernetes workloads next to your applications.
Proxy
Speaks the Postgres protocol and handles TLS, pooling and wake-ups.
Compute
PostgreSQL 18 with four small storage patches, one per branch, stopped when idle.
WAL service
Three nodes. A commit is durable once two have it on disk.
Pageserver
Serves any page from any point in history, with a local cache.
Object storage
Holds every history layer and WAL archive, in your own bucket.
Run it in your cluster
Install takes one command once your cluster, bucket and license key are ready.