Product
Features
One primitive and the lifecycle around it. Every entry here is shipped, in production, and documented.
The primitive
Isolated database cells
A dedicated PostgreSQL process per project, with its own storage, credentials, and CPU and memory limits. Not a schema in a shared database.
Postgres 16 / 17 / 18Direct and pooled connections
A standard postgres:// URL on the direct port, and a transaction pooler on the pooled port for serverless and edge runtimes. Same database, two doors.
5432 / 6432Extensions
A curated catalog you enable per cell, kept current in-database rather than left to drift behind the packaged version.
CatalogIsolation and security
Private network namespace, no egress from standard cells, SCRAM relayed rather than held, and API keys stored only as hashes.
By construction
Workflow
Preview databases
A full copy of your database, cloned rather than dumped, with a time to live. One per pull request, torn down when the branch merges.
CloneImports and migrations
Bring a database over from another managed provider or from your own server, with a follow mode that stays in sync until you cut over.
Near-zero downtimeSchema tooling and typegen
Dump and diff your schema from the CLI, and generate TypeScript types, Zod schemas, or Drizzle definitions from the live database.
ts / zod / drizzleStudio
A SQL editor in the dashboard with schema browsing and linting. An UPDATE or DELETE with no WHERE is stopped before it runs, with a restore point one click away, and every write asks you to confirm.
In-browser
Agents
Set up by an agent
One prompt sends Claude Code, Cursor, or Copilot to a hosted runbook that installs the CLI, provisions a cell, and writes the env file. You approve access once in a browser tab.
agents.mdMCP server
One server, local over stdio or remote over HTTP, calling the same API the dashboard calls: projects, connections, SQL, schema, previews, backups, restore points, imports, and the workspace.
@capydb/mcpBrowser tools
The dashboard registers tools for an agent in a WebMCP-capable browser, on the session you are already signed in with. No key, no server, and every write waits behind a dialog.
WebMCPAgent safety loop
Unscoped writes are refused before they run: an UPDATE or DELETE with no WHERE, or a TRUNCATE. A change that went wrong restores into a preview, never over production. Overwriting production is not an agent tool on any surface.
Restore points
Key-value
K/V stores
A key-value store in its own isolated cell, in the same region as your database. Use it for rate limiting, sessions, queues and caching - or on its own, with no database involved.
Powered by ValkeyRate limiting
Sliding-window, fixed-window and token-bucket limiters through @upstash/ratelimit, checked against a store that sits beside your database, in its region.
Sliding windowClients you already use
The Upstash REST protocol and RESP, both supported. @upstash/redis works at its defaults over REST; Redis clients connect over TLS and send the hostname as the TLS server name (SNI) - redis-py and go-redis do on their own, ioredis and redis-cli need one setting. There is no CapyDB client to adopt.
Redis® OSS compatible
Operate
Backups and point-in-time restore
Continuous off-node archiving with restore to any moment inside your retention window, plus scheduled verification that the restore actually works.
PITRObservability
Resource usage, connection counts, and query-level drill-down per cell, with alerts on the conditions that actually precede an outage.
Per cellAlerts
Notifications on the conditions that actually precede an outage - storage pressure, backup staleness, connection saturation - delivered by email or to your own webhook.
Webhook / emailPause when idle
An untouched cell goes to sleep and stops consuming its share of the node. The next connection wakes it, typically in about a third of a second.
Scale to zero