Key Takeaways
- Garmin menstrual cycle tracking is now supported. The Women's Health tab appears only when related data has been synced.
- A FIT file parser extracts training segments, HR zones, and power zones automatically. Running dynamics and air temperature require
INGEST_WORKOUT_SAMPLES=true. - Second-by-second workout sample ingestion is opt-in via
INGEST_WORKOUT_SAMPLES=true. Adds approximately 170 MB per user per month. - Oura HRV is now stored as RMSSD instead of SDNN. Existing values are automatically migrated on startup.
- Multi-account sync allows the same device to sync across multiple Open Wearables accounts for testing. No configuration required.
Is Your HealthTech Product Built for Success in Digital Health?
.avif)
Women's Health: Garmin menstrual cycle tracking
Open Wearables 0.6.0 is out. This release adds menstrual cycle tracking for Garmin, a FIT file parser with second-by-second workout sample ingestion, a batch of Oura reliability fixes, multi-account sync support, and Redis TLS. 30+ pull requests, three new contributors.

Open Wearables now supports menstrual cycle tracking for Garmin wearables. The new Women's Health tab surfaces this data in the admin panel and is only visible when the user has actually synced related data. If the user hasn't, the tab doesn't appear.
This matters because women's health data has historically been an afterthought in health platforms. Menstrual cycle data affects readiness, HRV, sleep quality, and training capacity in ways that make it load-bearing for any serious health intelligence product. Having it in the unified data model means it can be correlated with other physiological signals rather than living in a separate silo.
The implementation follows the same pattern as other Garmin integrations: data arrives via webhook, gets normalized, and is available through the API.
FIT file parser and high-granularity workout data
This is the most technically significant addition in 0.6.0.
FIT files are the native format Garmin uses to record workouts. They contain data at a resolution that summary endpoints don't expose: second-by-second measurements for heart rate, speed, cadence, power, GPS coordinates, and elevation. For applications that need to reason over the shape of a workout rather than just its aggregate output, this is the data layer that makes it possible.
What the parser extracts from FIT files (always available):
- Training segments: laps, swim lengths, and other structured breakdowns of a workout
- Time in heart rate zones
- Time in power zones
Available with INGEST_WORKOUT_SAMPLES=true:
- Air temperature
- Running dynamics: vertical oscillation, vertical ratio, stride length, ground contact time, and stance time balance
Second-by-second sample ingestion is available as an opt-in feature. Set INGEST_WORKOUT_SAMPLES=true to enable it. Disabled by default: our benchmarks show approximately 170 MB of additional database usage per user per month. Enable it when you need it; leave it off when you don't.
FIT files themselves can optionally be archived to S3 by setting STORE_FIT_FILES=true. Useful for debugging, auditing, and reprocessing scenarios. Adds a few to a dozen MB per user per month depending on workout frequency.
The FIT file parser is provider-agnostic by design. It's built to eventually support other devices that use the FIT format, not just Garmin.
Oura bug fixes
Several bugs in the Oura integration have been fixed in this release.
Time zone offset is now saved correctly to the database, which was causing silent data quality issues for users outside UTC. Sleep summary metrics are now correctly captured. The polling logic for current day summaries was dropping data under certain conditions; this has been fixed.
The most significant change: HRV is now stored as RMSSD instead of SDNN. RMSSD is the standard for overnight HRV measurement. SDNN is a different metric that's appropriate for different contexts. These aren't interchangeable, and the previous implementation was mapping one to the other. Existing SDNN values in the database will be automatically migrated to RMSSD when the application starts after upgrading.
If you were using Oura HRV data and building logic on top of it, review this change before upgrading. The migration runs automatically but the values will differ.
Multi-account sync
A new feature for teams who need to synchronise the same device with several Open Wearables accounts for testing purposes. 0.6.0 adds dedicated support for this.

No configuration required. Pair the relevant accounts with your wearable account. A badge will appear in each account indicating which accounts are linked and the current sync status for each. Instead of attempting to sync the same data from the provider multiple times (which Garmin's backfill restrictions make practically impossible), the data is synced once from the source and then copied to the linked accounts.
More detail in the multi-account sync documentation at openwearables.io/docs/architecture/multi-account-sync.
Other changes worth noting
Redis TLS support. Set REDIS_SSL=true to enable rediss:// connections. Required for managed Redis instances that enforce TLS.
Sleep start time display. Sleep sessions that begin before midnight are now prefixed with the previous day's name in the admin panel. The display now reflects the user's time zone and makes the day boundary explicit.
Webhook management endpoints. A set of new endpoints for programmatic webhook management has been added, making it easier to configure integrations without going through the admin panel.
Suunto resting heart rate. Resting heart rate is now emitted from sleep HRMin data, a field that was previously unused.
Polar sport types. Indoor cycling, jump rope, and kickboxing/martial arts now map to discrete identifiers rather than a generic fallback.
Version visibility. The current Open Wearables version is now shown in the admin panel under the logout button.
Upgrading
Standard Docker Compose update. There are database migrations that run automatically on startup, including the Oura HRV SDNN-to-RMSSD migration. Review the migration before upgrading if you have downstream logic that depends on Oura HRV values.
docker compose pull
docker compose up -d
The full changelog is on GitHub at github.com/the-momentum/open-wearables/releases/tag/0.6.0.
Community
The project is at github.com/the-momentum/open-wearables. If you're building something with it or have questions, the Discord community is the fastest place to get a response.
From Wearable Data to Health Intelligence
If your team has the data flowing and is now figuring out what to do with it, that is the starting point for Signal. Momentum's delivery framework for wearable health intelligence: Blueprint maps your use case, Foundation connects the data sources and deploys the intelligence layer, Intelligence lands coaching, insights, or dashboards inside your app. We bring the integrations, the data layer, and the intelligence. Your team ships the experience.






