NOOP is an independent, unofficial, local-first app for macOS, Android and iOS. It is not affiliated with, endorsed by, or connected to WHOOP, Inc. "WHOOP" is used nominatively only to identify the hardware the app interoperates with.
NOOP builds on prior community reverse-engineering and interoperability work:
johnmiddleton12/my-whoop— theWhoopProtocolandWhoopStoreSwift packages (vendored underPackages/), the WHOOP 4.0 BLE framing/command/decode work, and the iOS collection logic that NOOP'sWhoopBLE/Collectlayers are adapted from. SeeDISCLAIMER.md(carried over from that project).
b-nnett/goose— the WHOOP 5.0 BLE reverse-engineering (service UUID familyfd4b0001-…, CRC16-Modbus header, CLIENT_HELLO, and the "puffin" packet types) that NOOP'sDeviceFamilyWhoop-5 path andwhoop5_protocol.jsonare ported from.
artyomxx/xiaomi-band-ios-export— documented the Mi Fitness iOS app's on-device SQLite layout (DataBase/<user_id>/de/<user_id>.db, JSONvaluecolumns, the*_dayrollups and thesleeptable'sitems[]hypnogram with state codes). NOOP'sXiaomiBandImporteris re-derived from those findings and verified against a real Mi Band 10 export; no code is copied (the reference tool is AGPL, NOOP is not).- Gadgetbridge (
Freeyourgadget/Gadgetbridge) — referenced only for protocol facts about the live Mi-protobuf BLE stack in the roadmap's research notes. GPLv3; NOOP copies none of its code and has not built the live lane.
NOOP's Oura code is original clean-room work. The local BLE source
(Strand/BLE/OuraLiveSource.swift + android/.../ble/OuraLiveSource.kt) and the JVM/Swift-pure
OuraProtocol package (Packages/OuraProtocol/, android/.../com/noop/oura/) were written from
documented protocol facts only, cited tersely in docs/OURA_PROTOCOL.md. The community
reverse-engineering resources below were consulted as facts-only references (byte layouts,
service/characteristic UUIDs, framing and auth shapes); no RE source code is copied into NOOP.
open_ring: consulted for protocol facts only. Licensed GPL-3.0; NOOP copies none of its code and is not a derivative work of it.open_oura,ringverse,relue: consulted for protocol facts only. These carry no license, so NOOP treats them as reference documentation of observed behaviour only and copies no code from them.
NOOP reads only the ring's own decoded raw signals and its own open event tags, computes NOOP's
own Charge/Rest, and never reads or displays Oura's encrypted readiness or sleep scores. The
documented Oura file-import lane (Packages/StrandImport/Sources/StrandImport/OuraExportParser.swift)
remains available as a fallback.
- GRDB.swift (
groue/GRDB.swift) — SQLite persistence (via Swift Package Manager). - MarkdownUI (
gonzalezreal/swift-markdown-ui) — renders the AI Coach's Markdown replies (via Swift Package Manager).
NOOP contains no WHOOP proprietary code, binaries, firmware, logos, or assets, and performs no DRM circumvention. It operates only with the user's own device and data. NOOP is not a medical device; all metrics (HR, HRV, recovery, strain, sleep, SpO₂, temperature) are approximations and not clinically validated.