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.
Open Wearables 0.6.0 is available. This release adds menstrual cycle tracking for Garmin, a FIT file parser with second-by-second workout sample ingestion, several Oura reliability fixes, and multi-account sync support. No breaking changes to the API.
Women's Health: Garmin menstrual cycle tracking
Garmin menstrual cycle tracking is now supported. The Women's Health tab in the admin panel appears only when related data has been synced; if no data exists for a user, the tab is hidden.
Data arrives through the existing Garmin webhook pipeline and is normalized into the standard data model. Available through the API once synced.
FIT file parser
FIT files are Garmin's native workout recording format. 0.6.0 ships a parser for them and a new pipeline that extracts structured data from the files.
Data extracted from FIT files (always available):
- Training segments (laps, swim lengths, etc.)
- Time in heart rate zones
- Time in power zones
Requires INGEST_WORKOUT_SAMPLES=true:
- Air temperature
- Running dynamics: vertical oscillation, vertical ratio, stride length, ground contact time, stance time balance
FIT files are processed automatically via Garmin webhooks. There is no manual upload path.
To save raw FIT files to S3, set STORE_FIT_FILES=true. Disabled by default. Adds a few to several MB per user per month. See the S3 configuration guide at openwearables.io/docs/dev-guides/raw-payload-storage.
The parser is provider-agnostic and will eventually support FIT files from other devices.
Second-by-second workout samples
With INGEST_WORKOUT_SAMPLES=true, Garmin workout data is ingested at second-by-second granularity for: heart rate, speed, cadence, power, latitude, longitude, elevation, air temperature, and running dynamics.
Disabled by default. Estimated additional database usage: approximately 170 MB per user per month. Enable only when your use case requires this resolution.
Oura fixes
Several bugs in the Oura integration have been resolved:
- Time zone offset is now saved to the database
- Sleep summary metrics are now correctly captured
- Current day polling no longer drops data for daily metrics
- HRV is now stored as RMSSD instead of SDNN
The RMSSD migration runs automatically when the application starts. Existing SDNN values will be migrated. If you have downstream logic that depends on Oura HRV values, review this before upgrading.
Multi-account sync
Users who need to synchronise the same device with several Open Wearables accounts for testing purposes can now do this without workarounds. Pair the relevant accounts with the wearable; data is synced once from the source and copied to linked accounts.
Linked accounts display a badge showing linked status and sync state. No configuration required.
Full documentation: openwearables.io/docs/architecture/multi-account-sync
Other changes
- Redis TLS: set REDIS_SSL=true to enable rediss:// connections.
- Sleep start time display: sessions beginning before midnight are now prefixed with the previous day's name, adjusted to the user's time zone.
- Webhook management endpoints: new API endpoints for programmatic webhook configuration.
- Suunto resting heart rate: now emitted from sleep HRMin data.
- Polar sport types: indoor cycling, jump rope, and kickboxing/martial arts added.
- Version display: current Open Wearables version visible in the admin panel under the logout button.
Upgrading
docker compose pull
docker compose up -d
Database migrations run automatically on startup, including the Oura HRV RMSSD migration.
Full changelog: github.com/the-momentum/open-wearables/releases/tag/0.6.0
Questions or feedback? Open an issue on GitHub or join the Discord community.
Frequently asked questions
What is new in Open Wearables 0.6.0?
0.6.0 adds Garmin menstrual cycle tracking, a FIT file parser with second-by-second workout sample ingestion, several Oura reliability fixes including RMSSD HRV migration, multi-account sync support, and Redis TLS. No breaking changes to the API.
What data does the FIT file parser extract?
The parser always extracts training segments (laps, swim lengths), time in heart rate zones, and time in power zones. With INGEST_WORKOUT_SAMPLES=true enabled, it additionally extracts air temperature and running dynamics: vertical oscillation, vertical ratio, stride length, ground contact time, and stance time balance.
What is INGEST_WORKOUT_SAMPLES and should I enable it?
INGEST_WORKOUT_SAMPLES=true enables second-by-second granularity for Garmin workout data: heart rate, speed, cadence, power, GPS coordinates, elevation, air temperature, and running dynamics. It is disabled by default because it adds approximately 170 MB of database usage per user per month. Enable it only when your use case requires this resolution.
Does the Oura HRV change require manual action when upgrading?
No manual action required. Oura HRV is now stored as RMSSD instead of SDNN. Existing SDNN values in the database are automatically migrated when the application starts after upgrading. If you have downstream logic that depends on Oura HRV values, review those before upgrading as the values will differ.
What is multi-account sync in Open Wearables?
Multi-account sync allows the same physical wearable device to sync data across multiple Open Wearables accounts for testing purposes. No configuration is required. Pair the relevant accounts with your wearable account and data will be synced once from the source and copied to linked accounts.
How do I upgrade to Open Wearables 0.6.0?
Run docker compose pull followed by docker compose up -d. Database migrations run automatically on startup, including the Oura HRV RMSSD migration. Review any downstream logic that depends on Oura HRV values before upgrading.