What Dreaming Does
A dream cycle runs two specialized agents in sequence:1. Deduction
The deduction specialist performs logical inference over existing conclusions. It autonomously explores the observation space and looks for:- Knowledge updates: When the same fact has changed over time (e.g., “works at Company A” followed later by “works at Company B”), it deletes the outdated conclusion and creates a new one reflecting the current state.
- Logical implications: Conclusions that follow necessarily from existing premises but weren’t captured during real-time processing.
- Contradictions: Conflicting conclusions that need resolution.
- Peer card updates: Key biographical facts (name, location, occupation) that should be recorded on the peer card for quick access.
2. Induction
The induction specialist identifies patterns across multiple conclusions. It looks for:- Behavioral tendencies: Recurring behaviors observed across different contexts (e.g., “tends to reschedule meetings when stressed”).
- Preferences: Consistent choices that indicate underlying preferences.
- Personality traits: Stable characteristics inferred from multiple data points.
- Correlations: Relationships between different aspects of behavior.
When Dreams Are Scheduled
Dreams are triggered automatically based on a set of heuristics designed to balance freshness with efficiency:Conditions
All of the following must be true for a dream to be scheduled:- Document threshold: At least 50 new conclusions have been created since the last dream for that peer representation.
- Minimum cooldown: At least 8 hours have passed since the last dream for that peer representation.
- Dreaming is enabled: The workspace and/or session configuration has
dream.enabledset totrue(the default).
Idle timeout
When the threshold conditions are met, a dream is not immediately executed. Instead, a timer is set (default: 60 minutes) that waits for user inactivity. If new messages arrive during the waiting period, the pending dream is cancelled and the timer resets. This prevents dreaming while the user is actively interacting, ensuring the system consolidates only after the conversation has settled. Once the idle timeout expires without interruption, the dream task is enqueued for processing.Manual scheduling
You can also trigger a dream explicitly via the API:Scope
Dreams operate at the peer representation level—specifically, a (workspace, observer, observed) tuple. This means:- A dream consolidates conclusions for a specific observer’s view of a specific observed peer.
- In the common case of self-observation (where the observer and observed are the same peer), the dream consolidates that peer’s own representation.
- Dreams do not span across workspaces or across different peer pairs.
Deduplication and Safety
The system includes several safeguards to prevent wasted work:- No concurrent dreams: If a dream is already being processed for a given peer representation, a new one will not be enqueued.
- No duplicate pending dreams: If a dream is already queued and waiting, a second enqueue request is skipped.
- Cancellation on new activity: When new messages arrive for a peer, any pending (not yet started) dream for that peer is cancelled. This ensures the dream always runs on the most up-to-date set of conclusions.
Representation History
Each dream is recorded as a run, so you can see what it changed instead of only the representation it left behind. A run lists:- Created conclusions, each with the conclusions it was derived from: premises for deductive conclusions, supporting evidence for inductive ones.
- Removed conclusions, as they read when the dream removed them. A conclusion replaced by a near-duplicate from the same dream names its replacement in
replaced_by. - The peer card before the dream’s first update and after its last.
failed or was interrupted still shows everything it committed.
observer as well as observed to narrow the list to a single representation. These endpoints accept workspace and admin keys only.
How referenced conclusions resolve
Created conclusions and their sources are looked up when you read the run, and each carries astatus:
Retention and deletion
Changes are kept for 30 days by default (DREAM_HISTORY_RETENTION_DAYS). After that, a run keeps only the conclusions it created that still exist, so you can always see which dream made a current conclusion. Its removed conclusions and peer-card change are deleted, and the run’s pruned_at is set; created_count, removed_count and peer_card_updated still describe what the dream did. A run with nothing left is deleted. Set DREAM_HISTORY_ENABLED=false to stop recording.
History follows the same deletion rules as the conclusions it describes:
- Deleting a conclusion through the API also deletes any copy history kept of it: runs that reference it show it as
unavailable. This works for a conclusion a dream already removed, so its recorded text can be erased too. - Deleting a session deletes the recorded text of conclusions that came from that session.
- Deleting a workspace deletes all of its history.
Configuration
Dreams can be enabled or disabled at the workspace or session level:Reasoning
Learn how Honcho reasons over messages to produce conclusions
Configuration
Full configuration reference for reasoning, summaries, and dreams
Queue Status
Monitor dream tasks alongside other background processing
Schedule Dream API
API reference for manually triggering dreams