Key Takeaways
- 0.5.0 ships a complete outgoing webhook infrastructure with background processing and a management UI. Instead of polling the API, your backend receives a POST request with the full normalized payload whenever new health data arrives.
- Incoming webhook support for Whoop and Suunto lets those providers push data to Open Wearables in near real-time. Enabling it requires switching the sync mode in the admin panel and registering the webhook URL in your developer account on the provider side.
- Sleep calculations are significantly more accurate: UTC grouping bugs, awake time inclusion, and duplication during merge are all fixed.
- HRV-CV now includes a normalized 0-100 score alongside improved storage precision.
- The MCP server has a new get_timeseries tool for granular sample queries, and the seed data generator now produces continuous time-series data with Oura support.
Is Your HealthTech Product Built for Success in Digital Health?
.avif)
Open Wearables 0.5.0 ships a complete webhook infrastructure, bringing near real-time event delivery to the platform for the first time. This release also fixes a set of long-standing issues in sleep and HRV calculations, extends the MCP server with granular time-series queries, and improves the local development experience with a significantly better seed data generator.
Webhooks
Open Wearables has two modes for pulling data from providers. The default is periodic pull: the instance admin configures a polling interval in .env and the platform fetches new data from each provider on that schedule. The alternative, added in 0.5.0, is webhook-based sync: the provider pushes data to Open Wearables as soon as it is available, reducing latency from hours to seconds or minutes.
0.5.0 ships both sides of the webhook story.

Outgoing webhooks
Outgoing webhooks go in the other direction: from Open Wearables to your application. Register one or more HTTPS endpoints in the dashboard and subscribe them to the event types you care about. When matching data arrives, Open Wearables delivers a POST request to your endpoint with the full normalized payload. Processing happens in the background so webhook delivery does not block data ingestion.
The management UI shows delivery history and status for each registered endpoint. When a delivery fails, you can see exactly what was sent, what came back, and retry from the dashboard without touching configuration files.
Outgoing webhooks are powered by Svix and marked as beta. The infrastructure is stable; the beta label reflects that the event taxonomy is still expanding.
Incoming webhooks: Whoop and Suunto
0.5.0 adds incoming webhook support for Whoop and Suunto. Instead of waiting for the next scheduled pull, the provider notifies Open Wearables directly when new data is available.
Enabling this requires two steps: switching the sync mode in the Open Wearables admin panel, and registering the webhook URL in your developer account on the provider side. Once configured, sleep, recovery and workout records from Whoop and Suunto arrive in near real-time rather than on the polling schedule.
Sleep and HRV Precision
Several issues in sleep calculations have been corrected in this release. The combination of UTC-based grouping, awake time being included in duration, and duplication during merge operations was producing incorrect sleep totals in a number of scenarios. All three are fixed.
- Sleep summaries now group by local start date rather than UTC. Sessions that cross midnight in the user local timezone no longer split incorrectly across two days.
- Awake time is excluded from sleep duration. A separate time-in-bed column makes the distinction explicit.
- Sleep score dates align to the wake-up date via direct record linkage.
- Sleep efficiency values for Apple Health and Garmin were being stored incorrectly and have been corrected.
On the heart side, HRV-CV storage precision has been improved and the metric now includes a normalized 0-100 score alongside the raw value. If you are building sleep or recovery features on top of Open Wearables, the data quality in 0.5.0 is materially better than in previous versions.
Developer Experience
MCP server: get_timeseries
The MCP server has a new get_timeseries tool that lets LLMs query granular sample data directly, not just session-level summaries. When building AI features that need to reason about intra-session patterns, for example heart rate variability across the stages of a sleep session, this tool gives the model the raw signal to work with.
Seed data generator
The seed data generator now produces continuous time-series data and includes Oura as a supported provider. A dedicated dev guide has been added to the docs. Setting up a realistic local dataset with multi-day time-series across providers is now a single command.
Dashboard and observability
A few quality-of-life additions: the credentials tab shows the API base URL directly, API key updates are now available from the UI, and per-user data summaries are exposed via a new endpoint and displayed in the dashboard. Structured logging in the backend has been extended with trace_id and user_id, which makes tracing a specific request through logs significantly less painful.
Other Changes
Google Health Connect now correctly handles power, speed, cadence and total calories vocabulary. Oura data extraction has several fixes. A resilience score Celery task has been added to the health scoring pipeline.
This release also removes the unfinished Python SDK and deprecates external_user_id in the OpenAPI schema. If you are using either in your integration, check the full changelog before upgrading.
Community
As of today: 1,549 GitHub stars, 243 forks, 151 open issues, 30 contributors.

Upgrade
git pull origin main
docker-compose down && docker-compose up -d
Full changelog: github.com/the-momentum/open-wearables/releases/tag/0.5.0
Docs: docs.openwearables.io


.png)

