Unified Data Model
Every metric from every provider maps to the same normalized schema. Steps are steps whether they come from Fitbit or Garmin.
VitaSync is an open-source platform that aggregates health and fitness data from wearable devices and fitness services. Instead of implementing OAuth flows, data normalization, and sync scheduling for each provider separately, you connect once to VitaSync and get a unified API.
# Query a user's last 7 days of health data across all connected devicescurl "https://api.yourdomain.com/v1/users/{userId}/health?from=2024-01-01&to=2024-01-07" \ -H "Authorization: Bearer vs_live_..."{ "data": [ { "id": "01HX...", "metricType": "steps", "value": 9842, "unit": "steps", "recordedAt": "2024-01-07T00:00:00.000Z", "source": "fitbit" }, { "id": "01HX...", "metricType": "resting_heart_rate", "value": 52, "unit": "bpm", "recordedAt": "2024-01-07T00:00:00.000Z", "source": "whoop" } ], "pagination": { "limit": 100, "offset": 0, "hasMore": true }}Unified Data Model
Every metric from every provider maps to the same normalized schema. Steps are steps whether they come from Fitbit or Garmin.
OAuth Managed
VitaSync handles the OAuth flows for each provider. Your app directs users to a single authorization URL and receives a webhook when the connection is established.
Automatic Sync
Connected providers are synced automatically on configurable schedules. Trigger a manual sync any time with a single API call.
Webhook Delivery
Subscribe to events like sync.completed, connection.created, and user.deleted. Receive real-time notifications with HMAC-verified payloads.
Multi-tenant
Built for platforms. Each API key belongs to a workspace and manages its own set of users, connections, and webhooks.
Self-hosted
Run anywhere with Docker Compose. You own your infrastructure and your users’ data never leaves your environment.
MCP Server
Expose health data and AI analytics to AI assistants (Claude, Cursor, Copilot) via the Model Context Protocol. 9 tools including LLM-ready context, anomaly alerts, and correlations.
AI & Analytics
Built-in correlation engine, anomaly detection (statistical + clinical thresholds), health scores, and LLM-ready context endpoints for AI-assisted health coaching.
Notification System
Modular multi-channel notifications — Discord, Slack, Teams, Email, Web Push, ntfy, Webhook. Define rules to route alerts by category and severity.
Grafana Dashboards
8 pre-built health dashboards — workouts, sleep, heart health, body metrics, personal records, daily activity, and provider health — provisioned automatically.
Goals & Achievements
Set measurable health goals tied to wearable metrics, track streaks and progress, and unlock tiered achievements automatically.
Health Tracking
Manual logging for mood, nutrition, medications, and symptoms — enriching AI analytics and correlation analysis beyond wearable data.
Challenges & Training Plans
Workspace-wide fitness challenges with leaderboards and AI-generated adaptive training plans tailored to user goals.
Reports & Data Export
Generate periodic health reports (weekly to annual) and export data in JSON, CSV, FHIR R4, or PDF for compliance and portability.
Sleep Analysis & Biometrics
Sleep debt tracking, rolling biometric baselines, composite health scores, periodic snapshots, and AI-generated insights.
| Provider | Auth | Metrics | Sync |
|---|---|---|---|
| Fitbit | OAuth 2.0 + PKCE | Steps, heart rate, sleep, body composition, SpO₂ | Every 15 min |
| Garmin | OAuth 1.0a | Steps, GPS workouts, HRV, stress, body battery | Push (real-time) |
| WHOOP | OAuth 2.0 | Recovery, strain, HRV, sleep performance | Every 15 min |
| Strava | OAuth 2.0 | Workouts, distance, calories, GPS routes | On-demand |
See Supported Providers for a full metric-by-metric comparison.
docker compose up -dPOST /v1/api-keysPOST /v1/users with your internal user IDGET /v1/oauth/{provider}/authorize?userId={id}GET /v1/users/{userId}/healthThe Quickstart guide walks through each step in detail with copy-pasteable curl commands.
Authorization: Bearer vs_live_<key>/v1/