Worlds
Time travel and undo
Read any table as it was, restore a world, undo a merge or everything one agent did.
SoonThese pages describe Chronos Cloud, which opens from the waitlist. Running Chronos yourself? Self-host docs
The history window
Chronos keeps every version of every row for a window: on the free plan, the last hour. Within it, any table can be read as it was, and any change taken back. Past it, AS OF, RESTORE, UNDO and SHOW HISTORY refuse with 22023.
- To the millisecond, open worlds included.
- Counters don’t rewind: reading or restoring the past never moves
serialor sequence counters back, so no number is handed out twice. - Undo is a write: restores and undos write old rows back as an ordinary change, so history keeps what they replaced, and they can be undone too.
AS OF
FROM table AS OF when [alias]FROM table [alias] AS OF whenFROM table FOR SYSTEM_TIME AS OF whenReads a table as it was, with its schema as it was then; a table dropped since can still be read. It works on any table reference, so now and then join in one statement. when is a string ('-15 minutes', '2026-10-20 09:00', UTC unless it gives an offset), a timestamp, timestamptz or date, or a parameter.
select now.id, old.status as was, now.status as isfrom orders now join orders as of '-1 hour' old on old.id = now.idwhere old.status <> now.status;select old.* from customers as of '-10 minutes' oldwhere not exists (select 1 from customers c where c.id = old.id);A whole world as it was
- Connect to it: the database name
main@-1 hour(percent-encoded in a URL) gives a read-only session on the past (writes:25006). - Fork it:
fork world 'main@2026-10-20 09:00' as before_deploy;gives a world holding that moment: its diff againstmainis everything since, and merging it restores. - Diff it:
diff world 'main@-1 hour' to main as sql;is everythingmaindid in the last hour, as statements. - MCP: any tool’s
branchtakesmain@-15 minutes.
RESTORE WORLD
RESTORE WORLD name TO whenRESTORE WORLD name TO CHECKPOINT 'label'Writes the world’s rows back as they were, as an ordinary write. Restoring main affects everyone; to restore one table or a few rows, fork the past and merge just those (MERGE WORLD before_deploy ONLY TABLES (orders)). Returns RESTORE n.
restore world main to '-10 minutes';restore world bot_task to checkpoint 'before';Checkpoints
CHECKPOINT WORLD w AS 'label' names this moment of a world; the same label again moves it. RESTORE WORLD w TO CHECKPOINT 'label' (MCP: checkpoint, rollback) goes back to it. An agent checkpoints its world before a risky step and rolls back if the step goes wrong.
UNDO MERGE
UNDO MERGE OF WORLD name [SKIP CHANGED] puts back every row name’s latest merge changed, in the world it merged into. Rows changed again since are named (40001) and nothing changes, or with SKIP CHANGED they’re left and the rest go back. The dashboard’s Undo on a merged world does this. See Diff and merge.
UNDO AGENT
UNDO AGENT name SINCE when [SKIP CHANGED] [WHERE run_id = 'id']In the session’s world, puts back every row one agent changed since when: its own writes, its transactions, and the worlds it merged in, whether or not anyone approved them. Everyone else’s changes stay. A row someone changed after the agent is named and nothing changes, or with SKIP CHANGED it’s left as it is. Indexes follow, and unique and foreign keys are checked as in a merge.
undo agent "claude-ada-shop" since '-2 hours' skip changed;undo agent "claude-ada-shop" since '-1 day' where run_id = 'r42'; -- only one run's changesA merge a person ran of an agent’s world is the person’s: undo it with UNDO MERGE.
SHOW HISTORY and SHOW AUDIT
| Statement | Rows |
|---|---|
SHOW HISTORY [FOR WORLD name] [LIMIT n] | what happened to a world, newest first: at, world, event (write, commit, forked from w, merged into w, merged part into w, discarded, metadata changed), rows |
SHOW AUDIT [FOR AGENT name] [LIMIT n] | what agents did: at, agent, world, action, rows, run |
The dashboard’s Activity draws the audit per agent and day; History reads any table at any moment of the window with a time slider.
Backups
Each project’s database is copied every hour while it is awake (a sleeping one hasn’t changed since its last copy), and the copies are kept for 7 days on the free plan, apart from history. An owner restores one from the project’s Backups page, and can undo that restore from the same page. A backup reaches further back than history, and covers losing the whole database rather than one change.
Which to use
| You want to | Use |
|---|---|
| see what a row was | AS OF |
| take back one merge | UNDO MERGE (dashboard: Undo) |
| take back everything one agent did | UNDO AGENT … SINCE |
| take back one run of an agent | UNDO AGENT … WHERE run_id |
| get one table or a few rows back | fork the past, merge ONLY TABLES or ONLY KEYS |
| put a whole world back | RESTORE WORLD … TO |
| go back further than history | restore a backup |