OPEN SOURCE · HARDWARE · WEB · iOS
sleepypod
Make your Pod feel like yours.
An open-source ecosystem for local control of Eight Sleep Pod hardware. Use your browser, your phone, a bedside rotary dial, or an AI agent over MCP. Connect home automation through MQTT and Apple HomeKit. Core coordinates temperature, schedules, and sensor processing through modular services, so new clients and integrations can slot in without changing the rest of the system. Your sleep data stays at home.

One system, four repositories.
Core ↗
Hardware control, schedules, sensor processing, and the web interface.
SwiftiOS ↗
A native companion for temperature, schedules, biometrics, and device status.
ESP32-S3 · PlatformIOM5 Rotary Dial ↗
A physical bedside interface with responsive temperature controls.
Next.js · NextraGuides & documentation ↗
Product guides, architecture references, and reproducible media captures.
A shared controller behind every interface.
Web, iOS, the dial, schedules, and Autopilot all feed the same per-side temperature controller. It resolves who owns each side, then serializes commands to the hardware. A manual adjustment and a scheduled change share the same rules.
- Hardware coordination
- Per-side locks protect writes. The DAC protocol has no correlation IDs, so commands run sequentially and each response belongs to the command just sent.
- Live state across clients
- The hardware monitor polls device state and broadcasts updates over WebSocket. HTTP APIs support native clients and integrations; the iOS app discovers Core through Bonjour.
- Contracts across repositories
- The Swift client separates backend behavior from its views. Contract tests decode captured Core responses to catch API drift between the independently developed client and server.
On your phone. Beside your bed.
The iOS app puts temperature, schedules, and device status in your hand. The M5Stack Dial turns the same local system into a tactile bedside control, with a responsive input loop and temperature state synchronized over Wi-Fi.

From sensor frames to a visible data path.
Independent Python services process sensor data into vitals, movement, and sleep records. Consumers select either RAW files or NATS messages as their input. Device configuration and biometrics live in separate databases, and the health interface makes the path from sensors to outputs inspectable.
