GoWhoop is a reverse engineering project aiming to get data out of a Whoop 4.0
Currently hearth rate, and accelerometer are the only metrics that are likely being correctly retrieved
Important
Since there is no documentation, I can't confirm that the retrieved data is 100% accurate. There are metrics that are known to be measured by the device, and can be somewhat verified by certain physical activities while wearing the strap, but there are no guarantees
The goal is an application that is 0-24 executed on my homelab, an automatically syncs all the data from the device whenever I'm home. For now I just want to get as many raw data samples out of the device as possible, calculated metrics, such as sleep stage calculations are not planned currently
Hearth rate (verified by comparing night time to daytime and excercises)
Accelerometer (verified by waving slowly, then staying still)
I use devcontainers for development, and for now, I'm only exeuting the app from that same container, to do that:
docker compose up -d: Run the db, and grafana- Build and run the devcontainer in your editor or with a CLI
- Copy the contents of
.env.exampleinto a.envfile, and setWHOOP_MACto your Whoop device's MAC address
- You can probably obtain it by just connecting to it with your phone or computer, and checking the bluetooth device in the host's options menu. Or use a bluetooth scanner app
- Run
go run bin/main.gowithin the container
Important
I only use this on Linux, so there are no guarantees that it will work on a different platform
- Go: Uses a go application to connect to the whoop strap, and perform the necessary BLE operations
- Clickhouse: Stores the retrieved samples
- Grafana: For visualizing the retrieved metrics
- Clickstack: Needed for some OTEL metrics wich help me with experiments
- These repositories by @bWanShiTong helped a lot with getting started:

