Systems integrator and developer · 2026
Local WHOOP Pipeline
Your own WHOOP band’s recovery, strain, and sleep scores, computed on hardware you control. No subscription required.
Overview
A WHOOP band’s headline metrics, recovery, strain, sleep stages, and HRV, are computed in WHOOP’s cloud and gated behind a subscription. This project evaluates the open-source WHOOP 4.0 Bluetooth reverse-engineering ecosystem and assembles a local, self-hosted pipeline that captures a band’s data directly and computes the same metrics offline.
What I Built
- Evaluated the open-source WHOOP 4.0 reverse-engineering ecosystem (OpenWhoop, whoomp, NOOP) to find the most reliable path forward, then validated it against my own band over Bluetooth.
- Stood up a self-hosted, Dockerized analysis stack (FastAPI, TimescaleDB) that decodes captured Bluetooth frames into recovery, strain, sleep, and HRV scores using published methods, served on a local dashboard.
- Deployed the companion iOS collector to my own iPhone via Xcode, configuring code signing and background Bluetooth so the phone holds the band’s link continuously.
- Found and patched a real bug in the ingest pipeline that was silently dropping the band’s biometric stream (gravity, SpO2, skin temperature), unblocking sleep and recovery scoring.
- Debugged background BLE reliability through overnight field tests, and automated the Mac-side capture pipeline with a launchd job.
- Wrote an architecture-alignment reference comparing my pipeline’s protocol framing, storage schema, and scoring against NOOP, a more mature open-source WHOOP client, to guide further work.
Tech
Swift/iOS (Xcode, background BLE), Python/FastAPI, Docker, TimescaleDB, launchd automation, SQLite.
Status
Working end to end on personal hardware; recovery, strain, and sleep compute locally. iOS background-collection reliability remains an active debugging track.
- Swift
- iOS
- Python
- FastAPI
- Bluetooth LE
- Docker
- TimescaleDB
- launchd
- SQLite
Repository coming soon.