Dreaming is the background memory consolidation system inDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
memory-core. It helps OpenClaw move strong short-term signals into durable memory while keeping the process explainable and reviewable.
Dreaming is opt-in and disabled by default.
What dreaming writes
Dreaming keeps two kinds of output:- Machine state in
memory/.dreams/(recall store, phase signals, ingestion checkpoints, locks). - Human-readable output in
DREAMS.md(or existingdreams.md) and optional phase report files undermemory/dreaming/<phase>/YYYY-MM-DD.md.
MEMORY.md.
Phase model
Dreaming uses three cooperative phases:| Phase | Purpose | Durable write |
|---|---|---|
| Light | Sort and stage recent short-term material | No |
| Deep | Score and promote durable candidates | Yes (MEMORY.md) |
| REM | Reflect on themes and recurring ideas | No |
Light phase
Light phase
Light phase ingests recent daily memory signals and recall traces, dedupes them, and stages candidate lines.
- Reads from short-term recall state, recent daily memory files, and redacted session transcripts when available.
- Writes a managed
## Light Sleepblock when storage includes inline output. - Records reinforcement signals for later deep ranking.
- Never writes to
MEMORY.md.
Deep phase
Deep phase
Deep phase decides what becomes long-term memory.
- Ranks candidates using weighted scoring and threshold gates.
- Requires
minScore,minRecallCount, andminUniqueQueriesto pass. - Rehydrates snippets from live daily files before writing, so stale/deleted snippets are skipped.
- Appends promoted entries to
MEMORY.md. - Writes a
## Deep Sleepsummary intoDREAMS.mdand optionally writesmemory/dreaming/deep/YYYY-MM-DD.md.
REM phase
REM phase
REM phase extracts patterns and reflective signals.
- Builds theme and reflection summaries from recent short-term traces.
- Writes a managed
## REM Sleepblock when storage includes inline output. - Records REM reinforcement signals used by deep ranking.
- Never writes to
MEMORY.md.
Session transcript ingestion
Dreaming can ingest redacted session transcripts into the dreaming corpus. When transcripts are available, they are fed into the light phase alongside daily memory signals and recall traces. Personal and sensitive content is redacted before ingestion.Dream Diary
Dreaming also keeps a narrative Dream Diary inDREAMS.md. After each phase has enough material, memory-core runs a best-effort background subagent turn and appends a short diary entry. It uses the default runtime model unless dreaming.model is configured. If the configured model is unavailable, Dream Diary retries once with the session default model.
This diary is for human reading in the Dreams UI, not a promotion source. Dreaming-generated diary/report artifacts are excluded from short-term promotion. Only grounded memory snippets are eligible to promote into
MEMORY.md.Backfill commands
Backfill commands
memory rem-harness --path ... --groundedpreviews grounded diary output from historicalYYYY-MM-DD.mdnotes.memory rem-backfill --path ...writes reversible grounded diary entries intoDREAMS.md.memory rem-backfill --path ... --stage-short-termstages grounded durable candidates into the same short-term evidence store the normal deep phase already uses.memory rem-backfill --rollbackand--rollback-short-termremove those staged backfill artifacts without touching ordinary diary entries or live short-term recall.
Deep ranking signals
Deep ranking uses six weighted base signals plus phase reinforcement:| Signal | Weight | Description |
|---|---|---|
| Frequency | 0.24 | How many short-term signals the entry accumulated |
| Relevance | 0.30 | Average retrieval quality for the entry |
| Query diversity | 0.15 | Distinct query/day contexts that surfaced it |
| Recency | 0.15 | Time-decayed freshness score |
| Consolidation | 0.10 | Multi-day recurrence strength |
| Conceptual richness | 0.06 | Concept-tag density from snippet/path |
memory/.dreams/phase-signals.json.
Scheduling
When enabled,memory-core auto-manages one cron job for a full dreaming sweep. Each sweep runs phases in order: light → REM → deep.
The sweep includes the primary runtime workspace and any configured agent workspaces, deduped by path, so subagent workspace fan-out does not exclude the main agent’s DREAMS.md and memory state.
Default cadence behavior:
| Setting | Default |
|---|---|
dreaming.frequency | 0 3 * * * |
dreaming.model | default model |
Quick start
- Enable dreaming
- Custom sweep cadence
Slash command
CLI workflow
- Promotion preview / apply
- Explain promotion
- REM harness preview
memory promote uses deep-phase thresholds by default unless overridden with CLI flags.Key defaults
All settings live underplugins.entries.memory-core.config.dreaming.
Enable or disable the dreaming sweep.
Cron cadence for the full dreaming sweep.
Optional Dream Diary subagent model override. Use a canonical
provider/model value when also setting a subagent allowedModels allowlist.Phase policy, thresholds, and storage behavior are internal implementation details (not user-facing config). See Memory configuration reference for the full key list.
Dreams UI
When enabled, the Gateway Dreams tab shows:- current dreaming enabled state
- phase-level status and managed-sweep presence
- short-term, grounded, signal, and promoted-today counts
- next scheduled run timing
- a distinct grounded Scene lane for staged historical replay entries
- an expandable Dream Diary reader backed by
doctor.memory.dreamDiary
Dreaming never runs: status shows blocked
Ifopenclaw memory status reports Dreaming status: blocked, the managed cron exists but the default agent heartbeat is not firing. Check that heartbeat is enabled for the default agent and that its target is not none, then run openclaw memory status --deep again after the next heartbeat interval.