Skip to content

Features

NoopApp edited this page Jun 12, 2026 · 5 revisions

Features

NOOP is a local-first companion app for WHOOP straps (4.0 and 5.0/MG) that runs fully offline on macOS, Android, and iOS. Everything — pairing, metrics, mood, automations, notifications — happens on your device. iOS is sideload-only (an .ipa you install with AltStore/SideStore — there's no App Store or TestFlight build, to stay anonymous) and shares the same number-crunching code as macOS, so results match. This page is the complete feature inventory: every screen and capability.

Important: NOOP is an independent, unofficial project — not affiliated with, endorsed by, or sponsored by WHOOP, Inc. It reads data from a strap you already own, over your own Bluetooth, and stores it only on your device. It is not a medical device, and every metric (HR, HRV, Charge, Effort, Rest, SpO₂, mood) 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 — value slides on the Charge 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 Charge 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"

A first-run terms acknowledgment gate (a short, version-aware clickwrap) confirms you understand NOOP is unofficial and not a medical device before you begin. 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 (Android uses a bottom-nav menu). 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 HR, Breathe, Intervals, Health Monitor (live HR), Automations, Notifications (to buzz) Today / Control Center, Intelligence, Explore, Compare, Insights, Mind, Sleep, Trends, Workouts, Stress, Apple Health, Nutrition, Data Sources

Home & dashboard

Today / Control Center

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 Charge Ring (with HRV and resting HR inside) beside a plain-English read-out ("Charge is strong and sleep was consistent") and a charge state word (Depleted / Low / Steady / Primed / Peak). This is the energy you wake with — you spend it through the day as Effort and rebuild it overnight with Rest
  • Strap battery — a battery tile showing your strap's current charge %, so you can see at a glance when it needs topping up
  • Key Metrics — tiles for Charge, Effort (0–100), Rest (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 (or, on WHOOP 5/MG, steps can be approximated from the strap's motion). Sparse series auto-widen to all history so they never show empty
  • HR trend — a recent heart-rate trend so today's cardiac picture is visible at a glance
  • Last Workouts — up to six recent sessions as cards (duration, date, avg HR, kcal)
  • Data Sources — footer showing whether WHOOP, Apple Health, and Nutrition are present, with counts

Intelligence

A digest that pulls the day's most useful read-outs into one place — your headline Charge/Effort/Rest state with the plain-English synthesis, the standout signals, and the things worth noticing (a notable correlation, a streak, a baseline shift). It's the "what should I know right now" surface, distinct from the longitudinal Trends view and the interactive Explore/Compare tools.


Real-time & biometrics

Live HR

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 HR starts the realtime stream and requests a fresh battery reading; leaving it stops the realtime stream (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₂ (SpO₂), 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)
  • Pre/post outcome — Breathe captures a quick before/after read so you can see whether the session actually moved your HRV. After you finish, NOOP shows the change in plain language (e.g. "HRV up from 48 → 61 ms — calmer than when you started") and logs the outcome so guided breathing earns a place in your correlations

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


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, Charge tends to fall — a moderate negative link")

Sparse series auto-widen so they still overlay against dense ones. Because mood and nutrition import into the same metric model, you can correlate them here too (e.g. mood vs Charge, protein vs next-day HRV).

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 (Charge / HRV / Rest / 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: Rest ↔ Charge, HRV ↔ Charge, Resting HR ↔ Charge, and Charge → next-day Charge (1-day lag). Each is a one-line insight with r, significance pill, r-bar, and strength/direction reading

Mind (daily mood check-in)

A quick, non-clinical daily mood check-in and the correlations it unlocks. NOOP is about the whole picture, not just the cardiovascular one — Mind adds the subjective layer.

  • Daily check-in — log how you feel in a few taps (a mood rating, optionally a short note). It takes seconds, and it's entirely optional
  • Mood trend — your mood over time as its own series, with the usual range control
  • Mood correlations — because mood lands in the same metric model as everything else, NOOP surfaces how it tracks with Charge, Rest, Effort, and HRV ("days you rate your mood higher tend to follow better sleep")

Mind is for self-reflection and personal pattern-spotting only. It is not a mental-health diagnosis or treatment tool, and NOOP is not a medical device.


Sleep & recovery

Sleep

Last night, read in two seconds — and a way to browse every night before it:

  • 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
  • Browse past nights — step back through your history night by night; pick any previous night to see its full hypnogram and breakdown, not just last night's
  • Night detail — tiles with sparklines and "vs typical" captions: Rest (sleep-quality score), 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 Charge chart with avg / peak / low / day-count
  • Daily signals — small multiples for HRV, Resting HR, and Effort, each with mean / min / max
  • Charge year heat-strip — a calendar of Charge 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
  • Manual workouts — start and stop a workout by hand (recording its start–end times) when you want a session logged without an automatic detection or import

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. On iOS, there's also a HealthKit-free path: see #Export for Shortcuts (iOS) below.

Nutrition (CSV import)

Bring your food log into NOOP from a Cronometer or MacroFactor CSV export. NOOP reads calories and macros (protein / carbs / fat) per day, stores them locally alongside everything else, and surfaces them as their own metrics — so nutrition shows up in Explore and can be correlated in Compare (e.g. protein vs next-day Charge, calories vs Rest). Nothing is uploaded; the CSV is parsed entirely on-device. See Importing Nutrition.

WHOOP Strap (Live BLE)

Shows whether the strap is bonded and streaming. Pairs directly over Bluetooth — no WHOOP app, no cloud. Open Live HR 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.

Export for Shortcuts (iOS)

A HealthKit-free way to get Apple Health data into NOOP on iPhone. Instead of NOOP requesting HealthKit permissions (which a sideloaded build can't reliably claim), you run an Apple Shortcut that reads the metrics you choose and hands them to NOOP as a file it imports on-device. It keeps the strict no-cloud, no-account posture while still letting iOS users light up steps, weight, sleep, and the rest of their Health data. See Apple Health via Shortcuts (iOS).


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 Today / 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.

AI Coach

Optional, opt-in conversational coaching over your own data. It is off by default and consent-gated — nothing is sent anywhere until you turn it on and confirm.

  • Bring your own key (BYOK) — you provide the API key and endpoint; there's no NOOP-hosted service in the middle
  • Your choice of provider — works with Anthropic (Claude), OpenAI (GPT), Google Gemini, or a local/self-hosted OpenAI-compatible endpoint (e.g. Ollama or LM Studio), so you can keep everything on your own machine if you prefer
  • Your key, your endpoint, your call — NOOP sends only a short text summary of recent metrics plus your question (never raw streams or identifiers). Nothing leaves the device without your consent, and you can turn it off at any time

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 Charge baselines
  • Strap — connection status, battery, and Re-scan / Disconnect controls
  • Step calibration — a setting to tune step counting to you (your stride / how the strap's motion maps to steps), so step figures line up better with what you actually walk
  • Units — switch between metric and imperial for weight, height, distance, and temperature
  • About — version, the "all your data, none of the cloud" note, a medical disclaimer, and attribution to the community projects NOOP is built on

Support

Always available. NOOP is free and always will be.

  • Built on — credit to the community projects NOOP stands on
  • Donate (optional) — never a paywall; the whole app works without it. Copy-to-clipboard, scan-to-donate crypto addresses (Bitcoin, Ethereum, Cardano, XRP) for anyone who wants to chip in toward future work (Windows support and new features). The app never asks again. See Donations and docs/DONATIONS.md
  • 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:

  • Charge 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 Charge ring and key metrics at a glance without opening the app. Android also has a Sync-now button to trigger a history offload on demand.


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 (or, on iOS, use Export for Shortcuts)
  • Nutrition: import a Cronometer or MacroFactor CSV
  • Baseline: Charge 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 HR 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/MG deeper metrics — live HR works and Effort computes from HR (just slowly, since 5.0/MG live HR is sparse, so scores build gradually and can sit at 0 without sustained wear); Charge and Rest scores for 5.0/MG are still being worked on. See Strap Support and Pairing and the Roadmap 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), your mood check-ins, and your nutrition log are 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