The database for AI agents
Agents need thousands of isolated databases they can break, rewind and throw away. SkelaDB gives them that inside your cloud.
Why agents run on SkelaDB
A sandbox per task
Each task works on its own branch. Writes to that branch do not reach its parent; give agents credentials limited to the data they should access.
Idle costs nothing
Branches stop when the task ends and share storage, so thousands of them cost almost nothing.
Undo for every mistake
If an agent drops the wrong table, branch from the second before and carry on.
From a fork to a clean exit
Use the UUIDs returned by each call in the next one. The example UUIDs below are placeholders. Continue paginated inventories and poll operations until they succeed; stop on failure.
- Find main, then fork it with a stable mutation key
- Wait for the fork and select its cloned database
- Run and verify SQL, then wait for deletion
// Find main: Take main's id from the branch inventory. list_branches {} // Fork: Replace parent_id with main's UUID. Reuse this key only for this exact mutation. create_branch { "name": "task-7f3a", "parent_id": "11111111-1111-4111-8111-111111111111", "idempotency_key": "task-7f3a-create" } // Wait: Poll the returned operation_id until state is succeeded. The operation result contains branch_id. get_operation { "operation_id": "22222222-2222-4222-8222-222222222222" } // Find the database: Choose a ready cloned database whose branch_id equals the new branch_id, never the parent's database. list_databases {} // Work: Use that database's id and a fresh query_id. A SQL timeout can have an unknown commit outcome; do not retry automatically. run_sql { "database_id": "33333333-3333-4333-8333-333333333333", "query_id": "44444444-4444-4444-8444-444444444444", "sql": "alter table orders add column eta timestamptz" } // Verify: Read the result from the same fork database. run_sql { "database_id": "33333333-3333-4333-8333-333333333333", "query_id": "55555555-5555-4555-8555-555555555555", "sql": "select count(*) from orders where eta is null" } // Discard: Use the exact new branch UUID and a separate stable deletion key. delete_branch { "branch_id": "66666666-6666-4666-8666-666666666666", "confirm": true, "idempotency_key": "task-7f3a-delete" } // Wait for deletion: Poll the deletion's returned operation_id until it succeeds. get_operation { "operation_id": "77777777-7777-4777-8777-777777777777" }
Works with any MCP client
The SkelaDB MCP server is a downloadable binary that runs next to your agent and exposes branches, databases and SQL as tools.
- Pinned to one project
- Every call checked against its key
- In the config, 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_API_KEY": "skela_…", "SKELA_PROJECT_ID": "…" } } } }
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 ]] }
Fast enough for a tool call
Durable commit
Resume from pause
Branch to first write
Medians from our September 2026 test runs on Linux test machines and a local Kubernetes cluster, in the default object storage mode, not on a production cloud. Conditions for each number are on the product page.
What teams build with it
Coding agents
Rehearse every schema migration on a branch of production before review.
Data agents
Answer questions on a fresh copy of production without touching live traffic.
Evaluation harnesses
Reset the database to the same starting point for every eval run.
Agent platforms
Give every user their own database that costs nothing while they are away.
Common questions
Writes to a branch do not reach its parent. A read/write project key, however, can run SQL and reveal database credentials throughout that project, including main. Keep production in a separate project from agent automation, or give the agent a database credential for only its disposable branch. Project keys do not provide branch-level isolation.
There are no per-branch fees. In the default object storage mode branches share storage and stop when idle, so the practical limit is your cluster and your license key's branch limit, not your bill.
Any MCP client, such as Claude Desktop, Claude Code, Cursor or VS Code, can use the SkelaDB MCP server. Anything that runs a CLI or speaks the Postgres protocol works too.
No compute while it is stopped. In the default object storage mode, storage is only the pages the branch changed, billed by your own object storage at your provider's rate.
Create a branch at the timestamp just before the change. You get the database exactly as it was at that second.
Give every agent a database
Install SkelaDB in your cluster and point your first agent at it today.