Skip to content

the-momentum/open-wearables

Repository files navigation

Open Wearables

License: MIT PRs Welcome Built with: FastAPI + React + Tanstack Discord


Documentation: https://docs.openwearables.io


Open-source platform that unifies wearable device data from multiple providers and enables AI-powered health insights through natural language automations. Build health applications faster with a single API, embeddable widgets, and intelligent webhook notifications.

What It Does

Open Wearables provides a unified API and developer portal to connect and sync data from multiple wearable devices and fitness platforms. Instead of implementing separate integrations for Garmin, Fitbit, Oura, Whoop, Strava, and Apple Health, you can use a single platform to access normalized health data and build intelligent health insights through AI-powered automations.

image

Important

For Individuals: This platform isn't just for developers - individuals can self-host it to take control of their own wearable data. Connect your devices, explore your health metrics through the unified API, and stay tuned for upcoming features like the AI Health Assistant and personal health insights automations. Best of all, your data stays on your own infrastructure, giving you complete privacy and control.

Why Use It

For Developers building health apps:

  • πŸ”Œ Integrate multiple wearable providers through one API instead of maintaining separate implementations
  • πŸ“Š Access normalized health data across different devices (heart rate, sleep, activity, steps, etc.)
  • 🏠 Self-hosted solution - deploy on your own infrastructure with full data control
  • πŸš€ No third-party dependencies for core functionality - run it locally with docker compose up
  • πŸ€– Build AI-powered health insights and automations using natural language (coming soon)
  • 🧩 Embeddable widgets for easy integration into your applications (coming soon)

The Problem It Solves:

Building a health app that supports multiple wearables typically requires:

  • Significant development effort per provider (Garmin, Fitbit, Oura, etc.) to implement OAuth flows, data mapping, and sync logic
  • Managing different OAuth flows and APIs for each service
  • Handling various data formats and units
  • Maintaining multiple SDKs and dealing with API changes

Open Wearables handles this complexity so you can focus on building your product πŸš€

Use Cases

  • πŸƒ Fitness Coaching Apps: Connect user wearables to provide personalized training recommendations. Running coaches can create users, share connection links via WhatsApp, and test AI insights capabilities
  • πŸ₯ Healthcare Platforms: Aggregate patient health data from various devices and set up automations for health alerts
  • πŸ’ͺ Wellness Applications: Track and analyze user activity across different wearables with AI-powered insights
  • πŸ”¬ Research Projects: Collect standardized health data from multiple sources
  • πŸ§ͺ Product Pilots: Non-technical product owners can test platform functionality by sharing connection links with users without needing their own app
  • πŸ‘€ Personal Use: Individuals can self-host the platform to connect their own wearables, chat with their health data using the AI Health Assistant, and set up personal health insights - all with complete data privacy and control

Getting Started

Get Open Wearables up and running in minutes.

  1. Clone the repository:

    git clone https://github.com/the-momentum/open-wearables.git
    cd open-wearables
  2. Configure environment variables:

    Backend configuration:

    cp ./backend/config/.env.example ./backend/config/.env

    Frontend configuration:

    cp ./frontend/.env.example ./frontend/.env
  3. Start the application

    Using Docker (Recommended):

    The easiest way to get started is with Docker Compose:

    docker compose up -d

    For local development setup without Docker take a look at docs

  4. Seed sample data (optional but recommended): If you're using Docker, seed the database with sample data including an admin account:

    make init

    This will create:

    • An admin user account ([email protected] / secret123)
    • 10 test users
    • Sample activity data for test users
  5. Access the developer portal:

    Open http://localhost:3000 to access the developer portal and create API keys.

  6. View API documentation:

    Open http://localhost:8000/docs in your browser to explore the interactive Swagger UI.

Core Features

Developer Portal Dashboard

Web-based dashboard for managing your integration:

  • πŸ“ˆ General Statistics: View number of users and data points at a glance
  • πŸ‘₯ User Management: Add users via the portal or through the API
  • πŸ“‹ User Details: View connected data sources, integration status, and user metrics with visualizations
  • πŸ”‘ API Key Management: Generate and manage credentials in the Credentials tab

Health Insights & Automations (coming soon)

The platform's most powerful feature - define intelligent health insights using natural language:

  • πŸ’¬ Natural Language Conditions: Describe when notifications should be triggered in plain English
  • πŸ”” Webhook Notifications: Configure your backend endpoint to receive real-time health insights
  • πŸ§ͺ Test Automation: Run dry runs on historical data to see how automations work in practice
  • πŸ‘€ Human-in-the-Loop: Mark incorrect AI interpretations during testing to continuously improve the system
  • ✨ Improve Description: AI-powered suggestions to refine your automation descriptions
  • πŸ“œ Automation Logs: Review past automation triggers and provide feedback

AI Health Assistant (coming soon)

  • πŸ’¬ Interactive chat interface for debugging and exploring user data
  • 🧩 Embeddable widget that can be integrated into any app with just a few lines of code
  • πŸ”„ Customizable AI models (swap models to match your needs)
  • πŸ” Natural language queries about user health metrics

Unified API

Access health data through a consistent REST API regardless of the source device.

Provider Support

  • ☁️ Cloud-based: Garmin, Suunto, Polar (more comming soon!)
  • πŸ“± SDK-based: Apple Health (via XML export and webhooks)

OAuth Flow Management

Simplified connection process for end users:

  1. Generate a connection link for your user (or use the SDK widget)
  2. User authenticates with their wearable provider
  3. Data automatically syncs to your platform
  4. Access via unified API

SDK & Widgets (coming soon)

  • πŸ”Œ Connection Widget: Allow users to connect their wearables directly from your app
  • πŸ€– AI Health Assistant Widget: Embed the AI chat interface for user health queries
  • 🍏 Flutter SDK: Handles HealthKit permissions, background sync, and data normalization

Architecture

Built with:

  • 🐍 Backend: FastAPI (Python)
  • βš›οΈ Frontend: React + TanStack Router + TypeScript (Vite)
  • πŸ—„οΈ Database: PostgreSQL + Redis
  • βš™οΈ Task Queue: Celery (background jobs for data syncing and processing)
  • πŸ” Authentication: Self-contained (no external auth services required)
  • πŸ“‘ API Style: RESTful with OpenAPI/Swagger documentation

The platform is designed for self-hosting, meaning each deployment serves a single organization. No multi-tenancy complexity.

Development Roadmap

Available:

  • Developer portal
  • User management (via API and developer portal)
  • OAuth flow for Garmin, Polar, and Suunto
  • Workout data sync and API access for Garmin, Polar, and Suunto

In Development:

  • Core health data endpoints
  • Health Insights automations
  • AI Health Assistant
  • Mobile SDK (Flutter)
  • Enhanced widget integration

Join the Discord

Join our Discord community to connect with other developers, get help, share ideas, and stay updated on the latest developments:

Discord

Contributing

Contributions are welcome! This project aims to be a community-driven solution for wearable data integration.

See CONTRIBUTING.md for details on:

  • πŸ› οΈ Setting up the development environment
  • πŸ“ Code style and testing requirements
  • πŸ”€ Pull request process

License

MIT License - Use it freely in commercial and open-source projects.

Community


Note: This is an early-stage project under active development. APIs may change before version 1.0. We recommend pinning to specific versions in production and following the changelog for updates.


The backend part of this project was generated from the Python AI Kit.