mrkeyoor.com_
Sun 04 Oct 07:01 UTC
Self-Hostedevaluationupdated 04 Oct 2026

life review

Life is a self-hosted telemetry stack for a WHOOP 4.0 strap that avoids the official WHOOP account and subscription. An iPhone collects Bluetooth readings, buffers them locally, and sends them over Tailscale to a Python backend backed by SQLite, Prometheus, and Grafana.

Verdict

Our Life backend built in 8 seconds and passed 102 tests, but one setup error from a missing google module kept the 103-test run from going green. Use it only for a personal WHOOP 4.0 research setup where you can maintain both an iPhone build and a private monitoring stack. The missing license, unvalidated physiological outputs, and very short public history rule it out for a product dependency.

We ran it

Lab card: what happened when we ran lifeScreenshot of life (github.com/alex-holovach/life)
Install✓ · 31s51 packages · 53 MB
Build✓ · 8s
Tests✗ · 208s102 passed · 0 failed · 1 skipped · 1 errors of 103 (pytest)
Known vulns0(pip-audit)
Repo113 files~8,578 lines of source · 2.4 MB · 0 CI workflows · Dockerfile · tests dir

Answers from our run

Does life build from source?

Dependencies installed in 31 seconds (51 packages), and the build succeeded in 8 seconds. We cloned commit 60e705a into a clean Debian container with 3 CPUs and no project-specific setup.

Do life's tests pass?

Yes: 102 of 103 passed when we ran the project's own test command (pytest), with 1 collection error. Some failures need services or credentials a bare container does not have.

Does life have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use life?

Anyone seeking a drop-in replacement for the WHOOP app: recovery, stress, steps, calories, workout detection, sleep stages, and the haptic alarm are not implemented.

What are the alternatives to life?

Gadgetbridge, OpenTracks, wger. Our Life backend built in 8 seconds and passed 102 tests, but one setup error from a missing google module kept the 103-test run from going green.

Setup2/5Backend is small; full setup spans iPhone signing and 6 services
Docs5/5Limits, BLE mappings, backups, and failure handling are explicit
Community1/5141 stars with no open issue or pull-request activity
Maturity1/5No release or license, and public history began in September 2026

Who it’s for

WHOOP 4.0 owners who want direct access to their raw telemetry.
iPhone users comfortable building and signing their own iOS app.
Self-hosters already able to operate Docker, Tailscale, Prometheus, and Grafana.
Researchers who accept experimental, firmware-specific interpretations instead of clinical claims.

Who it’s NOT for

Anyone seeking a drop-in replacement for the WHOOP app: recovery, stress, steps, calories, workout detection, sleep stages, and the haptic alarm are not implemented.
Android users or owners of another wearable: the README says WHOOP 4.0 is the only implemented device and the client requires iOS 17 or later.
Users who need medically validated measurements: the project says its tests do not establish clinical accuracy, and several physiological mappings lack independent reference validation.
Teams that require a clear open-source license: the repository has no root license, and its own release checklist says public code alone grants no open-source rights.
People unwilling to maintain a private server and iPhone developer build: Docker, Tailscale, Xcode, XcodeGen, signing, secrets, backups, and storage monitoring all remain operator work.

Setup reality

Our backend run at commit 60e705a installed 51 packages in 31 seconds and used 53 MB. The build passed in 8 seconds. Pytest finished after 208 seconds with 102 passed, 1 skipped, and 1 collection/setup error in the 103-test run; tests/test_wire.py could not import google.

The full product also needs a Linux server with Docker, Docker Compose, Tailscale, Prometheus, and Grafana. The iPhone app requires iOS 17+, full Xcode, XcodeGen, Developer Mode, a bundle identifier, and your signing team. Ingest and Grafana credentials live in local secret files.

Pip-audit found 0 known vulnerabilities in our installed backend environment. That does not validate the Swift app, container images, BLE decoding, or medical accuracy. The documented firmware interpretations target WHOOP 4.0 with Harvard 41.17.4.0.

WHOOP 4.0 is the only supported device

Life connects directly to a WHOOP 4.0 strap over Bluetooth Low Energy and keeps the official account out of the path. The iPhone saves readings before acknowledging them to the strap, then uploads batches to a private backend. That server archives original packets before acknowledging the phone. Prometheus export happens later, so a temporary monitoring failure does not have to erase the underlying capture.

The scope is narrower than the official app. Live heart rate, battery, wrist temperature, private dashboards, and some history handling are available. HRV and blood oxygen are partial, respiratory rate is experimental, and sleep entry is manual. Recovery, stress, steps, calories, workout detection, sleep stages, and the haptic alarm are absent. Life's strain score is its own 0 to 21 cardiovascular calculation, not WHOOP's proprietary score.

The firmware target is Harvard 41.17.4.0

Temperature, oxygen, and pulse-interval interpretations target WHOOP 4.0 firmware Harvard 41.17.4.0. The project archives unknown fields instead of promoting them to health metrics, which is the right bias for reverse-engineered sensor data. A device-calculated oxygen result can be withheld when it is missing, erroneous, or ambiguous. Wrist temperature is explicitly described as wrist temperature, not core body temperature.

The validation document draws an important line: software checks do not establish clinical accuracy. HRV has no ECG comparison, while respiration and SpO2 lack independent reference validation. iOS background execution can also interrupt collection. Life has recovery logic and durable buffers, but the README does not promise uninterrupted Bluetooth service. Anyone using these readings for medical decisions would be asking the software to support a claim its author rejects.

What happened when we ran it

Our run focused on the Python project under backend/ at commit 60e705a. In a fresh Debian container with 3 CPUs and 8 GB of RAM, 51 packages installed in 31 seconds and occupied 53 MB. The build completed in 8 seconds. The full repository was 2.4 MB, with 113 files and roughly 8,578 lines of source.

Pytest ran for 208 seconds and did not finish cleanly. The supplied summary reported 102 passed, 1 skipped, 0 failed assertions, and 1 collection/setup error in the 103-test run. tests/test_wire.py stopped on ModuleNotFoundError: No module named 'google' while importing Protobuf modules. The log does not say why that module was absent, so we cannot label it a packaging bug or a system-package problem.

Pip-audit reported 0 known vulnerabilities in the installed Python environment. The repository has a Dockerfile and a tests directory, but no CI workflow files. Our test method covered the backend build and Python suite. It did not compile the Swift client, connect to a WHOOP strap, exercise Tailscale, start the complete Compose stack, or compare physiological readings with reference hardware.

Six backend services turn ownership into maintenance

The documented server path starts an API, a remote-write worker, scheduled analysis, Prometheus, Grafana, and a gateway. That is 6 named components to operate, even though Docker Compose groups them into one command. Tailscale Serve publishes the gateway privately. The ingestion token and Grafana administrator password live in files mounted as Docker secrets, while machine settings remain in .env.

The operations guide is unusually candid about the remaining chores. Backups include credentials and personal telemetry, so an off-machine copy needs protection. Automatic off-PC backup is not configured. Raw archives and phone records have no automatic pruning, and the operator must watch disk use. Prometheus has 5 alert rules, but there is no external notification destination. Data ownership here means owning the pager too.

iOS 17 and personal signing are mandatory

The phone client needs iOS 17 or later, full Xcode, XcodeGen, Developer Mode, a bundle identifier, and an Apple signing team. Personal Team provisioning expires, so reinstalling updates remains subject to Apple's trust and device-pairing rules. The same bundle identifier must be kept across updates to preserve local data. Force-quitting the app also affects background collection until it is reopened.

Those requirements make Life a personal engineering project rather than an App Store product. The architecture protects against several ordinary failures by keeping data on the strap, in phone SQLite, and in the backend archive. It still cannot reconstruct readings the strap never stored. Reboot, first-unlock, long overnight use, and replacement-server recovery are described as separate operator tests rather than guaranteed behaviors.

No root license means no open-source grant

GitHub detected no license, and the project's own public-release checklist says Life has no root license. It explicitly warns that a public repository does not grant an open-source license. That blocks reuse, modification, and redistribution for any team that needs clear legal permission. A protocol reference retained under MIT does not license the rest of the code.

The repository was created on September 14, 2026, pushed on September 15, and had 141 stars on October 4. GitHub listed 0 open issues and 0 open pull requests, and there was no published release. Those facts describe a young public snapshot with little visible collaboration history. They do not prove abandonment, but they give a cautious adopter almost no release or community record to evaluate.

This is a careful research rig, not a finished health product

Life earns attention for preserving raw packets, documenting unknowns, and refusing to dress experimental calculations as medical truth. Our backend result also shows substantial working code: 102 tests passed and the 8-second build completed. The one collection error is repair work, while the larger commitment lies outside Python in iPhone signing, Bluetooth behavior, Docker services, backups, and monitoring.

A WHOOP 4.0 owner who enjoys running infrastructure may learn a lot from it. Everyone else should wait for a license, a release process, broader device evidence, and a clean fresh-environment suite. Gadgetbridge is the stronger starting point for supported Android wearables. A conventional fitness tracker is the safer choice when you need reliable daily use instead of firmware-specific research.

Alternatives

ProjectWhat it isPick it when
GadgetbridgeAn Android app for using many wearables without the vendor's cloud service.pick this instead when you use Android or a supported non-WHOOP wearable and want a mature phone-first project.
OpenTracksA privacy-focused Android activity recorder with local data ownership.pick this instead when GPS workout tracking matters more than decoding a WHOOP strap.
wgerA self-hosted workout, nutrition, and weight manager with web and mobile clients.pick this instead when manual fitness planning and records matter more than continuous wearable telemetry.

What people are saying

  1. [hackernews] Oxygen-deprived underwater zones may not be “dead zones” but clue to early life
  2. [techcrunch-ai] With Dazzle, Marissa Mayer bets your camera roll has more info on your life than your inbox
  3. [hackernews] In an $80 Motel Room, a Discovery to Shed Light on the Origins of Life
  4. [hackernews] Promising discoveries about the potential for life on one of Saturn’s icy moons
  5. [techcrunch-ai] TechCrunch Disrupt 2026: Aaron Edsinger brings Hello Robot’s Stretch 4 to life onstage
  6. [theverge] These discreet hearing aid glasses now have better voice boosting and battery life

Sources

  1. Life repository
  2. Life README
  3. Life validation notes
  4. Life operations guide
  5. Life public release checklist
  6. Life reliability notes

More self-hosted reviews

awesome-cloudflare-selfhosted · AgentVerse-OS · incubator-seata · DocsGPT · glances · lunel · the whole board →