-
Notifications
You must be signed in to change notification settings - Fork 645
Installation
NOOP is available for macOS (pre-built), Android (pre-built APK), and iOS (build-from-source community port). Everything runs fully offline on your device — nothing leaves your machine.
| Platform | OS Version | Notes |
|---|---|---|
| macOS | 13.0 (Ventura) or newer | Intel or Apple Silicon. Requires Bluetooth. |
| Android | 8.0 (API 26) or newer | Requires Bluetooth LE. Physical device recommended (emulators have no BLE radio). |
| iOS | 16.0 or newer | Build-from-source only — see iOS below. Requires Bluetooth. |
Grab the pre-built NOOP.app from Releases.
NOOP is not notarized by Apple. Notarization requires a paid Apple Developer ID tied to a real identity, which doesn't fit an anonymous, free project. The app is sandboxed and code-signed, the full source is here to inspect, but because it isn't notarized, macOS Gatekeeper will block it on first open. You may see a message saying the app is "damaged" or from an "unverified developer" — that's just the download quarantine flag, not real damage.
To open NOOP, pick one of these once:
- Drag
NOOP.appto your Applications folder. - Run this in Terminal (it removes the quarantine flag):
xattr -dr com.apple.quarantine /Applications/NOOP.app
- Open NOOP normally (e.g., from Spotlight or Applications).
- Try to open NOOP — it'll be blocked by Gatekeeper.
- Open System Settings → Privacy & Security and scroll to the bottom.
- You'll see NOOP with an "Open Anyway" button next to it. Click it.
- (On macOS 14 and earlier, you can also right-click the app and select Open.)
Once you've done this once, the app opens normally from then on.
You can run the app from anywhere, but it's conventional to keep it in /Applications/ for easy access.
Unlike typical installers, NOOP is a self-contained bundle — just download and run. There's no separate "installation" step, installer, or uninstaller. To remove it, drag NOOP.app to the Trash.
NOOP ships two APKs from Releases:
| File | Purpose | Notes |
|---|---|---|
NOOP-full.apk |
The main app. Install this. |
minSdk 26 (Android 8+); works with or without a strap for exploring your data. |
NOOP-demo.apk (optional) |
Demo APK with preloaded sample data. | Installs alongside the full app. Great for exploring the UI without a strap or importing data. Same app ID prefix, so they coexist. |
-
Enable "Install unknown apps" on your device:
- Settings → Apps & notifications → Advanced → Special app permissions → Install unknown apps (or similar, depending on your Android version).
- Grant your web browser or file manager permission to install apps.
-
Download and open the APK (or sideload it via
adb):# On your computer with ADB: adb install NOOP-full.apk -
Open the installed app from your app drawer (search for NOOP).
NOOP asks for Bluetooth permissions on first run (API 31+, i.e. Android 12+). On older versions, Bluetooth is install-time. The app declares no INTERNET permission by design — nothing ever leaves your device.
| Permission | Why |
|---|---|
BLUETOOTH_SCAN |
Scan for your strap over Bluetooth. |
BLUETOOTH_CONNECT |
Connect to and communicate with your strap. |
FOREGROUND_SERVICE |
Keep collecting data while the app is backgrounded. |
iOS does not have a download. There is no iOS app in Releases. iOS has no anonymous app distribution path — both the App Store and TestFlight require a real Apple Developer identity — so shipping an official iOS build would compromise NOOP's anonymity.
Instead, there is an experimental, community-maintained iOS port (PR #42) that you can build yourself in Xcode. It is not officially maintained, and the build instructions live in that PR and in docs/IOS.md.
- Anonymity: No account tied to the app.
- Full control: You build it yourself, inspect the source, and install it on your device.
-
All packages already support iOS: The core logic (
WhoopProtocol,WhoopStore,StrandAnalytics,StrandImport,StrandDesign) all declare.iOS(.v16)and compile unchanged.
-
Clone the repo:
git clone https://github.com/NoopApp/noop.git cd noop -
Check out the iOS PR (PR #42) or follow the detailed steps in
docs/IOS.md. -
Open the Xcode project and build the iOS target for your device.
For full instructions, hardware notes, and how to set up HealthKit two-way sync (read from + write to Apple Health), see docs/IOS.md.
Prefer to build NOOP yourself instead of using the pre-built app? See docs/BUILD.md for:
- macOS: Generating the Xcode project with XcodeGen, building, and the ad-hoc signing process.
- Android: Prerequisites, Gradle setup, and APK assembly.
- iOS: The experimental community port.
Once installed, here's what to expect:
NOOP reads data directly from your strap over Bluetooth Low Energy — no WHOOP account needed. To pair:
-
Live Heart Rate (works immediately) — this rides the standard Bluetooth heart-rate profile and streams even without a full bond.
-
Full bond (for deeper features like recovery, strain, sleep, history offload) — the strap holds an encrypted bond with only one device at a time. If it's bonded to the official WHOOP app on your phone, NOOP can't bond until you free it:
- Close or fully quit the official WHOOP app on your phone (or turn Bluetooth off on that phone).
- Put your strap in pairing mode.
- In NOOP, go to Live → Select your strap type → Scan & Connect.
You can explore NOOP's full UI without a strap:
- macOS & Android: Import a WHOOP CSV export or Apple Health export via Data Sources. Your full history loads in about a minute.
-
Android demo APK: The demo app (
NOOP-demo.apk) comes preloaded with sample data — no import needed, just explore.
- Live heart rate — shows the moment the strap connects.
- Strain & sleep — appear after you've worn the strap and it syncs (the last ~14 days offload automatically).
- Recovery — needs a few nights to learn your personal baseline, then refines each night.
- In a hurry? Import your WHOOP export or Apple Health data and your history fills in immediately.
The app is fully featured on macOS and Android. See Features for the complete breakdown: Today, Live, Sleep, Trends, Workouts, Insights, Compare, Health, the AI Coach (optional, off-device if you bring your own API key), and more.
For detailed information on WHOOP 4.0 vs. 5.0/MG support, pairing troubleshooting, and the bond-handling quirks (especially on 5.0), see Strap Support and Pairing.
Everything runs on your device, offline. The only feature that ever uses the network is the optional AI Coach, and only if you bring your own OpenAI or Anthropic API key — and it sends only a brief text summary of your recent metrics, never raw data or identifiers.
See Privacy and Security for the full privacy story.
- Read the basics: See How NOOP Works to understand what NOOP computes and how.
- Troubleshoot connection issues: Check Strap Support and Pairing.
- Get in touch: Questions or bugs? Email thenoopapp@gmail.com.
- Support the project: Donations are optional but deeply appreciated. See Donations or the in-app Support screen for crypto addresses.
NOOP is an independent, unofficial, non-commercial interoperability project — not affiliated with, endorsed by, or sponsored by WHOOP, Inc. "WHOOP" is a trademark of WHOOP, Inc., used nominatively. Works only with a device you own; not a medical device; every metric is an approximation, not medical advice. · Privacy and Security · Donations · Releases
Get started
Tutorials
- Tracking a Workout
- Recovery, Strain & Readiness
- Automations
- Breathe & Intervals
- Importing History
- AI Coach
- Widget & Notifications
- Reading Your Sleep
- Explore & Compare
Reference
Project