# Free Sleep: local control for Eight Sleep Pods

> Free Sleep installs a small server on the Linux computer inside an Eight Sleep Pod so the device can be controlled over the local network without the vendor cloud, with a React web interface for temperature, schedules, alarms and settings, and an optional biometrics stream that writes vitals to SQLite. It works on Pod 3, 4 and 5, and the firmware can be reset to return the device to its official state.

**throwaway31265/free-sleep** — Open source app to control jailbroken 8 sleep pods on LAN 

- Repository: https://github.com/throwaway31265/free-sleep
- Website: https://free-sleep.vercel.app
- Stars: 937 · Forks: 115
- Language: TypeScript
- License: NOASSERTION
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/throwaway31265-free-sleep

## The cloud is the dependency this removes

Free Sleep is described as an open source project that lets you control your Eight Sleep Pod locally, without relying on the cloud or the official app.

The enabling fact is stated in the overview: each Pod actually runs a small Linux computer inside it. That computer is what Free Sleep talks to. The project installs a lightweight server on it, and the server drives the hardware through custom APIs. So the work is not reimplementing the pod's control protocol from scratch, it is putting a server in front of what is already there and taking the internet out of the loop.

The features list makes the payoff concrete. Complete control of the device works without requiring internet access, and the pod will not turn off if you lose internet, it will continue working. The project notes that you can completely block WAN access at your router, and the author says he did exactly that with his own pod.

That is the real difference between this and the official app. It is not that the features are better. It is that the device stops depending on someone else's server being reachable.

There is a warning attached to the same feature: this will bypass blocked devices, please use responsibly. That refers to the pod's own restrictions on the local interface, which the server can reach.

## Which pods work and which do not

The compatibility list is short and it is the first thing to check.

Pod 1 and Pod 2 are marked as not compatible. Pod 3 is marked as compatible with an SD card and compatible without an SD card, and in the no SD card case an FCC ID is given as 2AYXT61100001, located on the back of the pod where the water tubes plug in. Pod 4 and Pod 5 are marked as compatible.

The FCC ID detail is useful because it identifies the hardware revision, and the Pod 3 row is split precisely because the hardware differs between the two cases. If you are unsure which revision you have, that marking is on the device itself.

The installation instructions live in a separate INSTALLATION.md file at the repository root, which the README links prominently with an installation heading of its own. There is also an AGENTS.md file, a CONTRIBUTING.md, and separate development guides for the front end and the back end.

Support is organised around a Discord server for support, feature requests, updates and contributing, and there is a custom ChatGPT bot trained on the Free Sleep documentation that is described as able to help troubleshoot installations, answer setup questions and guide you through common issues.

## What the pod server actually is

The technical description of the server is short. It provides a REST API for managing device settings, schedules and status. It has a modular design with routes for deviceStatus, settings, schedules and execute. And it uses Node.js and Express for lightweight, fast operations.

The stack list adds that the server is Node.js, Express and TypeScript, that the app is React with the MUI component library, Zustand and React Query, and that the database is LowDB for simple JSON-based storage.

That combination is worth reading for what it implies. LowDB means the configuration and schedule data are JSON files rather than a database server, which is the right choice for a single-user device and removes a dependency from a machine with limited resources. Zustand and React Query in the front end are a modern pairing where React Query handles server state and Zustand handles client state, which suits an interface that polls device status.

The repository layout follows the same split, with app/ for the front end, server/ for the back end, biometrics/ for the vitals stream, scripts/ for the enable and disable helpers, tests/, docs/ for the images and the demo GIF, and INSTALLATION.md at the root. There is also a .nvmrc, which pins the Node version the project expects.

## Features that matter at three in the morning

The feature list is written from the point of view of someone actually using the pod, and a few entries are more specific than you would expect from an open source reverse engineering project.

There is dynamic temperature control with real-time updates, and schedule management with several separate kinds of schedule: power on and off times, scheduled temperature adjustments, a scheduled daily time to prime the pod, and alarms. The alarm entry carries an important caveat, that if you turn the Pod off before the alarm runs, then the alarm will not run. That is a behavioural difference from the official app that would otherwise surprise people.

Settings customisation covers timezones, away mode, and the brightness of the LED on the pod. The timezone and away mode entries matter more than they look, because a pod running a local server has no cloud to derive your location from.

The web interface works on desktop and on mobile, which follows from it being a React app served over the local network.

On the FAQ, three questions get direct answers. It is reversible, since you can firmware reset the pod and go back to the official 8 Sleep app. Pod 3 without the SD card, Pod 4 and Pod 5 are impossible to brick as long as you follow the directions. And on warranty, the honest answer is that Free Sleep is not officially supported by 8 Sleep, so there is always a chance it could affect your warranty, with the mitigating note that you can fully reset the firmware and return the Pod to its original state at any time, and that no permanent modification is made to the hardware.

## Biometrics, and how far the heart rate numbers can be trusted

The biometrics feature is the most interesting part of the project because the README is unusually careful about its accuracy.

The claim is limited on purpose. Only heart rate has been validated, HRV and breathing rates have not been validated and may be inaccurate. Heart rates were validated over 33 sleep periods from 3 males and 3 females, against mostly Apple Watches. And heart rate calculations tend to be slightly less accurate for females.

The summary statistics for all 33 periods are given as RMSE of 2.88 on average with 1.45 minimum and 7.63 maximum, correlation of 80.8 percent average with 27 percent minimum and 95 percent maximum, and MAE of 1.83 average with 1 minute minimum and 5.77 maximum.

Those numbers are a small sample from six people, and the correlation minimum of 27 percent is the kind of figure that should stop you from treating a single night as clinically meaningful. The README says so, which is more than most projects in this space would.

The data lands in SQLite at /persistent/free-sleep-data/free-sleep.db. Vitals are computed by a script in biometrics/stream/stream.py that runs continuously and calculates vitals when it detects presence, inserts them once every 60 seconds, and exposes the raw data at the pod's IP under an api metrics vitals path. Enabling and disabling it are handled by two shell scripts in the scripts directory, enable_biometrics.sh and disable_biometrics.sh.

## Licence, funding and the shape of the project

The licence line says the project is licensed under the MIT License with details in the LICENSE.md file, and the licence field on the repository records a custom type that GitHub cannot classify, so the LICENSE.md file is the authoritative text.

Funding is handled by the maintainer directly rather than through a platform. If you find the project helpful you can send a tip to a Bitcoin address or via PayPal, and both are given in the README.

Sentry is credited as a sponsor, having provided error monitoring for the project, which is described as helping maintain a more reliable experience for users by enabling real-time visibility into issues and performance data.

There is also a substantial acknowledgment section, thanking a contributor and their research into how the device is controlled via a unix socket named dac.sock. That detail explains a good deal of the architecture, since talking to the pod's own control daemon over a socket is how the server reaches the hardware without the official app.

The repository is not archived and the last push was on 2026-10-05, and it publishes no GitHub releases, so the version history is tracked by commits.

One last thing to be clear about. This is a single maintainer project with a Discord server and a support bot, not a vendor-backed product. The code is MIT licensed and readable, the hardware path is documented, and the firmware is reversible, but there is no company behind it.

## Conclusion

Adopt Free Sleep if you own a compatible Eight Sleep Pod and want the device to keep working without the vendor cloud, particularly if your pod is on a network where you would rather block outbound traffic entirely. Do not adopt it if you need a supported product, since the project is not officially supported by Eight Sleep, and do not install it on Pod 1 or Pod 2, which the compatibility list marks as not compatible. Verify first which pod generation and revision you have, since Pod 3 differs depending on whether it has an SD card, that you read INSTALLATION.md before touching the firmware, that you keep a path back to the official app, and that you accept the warranty position the project states, since the answer is that it may affect it.

## FAQ

### Which Eight Sleep Pods are compatible with Free Sleep?

Pod 1 and Pod 2 are not compatible. Pod 3 is compatible both with an SD card and without one, where the no SD card revision carries FCC ID 2AYXT61100001 on the back of the pod. Pod 4 and Pod 5 are compatible.

### Does installing Free Sleep brick my pod or void the warranty?

On bricking, Pod 3 without the SD card, Pod 4 and Pod 5 are described as impossible to brick as long as you follow the directions, and the firmware can be reset to return the pod to the official 8 Sleep app. On warranty, the project is not officially supported by 8 Sleep so there is always a chance it could affect your warranty, and no permanent hardware modification is made.

### How accurate are the biometrics readings in Free Sleep?

Only heart rate has been validated, over 33 sleep periods from 3 males and 3 females against mostly Apple Watches, with RMSE averaging 2.88 and correlation averaging 80.8 percent. HRV and breathing rates have not been validated and may be inaccurate, and heart rate calculations tend to be slightly less accurate for females.

### Can the Free Sleep pod keep working without an internet connection?

Yes. The server runs on the Linux computer inside the pod and drives the hardware through custom APIs, so control works without requiring internet access and the pod will continue working if you lose connectivity. The project notes that you can block WAN access at your router entirely.

## Sources

- [Issues](https://github.com/throwaway31265/free-sleep/issues)
- [Project website](https://free-sleep.vercel.app)
- [README](https://github.com/throwaway31265/free-sleep/blob/main/README.md)
- [throwaway31265/free-sleep on GitHub](https://github.com/throwaway31265/free-sleep)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/throwaway31265-free-sleep
