Get started
Introduction
A Postgres-compatible database where every agent works in its own copy of your data, and changes reach production only by your rules or your approval.
SoonThese pages describe Chronos Cloud, which opens from the waitlist. Running Chronos yourself? Self-host docs
Why Chronos
Coding agents are good at changing data and bad at knowing when not to. Given a connection string, an agent writes straight into the database your users depend on: a migration half applied, a cleanup that deletes the wrong 5,000 rows, a backfill that read a balance that changed while it ran. Postgres has no place for the agent to work that isn’t production, and no way to say which of its changes may land without you.
Chronos is a database built for that. It speaks Postgres, so your app, ORM and tools connect as they do today. On top, it adds three things:
- Worlds. Every agent works in its own instant copy of the data, a world. Forking one takes the same time for 10 rows or 10 million: it stores only what the world changes.
mainis the data your app serves. - Rules. A merge policy says which changes an agent may land in
mainon its own (at most 500 rows, no deletes, never thepaymentstable). A merge that keeps to the rules lands; one that breaks any waits for a person, with the reasons. - History. Every table can be read as it was at any moment in the retention window, and any merge, or everything one agent did, can be undone row by row.
How a change lands
create world fix_prices; -- an instant copy of main-- the agent changes it, and runs the app's tests against itdiff world fix_prices; -- what changed, row by row, deletes firstmerge world fix_prices; -- into main. Inside the merge: -- main changed the same rows? refused, nothing lands -- breaks a merge check? refused, with the rows -- breaks its merge policy? waits in Reviews for a person -- otherwise lands, all at onceEvery rule is checked inside the merge, on the exact rows it is about to apply, while it holds its locks. What was checked is what lands, even while the data keeps changing. A person approves a held world in the dashboard’s Reviews, and the approval names the version they read: if the agent wrote more since, nothing lands.
Three ways in
| Who | Connects with | Works in |
|---|---|---|
| Coding agents: Claude Code, Cursor, Codex, VS Code, Windsurf | MCP: one address, signed in with OAuth the first time | the worlds it forks. It merges them itself in development; a person merges them in production |
Your app, its tests, psql, ORMs, BI tools | Postgres: the project’s DATABASE_URL | main by default; any world by putting its name in place of main |
| You | the dashboard: tables, SQL, reviews, history, policies, team | everything. Only a person approves a held merge |