Earlier this week we wrote that Dreaming wasn't available in 2026.4.x — the docs were ahead of the release. That changed today. Dreaming shipped as part of 2026.4.5, making the /dreaming workflow generally available for the first time.
It's experimental, opt-in, and disabled by default. But it's real and it works. Here's how to turn it on.
Before enabling: Make sure you're actually on 2026.4.5. Run openclaw --version. Note that 2026.4.5 also has a known CLI breakage bug on some installs — if your CLI is broken, fix that first, then enable Dreaming.
What Dreaming Actually Does
Dreaming is a background memory consolidation process. During and after conversations, your agent accumulates short-term context — facts, preferences, decisions, things you mentioned in passing. Dreaming runs a periodic background job that:
- Scans recent conversation history
- Identifies facts worth retaining long-term
- Writes them to a persistent recall store in
memory/.dreams/ - Deduplicates and merges with existing memories
Think of it as your agent's equivalent of sleep — it processes the day's conversations and decides what to keep. The result: your agent gradually builds up a persistent knowledge base about you, your preferences, and your context without you having to manually maintain memory files.
Step 1 — Enable Dreaming in Config
Open ~/.openclaw/openclaw.json and add the Dreaming config to the plugins.entries.memory-core section:
"plugins": {
"entries": {
"memory-core": {
"enabled": true,
"config": {
"dreaming": {
"enabled": true,
"mode": "passive"
}
}
}
}
}
Then restart the gateway:
openclaw gateway restart
Dreaming Modes
Passive
Runs during natural idle periods. Lowest API cost. Best for most users. Doesn't interrupt conversations.
Scheduled
Runs on a cron-like schedule you define. Predictable behavior, slightly higher cost. Good for heartbeat setups.
Active
Runs more aggressively after each session. Best memory retention, highest API cost. For power users.
Start with passive — it's the lowest risk and lowest cost way to try Dreaming. You can tune from there.
Step 2 — Configure Scheduled Mode (Optional)
If you want Dreaming to run on a schedule — for example, every night at 2 AM — use scheduled mode with a cron expression:
"dreaming": {
"enabled": true,
"mode": "scheduled",
"schedule": "0 2 * * *"
}
This pairs well with heartbeat setups where the agent is already doing overnight work. Add Dreaming to the overnight cycle and your agent wakes up each morning with consolidated memory from the previous day.
Step 3 — Trigger a Dream Manually
You can trigger a dream cycle on demand without waiting for the scheduled or passive trigger:
# From CLI openclaw memory promote # Or from chat /dreaming
The promote subcommand is the one that wasn't available before 2026.4.5. It now works.
Where Dreaming Stores State
All Dreaming state lives inside your workspace under memory/.dreams/:
.dreams/
recall-store.json — the consolidated long-term memory
phase-signals.json — tracks what's been processed
ingestion-checkpoints.json — prevents re-processing old conversations
locks/ — prevents concurrent dream cycles
These files are plain JSON — you can read, edit, or back them up like any other workspace file. If something goes wrong, delete the .dreams/ directory and Dreaming starts fresh.
Privacy note: The recall store contains facts your agent extracted from your conversations — preferences, names, decisions, anything it deemed worth remembering. Review memory/.dreams/recall-store.json periodically to see what's being retained and remove anything you don't want persisted.
API Cost Implications
Dreaming makes LLM calls to process and consolidate conversation history. Each dream cycle costs tokens. Rough estimates:
- Passive mode: A few hundred to a few thousand tokens per cycle, depending on conversation volume. Very cheap — less than a cent per day for typical usage.
- Scheduled mode: Similar token cost to passive, just predictably timed.
- Active mode: Runs more frequently; could add up if you have very high conversation volume.
For setups already watching API costs closely, start with passive mode and monitor your usage for a week before switching to active.
Dreaming vs. Manual memory.md — Which Should You Use?
Both. They complement each other:
- Dreaming is automatic and passive — it catches things you didn't think to write down. Good for building ambient context over time.
- memory.md is explicit and reliable — you put exactly what you want in there, and it's always injected. Good for critical facts, preferences, and instructions that must be in every context window.
The best setup: use memory.md for the things you'd put in an onboarding document ("Josh runs 6 companies, prefers short replies, uses Discord") and let Dreaming handle the rest ("Josh mentioned he's closing on a property in Q3", "Josh prefers Qwen for sub-agent tasks").
Migration note: If you set up a manual memory system using the file-based workaround from our previous guide, you don't need to tear it down. Dreaming reads from and writes to memory/.dreams/ — it won't overwrite your existing memory.md or other memory files. They coexist cleanly.