Skip to content

Features

NoopApp edited this page Jun 10, 2026 · 1 revision

Features

NOOP is a local-first companion app for WHOOP straps (4.0 and 5.0/MG) that runs fully offline on macOS and Android. Everything — pairing, metrics, automations, notifications — happens on your device. This page walks through every screen and capability.

Important: NOOP is not affiliated with WHOOP, not a medical device, and every metric (HR, HRV, recovery, strain, sleep, SpO₂) is an approximation for personal use only. See Privacy and Security for data ownership details.


Getting started

First-run onboarding

When you launch NOOP for the first time, a calm, paged onboarding wizard walks you through:

  1. Welcome — "all your data, none of the cloud"
  2. What NOOP does — three value slides on the recovery ring, live heart rate, and offline ownership
  3. Bluetooth priming — explains that your connection is local BLE with no server in the middle
  4. Wear & wake — instructions to put the strap on snugly with the sensor on skin, charge it, and stay within ~1 meter
  5. Scan — initiates BLE pairing; a reassurance card explains why the strap won't appear in System Settings (it uses a custom profile)
  6. Bonded celebration — the recovery ring blooms in when pairing succeeds, with battery %
  7. Profile — your age, sex, weight, height (feeds HR zones, calorie estimates, and baselines), plus estimated max HR
  8. Import (optional) — points to Data Sources for bringing in your history; fully skippable
  9. Done — "Your thread starts here"

You can revisit pairing and profile anytime from Settings.

Connection states

The strap reports one of three states throughout the app:

  • Disconnected — no strap found (red dot)
  • Connecting — found and pairing; finishing the secure handshake (amber)
  • Bonded — paired and streaming; haptics and live HR available (green)

Features that need haptics or live realtime data require a bonded connection; the UI disables those buttons until you bond.


Screens overview

NOOP uses a two-column layout: a sidebar of screens on the left and a detail pane on the right. A live connection-status pill anchors the sidebar's bottom. Below is every screen, grouped by whether it needs a connected strap.

Needs bonded strap (live BLE) Works from imported data alone
Live, Breathe, Intervals, Health (live HR), Automations, Notifications (to buzz) Control Center, Explore, Compare, Insights, Sleep, Trends, Workouts, Stress, Apple Health, Data Sources

Home & dashboard

Control Center (Today)

The home dashboard: a tight, gapless grid with:

  • Health alert banner — illness early-warning card appears here when triggered (see #Illness early-warning below)
  • Today's Synthesis — your signature Recovery Ring (with HRV and resting HR inside) beside a plain-English read-out ("Recovery is strong and sleep was consistent") and a recovery state word (Depleted / Low / Steady / Primed / Peak)
  • Key Metrics — tiles for Recovery, Day Strain (of 21), Sleep (hours + efficiency), HRV, Resting HR, Blood Oxygen, Respiratory, Steps, Weight, and Calories. Each shows a 14-day sparkline. WHOOP metrics come from imported data or live strap; Steps, Weight, Calories, and Respiratory pull from Apple Health. Sparse series auto-widen to all history so they never show empty
  • Last Workouts — up to six recent sessions as cards (duration, date, avg HR, kcal)
  • Data Sources — footer showing whether WHOOP and Apple Health are present, with counts

Real-time & biometrics

Live

The hardware-test surface and pairing screen:

  • Smoothed heart rate (BPM) — NOOP shows a spike-filtered median over ~10 seconds, not raw per-beat, so it's stable. Recent R-R intervals (milliseconds) listed beneath
  • Status grid — battery %, last decoded frame type, last decoded event
  • Controls:
    • Scan & Connect / Re-scan — start or restart BLE scanning
    • Buzz strap — fire a test haptic pulse (bonded only)
    • Disconnect — drop the connection
  • BLE log — a scrolling feed of frames, events and actions for confirming the strap is streaming

Opening Live starts the realtime HR stream and requests a fresh battery reading; leaving it stops the realtime stream (the background HR recording continues).

Health Monitor

Live vitals dashboard:

  • Live heart rate hero — a streaming HR sparkline tinted by #HR zones, with zone pill, "% Max", your Max HR, and a streaming/idle state. If the strap reports HR as 0, NOOP derives it from the latest R-R interval and notes "from R-R"
  • Vital Signs — a tile grid from your most recent imported day: Respiratory Rate, Blood O₂, Resting HR, HRV, and Skin Temp, each colored green (in range) or amber (out of range)

Training & movement

Breathe

HRV haptic breathing biofeedback trainer — NOOP's flagship novel feature. Because the strap both measures HRV (from R-R intervals) and buzzes, NOOP can pace your breath with felt cues and watch your HRV respond live.

  • Pick a pace: Relax 4-6 (4 s inhale / 6 s exhale), Coherence 5.5 (equal ~5.5 breaths/min), or Box 4-4
  • Start a session — a soft orb expands on inhale and contracts on exhale, with live BPM in its centre. With a bonded strap you feel one pulse on the inhale, two on the exhale, eyes closed. Without a strap it's visual-only
  • Live readouts: heart rate, rolling HRV (RMSSD) over the last ~30 beats, current pace
  • Coherence estimate — a normalized bar (RMSSD mapped 0–120 ms) with a band word (Building / Settling / Coherent / Deep calm). This is an estimate, not clinical — trends across a session matter more than single numbers

A "Test buzz" button fires a single pulse (bonded only).

Intervals

Silent haptic HIIT interval timer — train hands-free; the strap buzzes every transition so you never look at the screen.

  • Configure Work seconds (5–600), Rest seconds (5–600), Rounds (1–30)
  • Large stage face — WORK / REST / DONE, current round, countdown ring, and total-session progress bar
  • Haptic cues (bonded strap):
    • Triple-buzz into each WORK block
    • Single buzz into REST
    • 3-2-1 tick on the last seconds of each phase
    • Long 5-loop buzz on finish
  • Controls — Start / Pause / Restart and Reset

With no bonded strap it still works as a visual timer, prompting you to bond on Live.


Analysis & insights

Explore (Metric Explorer)

A catalog of every signal. The root is a grouped list by metric category; tap any metric to open its detail dossier:

  • W / M / 3M / 6M / 1Y / ALL range control
  • Hero trend chart with latest value and "as of date"
  • Stat row: Average, Min, Max, Latest, and Δ vs previous equal-length window (tinted by whether the change is "good" for that metric)
  • What correlates — Pearson scan over the visible window (|r| ≥ 0.30, n ≥ 10); top 6 with r-bars

Sparse metrics (weight, body fat) auto-widen the window when the range holds no data, so you always see real values.

Compare

Overlay 2–4 metrics and read how they move together:

  • Pick metrics from a grouped menu; selected metrics show as removable chips
  • W / M / 3M / 6M / 1Y / ALL range control
  • Normalized overlay chart — each line min–max scaled to 0–1 within the window so different units share an axis. Hover shows a crosshair and tooltip with every series' real value on the nearest day; legend lists each series' true min–max range
  • How They Move Together — every selected pair gets a live Pearson r with a plain-English conclusion ("When weight rises, recovery tends to fall — a moderate negative link")

Sparse series auto-widen so they still overlay against dense ones.

Insights

"Interrogate what affects what" in two halves:

  1. Behaviour Effects — splits your logged WHOOP journal answers (Alcohol, Caffeine, Late meal, Meditation, etc.) into days each behaviour was vs was not logged, then compares a chosen outcome (Recovery / HRV / Sleep / RHR) between groups. Each card shows a plain-English sentence, with/without means and group counts, a SIGNIFICANT / EXPLORATORY pill, and effect size (Cohen's d) with a magnitude word. Tint is sign-aware: green if the behaviour moves the outcome the "good" way, red if "bad"

  2. Metric Relationships — a curated set of Pearson correlations: Sleep performance ↔ Recovery, HRV ↔ Recovery, Resting HR ↔ Recovery, and Recovery → next-day recovery (1-day lag). Each is a one-line insight with r, significance pill, r-bar, and strength/direction reading


Sleep & recovery

Sleep

Last night, read in two seconds:

  • Stage breakdown hero — a hypnogram (reconstructed from stage durations) or, if intervals can't be reconstructed, a proportional stacked bar. Footer shows REM / Deep / Light / Awake each as "Xh Ym · NN%", time-in-bed, efficiency, and onset–wake times
  • Night detail — tiles with sparklines and "vs typical" captions: Sleep Performance, Efficiency, Consistency, Hours vs Needed, Restorative (deep + REM share), Respiratory, and Sleep Debt (vs your personal sleep need, floored at 7.5 h)
  • Stages vs typical — Deep / REM / Light as horizontal bars, last-night minutes with a marker at your personal mean
  • Asleep duration — trailing-30-night hours trend with avg / min / max

If no sleep sessions are imported, NOOP points you to Data Sources.

Stress

A single-number Stress Monitor (0–3) with a LOW / MEDIUM / HIGH band and one plain-English line on why:

  • Today's value is your recorded daily stress score if one exists; otherwise NOOP derives it by comparing your resting HR and HRV to your personal 30-day baseline (higher RHR and lower HRV both push stress up), combining z-scores and squashing onto 0–3 with a logistic curve
  • Semicircular gauge with its own blue → mint → amber ramp, band, and explanation tuned to your RHR/HRV shifts
  • Today's markers — the stress value (with sparkline), Resting HR and HRV vs baseline (tinted toward stress or recovery), and "Calm time" (share of recent days in the LOW band)
  • Multi-range trend chart
  • "How this is computed" card with exact method and band legend

Trends

The longitudinal view ("the thread of you over time"):

  • W / M / 3M / 6M / 1Y / ALL range control (default 3M)
  • Hero Recovery chart with avg / peak / low / day-count
  • Daily signals — small multiples for HRV, Resting HR, and Day Strain, each with mean / min / max
  • Recovery year heat-strip — a calendar of recovery scores across the past year (or all history on ALL), with a depleted→peaked legend

Windows are taken relative to your latest recorded day and auto-widen on sparse data.


Activity & workouts

Workouts

The activity log:

  • 7D / 30D / 90D / 1Y / All range control (auto-picks tightest range with ≥2 sessions)
  • Summary tiles — Total Workouts, Total Time, Total Calories, Total Distance, Most Active sport
  • Activity Breakdown — per-sport cards (sessions, time, kcal, avg per session) with sport-specific icons
  • All Sessions — table with date/time, sport, duration, avg HR, kcal, distance, and source badge (WHOOP or Apple Health) per row

Data & import

Data Sources

The import hub. Everything stays on your device.

WHOOP Export (CSV)

Import your full WHOOP history — recovery, strain, sleep, workouts — from a data export (.zip or unzipped folder). Works for WHOOP 4.0, 5.0 and MG. Get one from app.whoop.com → Data Management. NOOP reports records imported and date span, and shows days and sleeps stored.

Apple Health

Import an Apple Health export (export.zip) from Health app → profile → Export All Health Data. NOOP streams and aggregates it locally — years of HR, HRV, sleep, SpO₂, steps, body composition and more. Large exports take a minute or two.

WHOOP Strap (Live BLE)

Shows whether the strap is bonded and streaming. Pairs directly over Bluetooth — no WHOOP app, no cloud. Open Live to pair if it isn't connected.

All imports run on-device; nothing is uploaded. WHOOP data is stored under the my-whoop source and Apple Health under apple-health, so per-source pages and cross-source consensus stay distinct.

Apple Health

Browse and reconcile data imported from your Apple Health export:

  • W / M / 3M / 6M / 1Y / ALL range control
  • Tiles: Steps, Resting HR, HRV, VO₂ Max, Weight, Body Fat, Lean Mass, Asleep avg, Workouts
  • Chart sections — Heart & Vitals (resting HR, HRV, blood oxygen, respiratory rate), Activity & Energy (steps, active energy), Body Composition (weight, body fat, lean mass, BMI), and Sleep (asleep). Each has avg / min / max / point-count footer

Sparse weekly series (weight, body fat) auto-widen to all history so short windows never show empty; a single reading is shown as "Latest reading" rather than an empty chart.


Smart features & automations

Automations

Turn the strap's physical inputs and live biometrics into Mac actions and haptic coaching, all on-device.

Double-tap → Mac action

Double-tap the strap to trigger an action on your Mac. Options:

Action What it does
Nothing No action
Lock the Mac Locks the screen immediately (falls back to "Lock Screen" Shortcut if needed)
Buzz back (confirm) Fires a confirming wrist buzz
Mark a moment Records a timestamped "moment" (with a confirming buzz)
Run a Shortcut… Runs any macOS Shortcut by name

A Test action button runs it without the strap. Recent moments are listed and can be cleared.

Wear & presence

React when the strap comes off or goes on:

  • Lock the Mac when I take the strap off — fires the moment the strap leaves your wrist
  • Run a Shortcut when taken off — presence automation (set a Focus, pause media, set away, etc.)
  • Run a Shortcut when put back on — reverse it when you return

Note: macOS reserves true auto-unlock for Apple Watch, so NOOP can lock, not unlock.

Haptic coaching

  • HR-zone coaching — buzz when you hit your top zone (ease off) and again when you recover, using your max HR from Settings
  • Resting stress nudge (experimental) — a gentle buzz when your HRV drops while your heart rate is calm — a cue to take a paced breath. Conservative, rate-limited to once every 15 minutes, off by default

Smart alarm

Wake to a wrist buzz. This arms the strap's own firmware alarm, so it still fires even if the Mac is asleep or NOOP is closed. Set your wake time — the strap buzzes at exactly that time. NOOP does not currently do light-sleep early wake.

Mac side-effects are sandbox-friendly: screen lock uses macOS's own entry point, and Shortcuts run via the shortcuts:// URL scheme — anything you can build in Shortcuts is reachable.

Notifications

Choose which Mac apps tap your wrist, and how. Everything runs on your Mac.

  • Wrist alerts master switch (opt-in, off by default). Test buzz fires immediately (bonded only). Strap status mirrors connection state
  • Per-app control — NOOP discovers installed, notification-capable apps and groups them: Email (Outlook, Mail), Messaging (WhatsApp, Messenger, Messages, Discord, Slack, Telegram, Signal), Meetings & Calls (Teams, Zoom, FaceTime), and Calendar & Reminders. Each app shows its icon, on/off switch, and buzz pattern picker — Single / Double / Triple / Long — with a per-app test button
  • Behaviour:
    • "Only buzz when worn"
    • Quiet hours — mute wrist alerts overnight (default 22:00–07:00), with from/to time picker

Note: Wrist delivery of macOS notifications is not live yet — it needs a small on-device watcher (coming in an update). Your per-app choices and patterns are saved and apply automatically once delivery ships. Everything stays on your Mac.

Illness early-warning

NOOP watches for the classic early-illness signature on-device. It compares your last ~2 days against a ~28-day baseline (ending 3 days ago) for resting HR, HRV, skin-temperature deviation, and respiration. When two or more anomalies appear — e.g. resting HR up ≥5 bpm, HRV down ≥20%, skin temp up ≥0.6 °C, respiration up — a banner appears on Control Center:

"Your body looks strained — … Consider taking it easy."

On a banner transition from clear to raised, NOOP also posts a system notification (at most once per local day) so the warning reaches you when the window is closed. The toggle lives in Automations → Illness early-warning. Defaults differ by platform on purpose: macOS is opt-in (off by default — enabling it triggers the notification-permission prompt), while Android is opt-out (on by default). Needs at least 14 days of history. On-device and approximate — informational only, not a diagnosis.


Settings & support

Settings

Always available:

  • Profile — age, sex, weight, height, and max heart rate (auto-estimated via Tanaka, or a manual override). These power zones, calorie estimates, and recovery baselines
  • Strap — connection status, battery, and Re-scan / Disconnect controls
  • About — version, the "all your data, none of the cloud" note, a medical disclaimer, and attribution to community reverse-engineering work

Support

Always available. NOOP is free and always will be.

  • Built on — credit to community reverse-engineering projects
  • Donate (optional) — never a paywall; the whole app works without it. Copy-to-clipboard crypto addresses (Bitcoin, Cardano, Ethereum, XRP) for anyone who wants to chip in toward future work (Windows, the iOS port, new features). The app never asks again
  • Reminder — not affiliated with WHOOP; interoperability software for your own device and data; not a medical device

Platform extras

Menu-bar item (macOS)

NOOP lives in the macOS menu bar. The label is a zone-tinted heart dot plus live HR (or "—" when not streaming). Click it to open a compact popover:

  • Recovery ring
  • Live heart rate
  • Battery / resting HR / HRV
  • Quick actions: start/stop live feed, refresh battery, scan/reconnect, or disconnect

Android home-screen widget

On Android, a home-screen widget shows your recovery ring and key metrics at a glance without opening the app.


What you need

Data sources

  • Live strap: requires a bonded WHOOP 4.0 or 5.0/MG strap
  • WHOOP history: import a .zip from app.whoop.com → Data Management once, then it's yours forever
  • Apple Health: import an export.zip from Health app → profile → Export All Health Data
  • Baseline: recovery sharpens after ~5 nights; for full history, import your WHOOP CSV

Connection states recap

The strap always tells you what's happening:

State Meaning Can you…
Disconnected No strap found See imported data; open Live to scan
Connecting Found, pairing Live HR coming soon
Bonded Paired & streaming Use all features: haptics, live HR, alarms, automations

What NOOP doesn't do (yet)

  • Light-sleep early wake — NOOP's alarm is firmware-only at exact wake time
  • Wrist notification delivery — choices are saved; once on-device delivery ships, buzzes come through automatically
  • WHOOP 5.0 deeper metrics — live HR works; recovery/strain/sleep reverse-engineering is ongoing. See Strap Support and Pairing for the current state

Data ownership

  • Offline by design. NOOP talks to your strap directly over Bluetooth — no server in the middle. No account, no sync, no cloud.
  • On-device storage. All history (imported and live-captured) is stored locally in SQLite.
  • Your data is yours. Imports happen once and stay on your device; nothing is uploaded.

For more, see Privacy and Security.


See also

Clone this wiki locally