Edge
OpenStrap, from Altmaker by RipeStore
App which allows you to use your health devices beyond subscriptions. Supports Workout Tracking, Nutrition Tracking, Wellness Excercise, Sleep, Recovery, Strain
- Version
- 0.10.0
- Released
- Sep 25, 2026
- Size
- 18.5 MB
- Needs iOS
- 15.0 or later
- Category
- Lifestyle
- Bundle ID
- com.
example. openstrapEdge
Screenshots





What's new in 0.10.0
What's new:
Attempt at many-device support — a bunch of new bands/watches/rings can pair now, sync depth varies by device.
WHOOP MG heart screener — capture + history for the ECG reading, hook into AI coach analysis.
Alarms that actually work — weekly schedule, safety notification if it doesn't latch, smart wake window.
Misc bug fixes and other small stuff.
• readme: stop framing the whole app as WHOOP-only.
• i18n(es): translate the 29 strings missing from app_es.arb.
• fix ASK picker crash + iOS 17 launch crash.
• fix iOS 17 launch crash from AccessorySetupKit.
• feat(alarm): weekly schedule + latch-failure & 7pm no-alarm safety notifications.
• Any-wearable multi-device support.
• colmi ring: pairs-only support.
• fossil/skagen q hybrid: pair and bank raw bytes, pairs-only.
• pinetime: pairs and banks raw data.
• jyou band: pairs and banks raw data, decodes nothing yet.
• hplus generic hr band, pairs-only.
• lefun ring/band: pairs and connects, reports nothing yet.
• dt78/dt92/dt66: pairs-only support.
• ringconn: pair + drain, raw archive only.
• wearfit band support (howear hk8 ultra / hk8 pro max).
• mykronoz zetime: pairs and connects, battery only.
• o2ring: pair, connect, bank raw bytes.
• dafit/moyoung support: pairs and banks raw bytes, no decode.
• tlw64/no1 f1: pairs and banks raw data, decodes nothing yet.
• watch9: pairs and banks raw data, decodes nothing yet.
• xwatch: pairs and banks raw data, decodes nothing yet.
• smaq2oss: pairs and banks raw data, decodes nothing yet.
• id115: pairs and banks raw data, decodes nothing yet.
• makibeshr3: pairs and banks raw data, decodes nothing yet.
• pebble 2/2se: pairs-only support.
• mi band 2/3/4: pairs-only support.
• withings steel hr: pairs-only support.
• bangle.js: pairs-only support.
• ultrahuman ring air: pair + drain, raw archive only.
• garmin sports watch pairing.
• add coros sports watch support.
• add r11m/r10m smart ring support.
• polar pmd: pair + stream ppi from a verity sense or oh1.
• feat: show selected chart slot with a vertical cursor.
• fix: hold the beat axis non-decreasing (sleep staging threw on 6 of 8 days), bump kAlgoVersion to 88; quiesce ingest during a data reset.
• Improve AI coach reliability: configurable timeouts, Keychain recovery, and in-flight request survival.
• Live HR/IMU stream ownership reconciler (#287).
• Fix movement-floor DST bug and coach API-key reuse across endpoint changes.
• fix gen4-default ratchet count (drifted from retired sites).
• show band battery on home.
• gpx export for recorded routes (manual strava upload).
• make interval work/rest/rounds configurable.
• steps: phone confirmed-zero hours veto wrist false positives.
• add day switcher to home screen.
• add altstore source for ios sideload update checks.
• hr zone crossing buzz in live workouts.
• add lab-results csv import.
• respect imperial units for strength weight.
• fix oura link test's real-time flake under full-suite CI.
• smart wake window.
• gate the live event write behind resetgate.
• fix strain/calories/zone minutes resetting to 0 after a hard-kill relaunch mid-workout.
• sleep detail: link to naps, fix stale comment.
• add siri/shortcuts intent to enable tomorrow's alarm.
• let you set your own hr zones (#304).
• add an honest vo2max estimate.
• fix cold-launch race in the alarm siri intent (#392 follow-up).
• fix manual hr zone crash (double.infinity.round).
• gate _onEngineState behind resetgate too.
• fix Typed.of accepting Infinity/NaN as valid numbers.
• fix fabricated resting-hr note on manual zones.
• fix manual hr zone floor check.
• fix skin_temp_z missing quantum floor.
• smart wake: cover the armed alarm's own window, not just habitual wake.
• mirror the alarm-confirm self-heal in headless sync.
• fix exportWorkout/exportAll workout export race.
• fix: signal priority resolver drops devices paired after custom ranking.
• high freq wake window: fix DST-unsafe next-day arithmetic.
• fix: NaN lat/lng slip past healthkit route import guard.
• ios: stop re-arming forgotten bands on restore.
• coach: validate date in log_journal/log_period too.
• fix: whoop import stops clobbering same-day csv files.
• fix: workouts list distance ignores imperial unit setting.
• fix: theme toggle never synced to watch.
• fix: atomic db-backed slot allocation for notification ids.
• fix: widget push race can interleave two snapshots.
• fix: guard against NaN/out-of-range lat-lng in gpx export.
• fix: smart wake silently no-ops on null accel rows.
• coach: close recursive-CTE DoS in the SQL guard.
• fix: live workout invisible to overlap check, could double-book.
• fix: cycle-day math off by one across DST.
• fix: stopWorkout leaves stale workout suggestions behind.
• fix cloud importer overcounting already-measured days.
• fix controller leak in add-lab-result dialog.
• coach: reject calendar-invalid dates in day.
• stress index: gap-aware nnTimesMs wiring, kAlgoVersion 92.
• fix: metric detail preferred device caption misses coverage-only devices.
• gps: route zoneForHr through the shared HeartRateZoneSet.
• fix: workout import reports deleted workouts as brought in.
• repin analytics for hrv-freq welch gap guard, kAlgoVersion 92->93.
• ai reminders: cap/refuse evening and morning slots inside quiet hours.
• bump kAlgoVersion 93, repin analytics for overreaching rhr guard.
• fix telemetry flush dropping unsent records on outbox trim race.
• fix notif id mirror never pruned on healthy DB path.
• fix: oura_link_test flakes under CI load, use deterministic wait instead of wall-clock margin.
• fix torch state desync on failed hardware toggle.
• fix: keyless local endpoints were sending Bearer null.
• fix: route tracker can silently drop gps tail on stop.
• fix live activity restart race.
• crossday: guard glassbox SWC gate against quantized rhr/temp.
• fix medSlotInstant DST drift.
• fix: accel1Hz/ppgRedIr/skinTempRaw priority never applied at derive time.
• fix: BLE notify exceptions, cycle_screen mounted guards, O(n^2) baseline scan.
• Add a Home entry point to the AI briefing screen.
• WHOOP MG Heart Screener: ECG capture, store, history and coach reading.
• ios: wake on band prompts instead of holding a 1 Hz HR stream in background.
• repin analytics for temp_circadian zero-variance fix, kAlgoVersion 96->97.
New Contributors:
• @Nico-Ferrero made their first contribution.
• @RiffRaff4469 made their first contribution.
• @highdeftant made their first contribution.
• @gentbot made their first contribution.
• @OsamaMahmood made their first contribution.
• readme: stop framing the whole app as WHOOP-only.
• i18n(es): translate the 29 strings missing from app_es.arb.
• fix ASK picker crash + iOS 17 launch crash.
• fix iOS 17 launch crash from AccessorySetupKit.
• feat(alarm): weekly schedule + latch-failure & 7pm no-alarm safety notifications.
• Any-wearable multi-device support.
• colmi ring: pairs-only support.
• fossil/skagen q hybrid: pair and bank raw bytes, pairs-only.
• pinetime: pairs and banks raw data.
• jyou band: pairs and banks raw data, decodes nothing yet.
• hplus generic hr band, pairs-only.
• lefun ring/band: pairs and connects, reports nothing yet.
• dt78/dt92/dt66: pairs-only support.
• ringconn: pair + drain, raw archive only.
• wearfit band support (howear hk8 ultra / hk8 pro max).
• mykronoz zetime: pairs and connects, battery only.
• o2ring: pair, connect, bank raw bytes.
• dafit/moyoung support: pairs and banks raw bytes, no decode.
• tlw64/no1 f1: pairs and banks raw data, decodes nothing yet.
• watch9: pairs and banks raw data, decodes nothing yet.
• xwatch: pairs and banks raw data, decodes nothing yet.
• smaq2oss: pairs and banks raw data, decodes nothing yet.
• id115: pairs and banks raw data, decodes nothing yet.
• makibeshr3: pairs and banks raw data, decodes nothing yet.
• pebble 2/2se: pairs-only support.
• mi band 2/3/4: pairs-only support.
• withings steel hr: pairs-only support.
• bangle.js: pairs-only support.
• ultrahuman ring air: pair + drain, raw archive only.
• garmin sports watch pairing.
• add coros sports watch support.
• add r11m/r10m smart ring support.
• polar pmd: pair + stream ppi from a verity sense or oh1.
• feat: show selected chart slot with a vertical cursor.
• fix: hold the beat axis non-decreasing (sleep staging threw on 6 of 8 days), bump kAlgoVersion to 88; quiesce ingest during a data reset.
• Improve AI coach reliability: configurable timeouts, Keychain recovery, and in-flight request survival.
• Live HR/IMU stream ownership reconciler (#287).
• Fix movement-floor DST bug and coach API-key reuse across endpoint changes.
• fix gen4-default ratchet count (drifted from retired sites).
• show band battery on home.
• gpx export for recorded routes (manual strava upload).
• make interval work/rest/rounds configurable.
• steps: phone confirmed-zero hours veto wrist false positives.
• add day switcher to home screen.
• add altstore source for ios sideload update checks.
• hr zone crossing buzz in live workouts.
• add lab-results csv import.
• respect imperial units for strength weight.
• fix oura link test's real-time flake under full-suite CI.
• smart wake window.
• gate the live event write behind resetgate.
• fix strain/calories/zone minutes resetting to 0 after a hard-kill relaunch mid-workout.
• sleep detail: link to naps, fix stale comment.
• add siri/shortcuts intent to enable tomorrow's alarm.
• let you set your own hr zones (#304).
• add an honest vo2max estimate.
• fix cold-launch race in the alarm siri intent (#392 follow-up).
• fix manual hr zone crash (double.infinity.round).
• gate _onEngineState behind resetgate too.
• fix Typed.of accepting Infinity/NaN as valid numbers.
• fix fabricated resting-hr note on manual zones.
• fix manual hr zone floor check.
• fix skin_temp_z missing quantum floor.
• smart wake: cover the armed alarm's own window, not just habitual wake.
• mirror the alarm-confirm self-heal in headless sync.
• fix exportWorkout/exportAll workout export race.
• fix: signal priority resolver drops devices paired after custom ranking.
• high freq wake window: fix DST-unsafe next-day arithmetic.
• fix: NaN lat/lng slip past healthkit route import guard.
• ios: stop re-arming forgotten bands on restore.
• coach: validate date in log_journal/log_period too.
• fix: whoop import stops clobbering same-day csv files.
• fix: workouts list distance ignores imperial unit setting.
• fix: theme toggle never synced to watch.
• fix: atomic db-backed slot allocation for notification ids.
• fix: widget push race can interleave two snapshots.
• fix: guard against NaN/out-of-range lat-lng in gpx export.
• fix: smart wake silently no-ops on null accel rows.
• coach: close recursive-CTE DoS in the SQL guard.
• fix: live workout invisible to overlap check, could double-book.
• fix: cycle-day math off by one across DST.
• fix: stopWorkout leaves stale workout suggestions behind.
• fix cloud importer overcounting already-measured days.
• fix controller leak in add-lab-result dialog.
• coach: reject calendar-invalid dates in day.
• stress index: gap-aware nnTimesMs wiring, kAlgoVersion 92.
• fix: metric detail preferred device caption misses coverage-only devices.
• gps: route zoneForHr through the shared HeartRateZoneSet.
• fix: workout import reports deleted workouts as brought in.
• repin analytics for hrv-freq welch gap guard, kAlgoVersion 92->93.
• ai reminders: cap/refuse evening and morning slots inside quiet hours.
• bump kAlgoVersion 93, repin analytics for overreaching rhr guard.
• fix telemetry flush dropping unsent records on outbox trim race.
• fix notif id mirror never pruned on healthy DB path.
• fix: oura_link_test flakes under CI load, use deterministic wait instead of wall-clock margin.
• fix torch state desync on failed hardware toggle.
• fix: keyless local endpoints were sending Bearer null.
• fix: route tracker can silently drop gps tail on stop.
• fix live activity restart race.
• crossday: guard glassbox SWC gate against quantized rhr/temp.
• fix medSlotInstant DST drift.
• fix: accel1Hz/ppgRedIr/skinTempRaw priority never applied at derive time.
• fix: BLE notify exceptions, cycle_screen mounted guards, O(n^2) baseline scan.
• Add a Home entry point to the AI briefing screen.
• WHOOP MG Heart Screener: ECG capture, store, history and coach reading.
• ios: wake on band prompts instead of holding a 1 Hz HR stream in background.
• repin analytics for temp_circadian zero-variance fix, kAlgoVersion 96->97.
New Contributors:
• @Nico-Ferrero made their first contribution.
• @RiffRaff4469 made their first contribution.
• @highdeftant made their first contribution.
• @gentbot made their first contribution.
• @OsamaMahmood made their first contribution.
About
Openstrap Edge:
An app that makes your wearable useful without its subscription. Pairs over Bluetooth, computes everything on your phone, iOS and Android. WHOOP 4/5/MG get full support today; see Supports for what else it talks to.
Not affiliated with WHOOP. Not a clone of their app or their scores — see below.
As featured in:
"The goal of the so-called OpenStrap project is not to re-create the WHOOP app. Rather, the algorithms and processing methods are developed from scratch, based on public research… The health data collected from the watch never leaves the phone.".
— Hackaday, 15 July 2026.