← All projects

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.

Sleepypod Core temperature dashboard showing independent controls for both sides, schedules, and overnight status
Core brings temperature, scheduled changes, and overnight status into one view. Demonstration data.

One system, four repositories.

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.

Sleepypod rotary dial

Sleepypod iOS temperature controls with side selection, cooling target, and tabs for schedules and biometrics
Native controls for the same local system.

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.

Sleepypod sensor data flow