[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95124":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":16,"starSnapshotCount":16,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},95124,"atria","adidshaft\u002Fatria","adidshaft","Free local WHOOP strap companion: iOS app and BLE toolkit for local-only strap usage.",null,"https:\u002F\u002Fgithub.com\u002Fadidshaft\u002Fatria","Swift",132,25,1,19,0,3,43.04,false,"main","2026-08-24 04:01:23","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fatria-logo.png\" alt=\"Atria app icon\" width=\"120\" height=\"120\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Atria\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  Free local strap data, for life.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-0A1A3E\" alt=\"MIT license\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE-APACHE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-0A1A3E\" alt=\"Apache 2.0 license\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FiOS-physical%20device%20required-0A1A3E\" alt=\"Physical iPhone required\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdata-local%20only-2B6BE0\" alt=\"Local-only data\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHRV-personal%20baseline-D97706\" alt=\"HRV personal baseline\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#current-status\">Status\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#quick-start\">Quick Start\u003C\u002Fa>\n  ·\n  \u003Ca href=\"CONTRIBUTING.md\">Contributing\u003C\u002Fa>\n  ·\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fadidshaft\">Contact adidshaft\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  For queries reach out to \u003Ca href=\"https:\u002F\u002Fx.com\u002Fadidshaft\">adidshaft\u003C\u002Fa>.\n\u003C\u002Fp>\n\nAtria is an open-source iOS app and BLE research toolkit for using a compatible WHOOP strap locally, without the official WHOOP cloud, account, subscription, or app. It is designed for people who own unused straps and want honest local metrics: live heart rate, saved RR windows, strain, sleep\u002Fworkout evidence, HealthKit export, and protocol research.\n\nThis project is independent and unaffiliated with WHOOP. It does not bypass paid cloud features. It talks to your own hardware over Bluetooth LE and keeps data on device.\n\n## App Tour\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-today-overview.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-today-overview.png\" alt=\"Atria Today overview\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-today-glance.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-today-glance.png\" alt=\"Atria Today metrics at a glance\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-vitals-live.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-vitals-live.png\" alt=\"Atria live vitals monitor\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-vitals-overview.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-vitals-overview.png\" alt=\"Atria health monitor\" width=\"180\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-hrv-trends.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-hrv-trends.png\" alt=\"Atria HRV trends\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-journal-insights.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-journal-insights.png\" alt=\"Atria journal insights\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-activity-timeline.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-activity-timeline.png\" alt=\"Atria daily activity timeline\" width=\"180\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-workout-setup.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-workout-setup.png\" alt=\"Atria workout setup\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-activity-picker.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-activity-picker.png\" alt=\"Atria activity picker\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-live-workout.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-live-workout.png\" alt=\"Atria live workout\" width=\"180\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-workout-summary.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-workout-summary.png\" alt=\"Atria workout summary\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-breathwork.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-breathwork.png\" alt=\"Atria breathwork\" width=\"180\">\u003C\u002Fa>\n  \u003Ca href=\"assets\u002Fscreenshots\u002Fatria-metric-customization.png\">\u003Cimg src=\"assets\u002Fscreenshots\u002Fatria-metric-customization.png\" alt=\"Atria Today metric customization\" width=\"180\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Current Status\n\nAtria is usable for local backup and honest diagnostics on a physical iPhone. For the current single-strap build, personal baseline is the end-user ready HRV\u002Frecovery state; external-reference validation remains an optional\u002Finternal gate for HealthKit HRV and research claims, not a required user task.\n\n| Gate | Area | Status | What works | What remains |\n|---|---|---:|---|---|\n| A | BLE connection and live collection | Partial | Fresh scan\u002Fconnect, standard `2A37` HR, battery, long-wear logging, reconnect watchdogs | Proprietary realtime stream remains diagnostic; custom RR stream is not reliable enough to be primary |\n| B | HRV | Personal baseline | Clean saved 5-minute RR window exists; RMSSD is shown with an honest personal-baseline\u002Funverified badge; RR correction\u002Fconfidence enforced | Real-device single-strap self-consistency and coverage evidence |\n| C | Recovery | Personal baseline | Recovery appears once local HRV and resting baselines are mature, with a personal-baseline\u002Funverified confidence state | More real-device baseline maturity and long-wear coverage proof |\n| D | Strain and onboarding | Partial | HR-reserve TRIMP, learned resting HR, HRmax\u002Fprofile controls, explainable strain | Workout-intensity calibration from real sustained captures |\n| E | Sleep and workout detection | User-confirmed evidence | Sleep\u002Fworkout candidates, user-confirmed examples, daily rollups, honest blockers | Fully automatic workout detection from cleaner sustained coverage |\n| F | Trends and insights | Local progress | 7\u002F30\u002F90-day trend surfaces and anomaly routing from saved rollups | More real saved history and baseline-backed trend confidence |\n| G | Platform polish | Metric-gated | HealthKit HR\u002Fworkout\u002Fsleep export, backups, notifications, widget\u002Fcomplication plumbing | HealthKit HRV write waits for validated HRV |\n| H | Protocol expansion | Research-ready | Historical\u002Farchive decoder evidence and protocol diagnostics | Additional sensor validation and broader strap-history decoding |\n\n## Principles\n\n- **Local first:** no WHOOP account, no cloud dependency, no subscription requirement.\n- **No fake metrics:** HRV and recovery stay learning until real local RR\u002Fbaseline evidence is sufficient, then appear as personal-baseline\u002Funverified. Validated remains an internal\u002Fexport tier, not a default user promise.\n- **Physical-device verified:** BLE work must be tested on a real iPhone; the Simulator does not count.\n- **Explainable outputs:** metrics expose source, confidence, and blockers instead of hiding uncertainty.\n- **Conservative by default:** when data is missing, gappy, or unvalidated, Atria reports that clearly.\n\n## What Works Today\n\n- Physical iPhone BLE collection from a compatible strap.\n- Live heart rate via standard BLE Heart Rate Measurement (`0x2A37`).\n- Battery readout.\n- Long-wear foreground backup with checkpointing.\n- Saved RR window detection with artifact filtering:\n  - keep RR intervals in `300...2000 ms`\n  - drop intervals with `>20%` beat-to-beat delta\n  - report confidence as kept\u002Fraw RR percentage\n- Local strain from personalized HR-reserve TRIMP.\n- Sleep and workout candidate summaries with explicit blockers.\n- HealthKit export for supported validated\u002Flocal-safe data; HealthKit HRV remains gated on validated SDNN.\n- Widget\u002Fcomplication data plumbing.\n- Protocol research tools for BLE backup and frame analysis.\n\n## What Does Not Work Yet\n\n- Clinically validated HRV. Atria can show local RMSSD as a personal baseline; independent RR\u002FIBI validation is not part of the single-strap user path.\n- Fully validated recovery. Recovery can display as a personal baseline; the validated tier stays gated for export\u002Fresearch uses.\n- Fully automatic workout detection in all gym conditions. Current logic is honest about stream coverage and HR-intensity blockers.\n- Any claim that requires WHOOP cloud data. This project intentionally stays local.\n\n## Quick Start\n\nRequirements:\n\n- macOS with Xcode.\n- A physical iPhone. BLE collection cannot be validated in the Simulator.\n- A compatible strap that is free to advertise over BLE.\n- Apple Developer signing configured for the iOS app target.\n\nBuild and run:\n\n```sh\nopen Atria\u002FAtria.xcodeproj\n```\n\nSelect the Atria app target, choose your physical iPhone, set signing if needed, and run.\n\nFor command-line physical-device verification:\n\n```sh\n.\u002Flive_device_debug.sh --seconds 45 --log logs\u002Flive-device\u002Frun.log --log-gate-status --standard-hr-only --long-wear-mode --leave-running\n```\n\nFast local tooling checks:\n\n```sh\n.\u002Ftest_handoff_local.sh\n```\n\nLong-wear acceptance, when extended physical-device checks are allowed:\n\n```sh\nATRIA_DEVICE_ID=\u003Cphysical-device-id> \\\n  python3 tools\u002Fmonitor_long_wear.py \\\n  --preset overnight \\\n  --label overnight-$(date -u +%Y%m%dT%H%M%SZ)\n```\n\nThat monitor is non-invasive: it uses `live_device_debug.sh --pull-only` to sample\nsessions and the active journal without relaunching Atria. The handoff is not\naccepted until the final summary reports `acceptance_status=pass` and\n`acceptance_blockers=none`, and the handoff audit confirms the summary is the\nfull overnight shape rather than a short custom smoke.\n\nAccessibility\u002Fperformance acceptance also needs measured physical-device\nresults. Capture them with `tools\u002Fcapture_accessibility_visual_evidence.sh` and\n`tools\u002Fcapture_dashboard_scroll_performance.sh`, then create the local manifest\nwith `tools\u002Fprepare_accessibility_performance_evidence.py`.\n\nTo summarize the current handoff evidence without running the device:\n\n```sh\npython3 tools\u002Faudit_handoff_status.py --skip-external-reference\n```\n\nAfter overnight and accessibility\u002Fperformance evidence exists:\n\n```sh\npython3 tools\u002Faudit_handoff_status.py \\\n  --skip-external-reference \\\n  --summary \u003Covernight-summary.json> \\\n  --accessibility-performance \u003Caccessibility-performance-summary.json>\n```\n\n## Repository Layout\n\n| Path | Purpose |\n|---|---|\n| `Atria\u002F` | Native SwiftUI iOS app, widget, HealthKit, BLE, and local metrics code. |\n| `tools\u002F` | Analysis helpers for captures, references, and protocol evidence. |\n| `docs\u002F` | Technical notes, validation plans, and protocol research. |\n| `scan.py`, `probe.py`, `listen.py`, `whoop_codec.py` | macOS BLE exploration and decode tooling. |\n| `live_device_debug.sh` | Physical-iPhone build\u002Finstall\u002Flaunch\u002Flog harness. |\n| `assets\u002F` | Logo and README screenshots. |\n\n- [Research validation corpus](docs\u002Fresearch-validation-corpus.md) — the rules and fixtures used for reproducible sensor validation.\n\n## Contributing\n\nThe fastest useful contributions are:\n\n- Improve BLE reliability without increasing radio traffic.\n- Add tests around RR parsing, correction, and confidence gates.\n- Improve workout detection from real saved sessions.\n- Decode additional historical\u002Fprotocol payloads with evidence.\n- Improve docs for setup and troubleshooting.\n\nBefore opening a PR, read [CONTRIBUTING.md](CONTRIBUTING.md). Do not submit code that estimates HRV from HR-only data or silently promotes low-confidence metrics.\n\n## Safety and Privacy\n\nAtria is not medical software. It is a local research and personal-fitness project. Do not use it for diagnosis, treatment, or safety-critical decisions.\n\nThe app is designed to keep data local. Be careful when sharing logs or evidence files; they may contain timestamps, heart-rate samples, device names, and workout\u002Fsleep patterns.\n\n## License\n\nDual licensed under MIT or Apache-2.0. See [LICENSE](LICENSE) and [LICENSE-APACHE](LICENSE-APACHE).\n","Atria 是一款开源 iOS 应用及 BLE 工具包，用于在本地直连并解析 WHOOP 智能手环数据，无需依赖 WHOOP 官方云服务、账户或订阅。核心功能包括实时心率监测、RR 间期采集、HRV 基线分析、睡眠与运动事件识别、HealthKit 数据导出，以及面向协议研究的低层 BLE 通信支持；所有数据全程离线处理，仅存储于设备端。适用于已拥有 WHOOP 手环但希望摆脱云端绑定、注重隐私保护、开展自主健康数据分析或进行可穿戴设备协议逆向研究的用户。",2,"2026-08-21 02:30:13","trending"]