Introduction
"Record your dreams. Wake up. Speak. Watch them come to life."
This is Part 59 of the "One Open Source Project a Day" series. Today's project is Dream Recorder (GitHub).
Want to turn your dreams into replayable videos? Dream Recorder is Modem's open-source physical dream recording device: wake up, speak your dream into the microphone, and the system uses OpenAI for text/prompt generation and LumaLabs for AI video, displayed on a 7.9" ultrawide screen. Built with Raspberry Pi 5, capacitive touch, and a 3D-printed enclosure, ~€285 to build, ~$0.15 per dream.
What You'll Learn
- Dream Recorder hardware and workflow
- Single-tap and double-tap interaction
- Hardware BOM and 3D-printed enclosure
- Local development and dreamctl
- Comparison with software-only solutions
Prerequisites
- Basic familiarity with Raspberry Pi and Docker
- 3D printer (optional, for enclosure)
Project Background
Project Overview
Dream Recorder is Modem's open-source dream recording and AI video generation device. After waking, users speak their dreams into a microphone; the system transcribes speech, generates video prompts, and calls LumaLabs to produce 5-second 21:9 ultrawide videos for playback on the device. Hardware: Raspberry Pi 5, 7.9" 1280×400 ultrawide display, capacitive touch, USB microphone; enclosure is 3D-printable in translucent PLA.
Team
- Team: Modem (modemworks.com)
- Collaborators: Mark Hinch (software & hardware), Ben Levinas & Joe Tsao (industrial design), Alexis Jamet (illustrations)
Project Data
- ⭐ GitHub Stars: 1.5k+
- 🍴 Forks: 115+
- 📄 License: MIT
- 🌐 Website: modemworks.com/projects/dreamrecorder
- 💰 Hardware cost: ~€285 (May 2025)
- 💰 Per-dream cost: OpenAI < 0.14
Core Features
Workflow
- Speak your dream: Double-tap to start recording → speak into mic → single-tap to finish
- AI processing: OpenAI speech-to-text + video prompt → LumaLabs generates 5s 540p 21:9 video (ray-flash-2)
- Playback: Single-tap plays latest dream; single-tap during playback = previous dream; double-tap = back to clock mode
Interaction Logic
| Action | State | Result |
|---|---|---|
| Single tap | Idle | Play latest dream |
| Single tap | Playing | Play previous dream |
| Double tap | Playing | Return to clock mode |
| Double tap | Idle | Start recording |
| Single tap | Recording | End recording and generate dream |
Use Cases
- Personal dream journal: Speak right after waking, save as replayable video
- Creative inspiration: Visualize ideas from sleep or waking
- Hardware + AI: Full example of Raspberry Pi + touch + mic + cloud AI
Quick Start
Hardware BOM (~€285):
- Raspberry Pi 5 8GB
- Waveshare 7.9" ultrawide 1280×400 (touch)
- USB microphone
- TTP223B capacitive touch sensor
- Power, cables, cooler, MicroSD, etc.
See README shopping list.
Install & configure:
- Flash Raspberry Pi OS (64-bit) with Pi Imager, hostname
dreamer, enable SSH - SSH in, run
raspi-configto enable VNC and set timezone - Connect with RealVNC, set screen orientation
- Get OpenAI and LumaLabs API keys
git clone→./pi_installer.sh→ enter keys →sudo reboot
Local development:
git clone https://github.com/modem-works/dream-recorder
cd dream-recorder
cp .env.example .env
cp config.example.json config.json
# Edit .env with API keys
docker compose -f docker-compose.dev.yml build
docker compose -f docker-compose.dev.yml up -d
# Visit http://localhost:50003D-Printed Enclosure
- Files:
3DAssets/—dream-recorder_front.stl,dream-recorder_back.stl, pre-sliced G-code - Material: Translucent PLA recommended
- Settings: 0.2mm layer height, 0.4mm nozzle, 15% infill, tree supports
- Assembly: Press-fit front and back, no glue or screws
Project Advantages
| Comparison | Dream Recorder | Software-only | Text diary |
|---|---|---|---|
| Form | Physical device, bedside | Phone/PC app | Pen/notes |
| Output | AI video | Varies | Text |
| Interaction | Touch + voice | Touch + voice | Handwrite/type |
| Cost | ~€285 build + API | Subscription/free | Minimal |
| Open source | MIT, full HW+SW | Varies | N/A |
Deep Dive
Tech Stack
- Languages: Python, JavaScript, Shell, HTML, CSS
- Runtime: Docker Compose, Raspberry Pi OS
- AI: OpenAI (speech-to-text, prompts), LumaLabs (video)
- Hardware: Raspberry Pi 5, GPIO, TTP223B, USB mic
dreamctl Commands
| Command | Description |
|---|---|
./dreamctl config | Edit config |
./dreamctl test | Run unit tests |
./dreamctl test-cov | Test coverage |
./dreamctl gpio-logs | View GPIO logs |
./dreamctl help | Help |
Management UI
Visit http://dreamer:5000/dreams to view and manage generated dreams.
Cost & APIs
- OpenAI: Speech-to-text + video prompts, < $0.01/dream
- LumaLabs: 540p 21:9 5s video (ray-flash-2), ~$0.14/dream
- Suggested: ~20 LumaLabs credits
Project Links and Resources
Official Resources
- 🌟 GitHub: https://github.com/modem-works/dream-recorder
- 🌐 Website: modemworks.com/projects/dreamrecorder
- 📄 Assembly guide: docs/manuals/assembly_guide.pdf
- 📈 Architecture: docs/diagrams/application_architecture.mmd
- 🐛 Issues: GitHub Issues
Target Audience
- Creatives who want to visualize dreams
- Raspberry Pi and hardware DIY enthusiasts
- Developers learning AI video + hardware integration
- Users with 3D printers for the enclosure
Visit my homepage for more useful knowledge and interesting products