When 3.28 shipped, dreaming was a paragraph at the bottom of the changelog. An experimental memory-growing process that ran in the background. The lobster was learning to sleep.
Eight days and five releases later, the lobster dreams properly.
Three Phases, Running Their Own Schedules
The big refactor landed in 4.5. Dreaming used to be competing modes — only one could run at a time, and the edges between them were muddy. 4.5 split it into three cooperative phases: light, deep, and REM.
Each has its own schedule, its own recovery behavior, its own promotion gate. Light sleep handles weighted short-term recall promotion. Deep sleep is where durable memory actually gets written. REM is the one allowed to stage "possible lasting truths" and preview them before they cross the gate.
Configurable aging controls came with the split: recencyHalfLifeDays and maxAgeDays let you tune recall decay. Optional verbose logging shows which promotion decisions were made and why. If a phase fails, recovery runs independently instead of dragging the whole pipeline down.
The Dreams UI
4.5 also shipped the first version of the Dreams UI in Control UI. Dream Diary as a top-level surface. Multilingual conceptual tagging. A simplified config — just enabled plus optional frequency. Phases are treated as implementation detail in the user-facing surface, which is the right call.
4.9 built on that with a structured diary view: timeline navigation, backfill and reset controls, traceable dreaming summaries, and a grounded Scene lane with promotion hints plus a safe clear-grounded action for staged backfill signals.
4.11 added two new diary subtabs: Imported Insights and Memory Palace. Imported Insights lets Dreaming inspect imported source chats directly — including ChatGPT exports. Memory Palace surfaces the compiled wiki pages and full source pages behind them. You can see not just what the lobster remembered, but where it came from.
Grounded REM Backfill
This is the feature that makes dreaming useful for people who already have months of notes.
Before 4.9, dreaming only processed new daily notes as they came in. If you had been writing in a memory directory for a year, none of that backlog fed into durable memory unless you manually staged it.
4.9 added a grounded REM backfill lane. openclaw memory rem-harness --path accepts a historical directory. Dreaming replays those old notes into the corpus — light promotion, deep promotion, REM staging — without requiring a second memory stack. Diary commit/reset flows keep the backfill auditable. Durable-fact extraction got cleaner. Live short-term promotion integration means the historical pass and the ongoing pass share the same plumbing.
4.12 followed up by raising phase reinforcement so repeated dreaming-only revisits actually cross the durable-memory gate, instead of stalling just below the threshold. Light-sleep candidate confidence now gets computed from all recorded short-term signals instead of recall-only counts — dreaming-only entries stop rendering as confidence: 0.00. Narrative diary writes are atomic, with retry-on-timeout cleanup for transient failures.
ChatGPT Import
4.11 shipped ChatGPT import ingestion into the memory-wiki layer. You export your ChatGPT conversation history, hand the file to Dreaming, and it ingests structured source chats into the corpus. The Imported Insights tab lets you browse what came in before deciding whether to promote specific entries.
This isn't a gimmick. It's the path that makes Dreaming useful for anyone with a meaningful history on another assistant. You don't start from zero.
Memory-Wiki, Resurrected
4.7 brought the bundled memory-wiki stack back. Plugin, CLI, sync/query/apply tooling, memory-host integration. Structured claim/evidence fields. Compiled digest retrieval. Claim-health linting. Contradiction clustering. Staleness dashboards. Freshness-weighted search.
If you used memory-wiki earlier in the project's life and watched it go dark, it's back with better bones. 4.12 added the recommended QMD + bridge-mode hybrid recipe plus zero-artifact troubleshooting guidance to the provider docs.
Quieter Fixes That Matter
- •
dreams.mdas the diary target (4.5): dreaming trail content writes to a top-level file instead of daily memory notes. The file stays readable but doesn't pull into default recall, so your explicit reads aren't polluted by dreaming output. - •Session transcripts into the corpus (4.7): redacted session transcripts now feed the dreaming corpus with per-day session-corpus notes, cursor checkpointing, and promotion/doctor support.
- •Heartbeat consumed exactly once (4.12): managed dreaming no longer replays on later heartbeats after the scheduled run was already consumed.
- •Unicode-safe wiki slugs (4.12): memory-wiki preserves Unicode letters, digits, and combining marks in slugs and contradiction clustering. Non-ASCII titles stop collapsing or overflowing path limits.
- •Nested daily notes feed short-term recall (4.12):
memory/<strong class="text-white font-semibold">/YYYY-MM-DD.mdlayouts work now. Generated dream reports undermemory/dreaming/</strong>are excluded so dreaming doesn't promote its own output. - •Timezone honesty (4.12): diary timestamps use the host local timezone when
dreaming.timezoneis unset, with the timezone abbreviation included soDREAMS.mdand the UI make local vs UTC explicit.
What This Adds Up To
When 3.28 shipped, dreaming was a feature you could opt into and then mostly forget. Through 4.5–4.12 it became something closer to a background process that makes the lobster's memory grow over time without you supervising it.
You write notes. Sleep runs in three phases. Durable memory accumulates. When you look at the Diary, you see what the lobster decided was worth keeping — and crucially, where it came from. You can backfill old notes, import history from elsewhere, and see exactly which signals pushed a claim past the promotion gate.
The lobster sleeps now. It wakes up knowing more than it did yesterday.