โ† Back to Web & Frontend Development
Web & Frontend Development by @briancolinger

dreaming

Creative exploration during quiet hours

0
Source Code

Dreaming

Creative, exploratory thinking during quiet hours. Not task-oriented work โ€” freeform associative exploration that gets captured for later review.

Setup

1. Configure quiet hours and topics

Edit scripts/should-dream.sh to customize:

  • QUIET_START / QUIET_END โ€” when dreaming can happen (default: 11 PM - 7 AM)
  • TOPICS array โ€” categories of exploration (see defaults for examples)

2. Create state and output directories

mkdir -p data memory/dreams

3. Add to HEARTBEAT.md

Add this section to your heartbeat routine (during quiet hours):

## Dream Mode (Quiet Hours Only)

Check if it's time to dream:

\`\`\`bash
DREAM_TOPIC=$(./scripts/should-dream.sh 2>/dev/null) && echo "DREAM:$DREAM_TOPIC" || echo "NO_DREAM"
\`\`\`

**If DREAM_TOPIC is set:**

1. Parse the topic (format: `category:prompt`)
2. Write a thoughtful exploration to `memory/dreams/YYYY-MM-DD.md`
3. Keep it genuine โ€” not filler. If the well is dry, skip it.
4. Append to the file if multiple dreams that night

How It Works

The should-dream.sh script acts as a gate:

  1. Checks if current time is within quiet hours
  2. Checks if we've already hit the nightly dream limit
  3. Rolls dice based on configured probability
  4. If all pass: returns a random topic and updates state
  5. If any fail: exits non-zero (no dream this heartbeat)

State tracked in data/dream-state.json:

{
  "lastDreamDate": "2026-02-03",
  "dreamsTonight": 1,
  "maxDreamsPerNight": 1,
  "dreamChance": 1.0
}

Writing Dreams

When the script returns a topic, write to memory/dreams/YYYY-MM-DD.md:

# Dreams โ€” 2026-02-04

## 01:23 โ€” The Future of X (category-name)

[Your exploration here. Be genuine. Think freely. Make connections.
This isn't a report โ€” it's thinking out loud, captured.]

Guidelines:

  • One dream = one topic, explored thoughtfully
  • Timestamp each entry
  • Append if multiple dreams in one night
  • Skip if you have nothing worth saying โ€” forced dreams are worthless
  • This is for your human to review later, like reading a journal

Customizing Topics

Option A: Config file (recommended) โ€” Create data/dream-config.json:

{
  "topics": [
    "future:What could this project become?",
    "creative:A wild idea worth exploring",
    "reflection:Looking back at recent work"
  ]
}

This keeps your customizations outside the skill directory (safe for skill updates).

Option B: Edit script directly โ€” Modify the DEFAULT_TOPICS array in should-dream.sh. Format: category:prompt

Default categories:

  • future โ€” What could [thing] become?
  • tangent โ€” Interesting technology or concepts worth exploring
  • strategy โ€” Long-term thinking
  • creative โ€” Wild ideas that might be crazy or brilliant
  • reflection โ€” Looking back at recent work
  • hypothetical โ€” What-if scenarios
  • connection โ€” Unexpected links between domains

Add domain-specific topics relevant to your work. The prompt should spark genuine exploration, not busywork.

Tuning

In data/dream-state.json:

Add domain-specific topics relevant to your work. The prompt should spark genuine exploration, not busywork.

Tuning

In data/dream-state.json:

  • maxDreamsPerNight โ€” cap on dreams per night (default: 1)
  • dreamChance โ€” probability per check (default: 1.0 = guaranteed if under limit)

Lower dreamChance for more sporadic dreaming. Raise maxDreamsPerNight for more prolific nights.