Chronos/DBWaitlist

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 serial or 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

syntax
FROM table AS OF when [alias]FROM table [alias] AS OF whenFROM table FOR SYSTEM_TIME AS OF when

Reads 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.

what changed status in the last hour
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;
rows deleted in the last 10 minutes
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 against main is everything since, and merging it restores.
  • Diff it: diff world 'main@-1 hour' to main as sql; is everything main did in the last hour, as statements.
  • MCP: any tool’s branch takes main@-15 minutes.

RESTORE WORLD

syntax
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.

SQL
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

syntax
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.

SQL
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 changes

A merge a person ran of an agent’s world is the person’s: undo it with UNDO MERGE.

SHOW HISTORY and SHOW AUDIT

StatementRows
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 toUse
see what a row wasAS OF
take back one mergeUNDO MERGE (dashboard: Undo)
take back everything one agent didUNDO AGENT … SINCE
take back one run of an agentUNDO AGENT … WHERE run_id
get one table or a few rows backfork the past, merge ONLY TABLES or ONLY KEYS
put a whole world backRESTORE WORLD … TO
go back further than historyrestore a backup
Time travel and undo · Chronos