Skip to content

Installation

NoopApp edited this page Jun 12, 2026 · 4 revisions

Installation

NOOP is available for macOS (pre-built), Android (pre-built APK), and iOS (build-from-source). Everything runs fully offline on your device — nothing leaves your machine.


System Requirements

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.

macOS

Install with Homebrew (recommended)

The quickest path is the Homebrew cask:

brew tap noopapp/noop
brew trust noopapp/noop   # required since Homebrew 6.0 (June 2026) — non-official taps must be trusted
brew install --cask noop

The brew trust step is mandatory as of Homebrew 6.0: Homebrew now refuses to install casks from non-official taps unless you explicitly trust them. Once installed, NOOP lives in /Applications/ and updates with brew upgrade --cask noop.

If you'd rather not use Homebrew, download the app manually below.

Download (manual)

Grab the pre-built NOOP.app from Releases.

First Launch — Gatekeeper & Notarization

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:

Option 1: Terminal (most reliable)

  1. Drag NOOP.app to your Applications folder.
  2. Run this in Terminal (it removes the quarantine flag):
    xattr -dr com.apple.quarantine /Applications/NOOP.app
  3. Open NOOP normally (e.g., from Spotlight or Applications).

Option 2: System Settings (no Terminal needed)

On macOS Sequoia (15.x) the old right-click → Open shortcut was removed — the only no-Terminal route is through System Settings:

  1. Try to open NOOP — it'll be blocked by Gatekeeper. (On Sequoia the dialog only offers Done / Move to Trash; that's expected — just click Done.)
  2. Open System Settings → Privacy & Security and scroll to the bottom (the Security section).
  3. You'll see a line about NOOP being blocked, with an "Open Anyway" button next to it. Click it.
  4. Authenticate with Touch ID or your password if prompted, then confirm Open Anyway in the follow-up dialog.

macOS 14 (Sonoma) and earlier: you can also just right-click (or Control-click) the app → Open, then confirm. Apple removed that right-click bypass in Sequoia, so on 15.x use the System Settings → Open Anyway steps above.

Once you've done this once, the app opens normally from then on.

Install Location

You can run the app from anywhere, but it's conventional to keep it in /Applications/ for easy access.

No Installation Required

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.


Android

Download Pre-built APK

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.

Installation

  1. 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.
  2. Download and open the APK (or sideload it via adb):

    # On your computer with ADB:
    adb install NOOP-full.apk
  3. Open the installed app from your app drawer (search for NOOP).

Permissions

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 (Build from Source)

iOS does not have a download. There is no iOS app in Releases, and there never will be: iOS has no anonymous app distribution path — both the App Store and TestFlight require a real Apple Developer identity — so shipping an iOS binary would compromise NOOP's anonymity. iOS is therefore build-from-source only.

The iOS app is part of main — the NOOPiOS and NOOPiOSWidgets targets are already defined in project.yml, and it shares the same analytics code as macOS, so results match. It's newer and less battle-tested than the macOS and Android apps (live BLE on a real iPhone is still being validated), but it builds and runs today. Build instructions live in docs/IOS.md.

Why build from source?

  • Anonymity: No account tied to the app, no App Store / TestFlight identity.
  • Full control: You build it yourself, inspect the source, and install it on your device.
  • Shared code: The core logic (WhoopProtocol, WhoopStore, StrandAnalytics, StrandImport, StrandDesign) all declare .iOS(.v16) and compile unchanged, so iOS gets the same features as macOS.

Quick summary

  1. Clone the repo:

    git clone https://github.com/NoopApp/noop.git
    cd noop
  2. Generate the Xcode project with XcodeGen, then open it and build the NOOPiOS target for your device — see docs/IOS.md for the detailed steps.

For full instructions, hardware notes, and how to set up HealthKit two-way sync (read from + write to Apple Health), see docs/IOS.md.


Building from Source

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: Generating the project with XcodeGen and building the NOOPiOS target (build-from-source only).

Getting Started: First Launch

Once installed, here's what to expect:

Pairing a WHOOP Strap

NOOP reads data directly from your strap over Bluetooth Low Energy — no WHOOP account needed. To pair:

  1. Live Heart Rate (works immediately) — this rides the standard Bluetooth heart-rate profile and streams even without a full bond.

  2. 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.

Without a Strap

You can explore NOOP's full UI without a strap:

  • macOS, Android & iOS: 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.

What Fills In When

  • 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, Android, and iOS. See Features for the complete breakdown: Today, Live, Sleep, Trends, Workouts, Insights, Compare, Health, the AI Coach (optional, BYOK — Anthropic, OpenAI, or a local/self-hosted LLM that keeps everything on-device), 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.


Offline

Everything runs on your device, offline. The only feature that can ever use the network is the optional AI Coach, and only if you bring your own API key for Anthropic, OpenAI, or a local/self-hosted OpenAI-compatible LLM (e.g. Ollama / LM Studio). With a local endpoint, nothing leaves the device at all; with a cloud key, 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.


Next Steps

Clone this wiki locally