Case study

NOOP: an offline WHOOP strap client built from Bluetooth protocol research

Replaces the WHOOP companion app with offline macOS, Android and iOS clients that pair with WHOOP 4.0 and 5.0/MG straps over Bluetooth, decode their vendor GATT frames, offload the strap’s history into local SQLite and compute recovery, strain, HRV and sleep on the device. A versioned protocol reference documents framing, checksums, commands and sensor records per strap family, building on the community my-whoop and goose projects. WHOOP 4.0 is the supported path; deeper WHOOP 5.0/MG metrics and Oura ring support remain experimental.

Requirements & limits

  • README calls NOOP an independent, experimental interoperability project; the reviewed main snapshot follows release v12.0.0 (2026-10-04). WHOOP 4.0 is the tested path; on WHOOP 5.0/MG live heart rate is confirmed while recovery, strain and sleep inputs are still being mapped, and README lists SpO₂ and several overnight inputs as unavailable or incomplete. Scores come from published methods and are approximations, not reproductions of WHOOP’s models; the project says it is not a medical device.
  • Live use needs the user’s own WHOOP strap; a 5.0/MG strap holds one encrypted bond at a time, so pairing can take it from the official app. Without a strap, the app can import a WHOOP CSV export or an Apple Health export.xml. README states that NOOP contains no WHOOP proprietary code, firmware, logos or assets; ATTRIBUTION.md says some protocol facts were re-derived from decompiles or static analysis of the vendor’s apps and ship as unvalidated candidates, while implementation and strings are not copied.
  • docs/BUILD.md lists macOS 13+, Xcode 26.x (Swift 6.3) and XcodeGen 2.45+ for the macOS reference app; the Swift packages build with swift build alone, and BUILD.md documents Linux test runs for four of them outside CI. The Android app (Jetpack Compose, Android 8+) builds with Gradle and JDK 17 in CI, and iOS builds from source or installs as a sideloaded, unsigned .ipa. The release check is on by default and sends no health data; optional AI Coach and export features send data only when the user configures them.
  • CI builds and tests each Swift package, including the WhoopProtocol framing and decoder tests, and builds the Android debug APK with its unit tests. Protocol contracts name the firmware they were observed on (WHOOP 4 41.17.6.0, WHOOP 5/MG baseline 50.42.1.0), and PROTOCOL.md says its constructed parsing examples are not device tests. docs/VALIDATION_PROTOCOL.md sets rules for claiming scoring improvements; this collection did not build the apps or run them against a strap.
  • LICENSE applies PolyForm Noncommercial 1.0.0 to NOOP’s own code and documentation, which GitHub reports as NOASSERTION; bundled GRDB.swift and ZIPFoundation are MIT. README names github.com/ryanbr/noop as the canonical home, although GitHub lists it as a fork of muftiarfan/noop. NOOP states it is unaffiliated with WHOOP or Oura; AGENTS.md addresses human and AI-agent contributors and the optional coach uses a user-supplied model, but the reviewed sources establish no REA use.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
App · Protocol

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · ryanbr/noop · Revision 8e4b0c1
  2. docs/PROTOCOL.md GitHub · ryanbr/noop · Revision 8e4b0c1
  3. docs/BLE_REVERSE_ENGINEERING.md GitHub · ryanbr/noop · Revision 8e4b0c1
  4. ATTRIBUTION.md GitHub · ryanbr/noop · Revision 8e4b0c1
  5. docs/BUILD.md GitHub · ryanbr/noop · Revision 8e4b0c1
  6. docs/VALIDATION_PROTOCOL.md GitHub · ryanbr/noop · Revision 8e4b0c1
  7. .github/workflows/swift-packages.yml GitHub · ryanbr/noop · Revision 8e4b0c1
  8. .github/workflows/android.yml GitHub · ryanbr/noop · Revision 8e4b0c1
  9. AGENTS.md GitHub · ryanbr/noop · Revision 8e4b0c1
  10. LICENSE GitHub · ryanbr/noop · Revision 8e4b0c1
  11. https://github.com/ryanbr/noop/releases/tag/v12.0.0

More in Apps

All 88 entries in AppsApps case studies (38)