Start, act, and keep the undo.
1. Start
The agent starts a dream and reads the candidate entries: up to 200 entries changed since the last finished dream, or in the last 7 days.
2. Act
The agent sends actions: revise to merge true duplicates, forget to retire stale entries, confirm to keep an entry, flag to leave an unclear case for a person. Each action names the version it read, so an entry that changed since then is reported as a conflict and left alone.
3. Undo if needed
dream_undo reverses the dream's own changes for 7 days after it. An entry another writer changed since is reported as a conflict and kept.
Limits that keep a dream small.
A dream forgets at most 30% of its candidates and at most 20 entries; a page of actions that would go past it is refused before anything is written. dream_apply sends actions in pages of 25 and, when a page fails, reports what earlier pages applied.
Undoing a removed entry restores its value, type, importance and source; other metadata such as TTL or canonical flags is not restored, so an entry that had a TTL comes back without one.
Keys starting bilinc:dream: hold dream reports, which the dream pass itself writes: an ordinary commit, revise or confirm of such a key is refused (forgetting one is allowed).
Where it runs.
Python SDK
CloudClient.dream_start, dream_apply, dream_undo and dream_show.
CLI
bilinc dream start --limit 50 # prints a dream id and the candidates
bilinc dream apply <dream_id> --file actions.json
bilinc dream show <dream_id>
bilinc dream undo <dream_id>MCP
The local adapter python3 -m bilinc.cloud_mcp and the hosted connector at mcp.bilinc.space both have dream_start, dream_apply and dream_undo. On the connector, dream_apply and dream_undo are marked destructive, so Claude asks before running them, and a read-only connection does not see them.