open-health-sync
Open source health data aggregator and self-hosted Terra alternative. One API for wearable data from Apple Health, Health Connect, Oura, WHOOP, Withings, Fitbit, Dexcom and more: REST, FHIR R4, Open mHealth, webhooks, CSV/Parquet and a read-only MCP server. One Go binary plus Postgres. AGPL-3.0.
Install / Use
claude mcp add soma-intelligence -- npx -y github:soma-intelligence/open-health-syncIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Data & AnalyticsSupported Platforms
Our assessment of open-health-sync
open-health-sync scores 75/100 on our quality scale, 545th of 600 Data & Analytics skills we index.
Its MCP Server is 56 KB long, well organised into 23 sections with 13 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so open-health-sync is actively maintained.
- It is released under AGPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
open-health-sync compared with similar skills
All 4 of these similar skills score higher than open-health-sync; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| open-health-sync (this skill)by soma-intelligence | 75 | 10 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 99.4k | 4d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 76.0k | 1d ago | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.5k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 88.6k | today | MCP Server |
Frequently asked questions
- How do I install open-health-sync?
- Run
claude mcp add soma-intelligence -- npx -y github:soma-intelligence/open-health-sync. The install tabs above show the steps for each supported agent. - Which AI agents does open-health-sync work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is open-health-sync safe to use?
- It is AGPL-3.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is open-health-sync still maintained?
- The repository was last updated today, so open-health-sync is actively maintained.
Skill content
View source on GitHubOpen Health Sync
One open API for wearable and health data. On your own server.
Apple Health, Withings, Oura, WHOOP, Fitbit, Health Connect, Dexcom, OMRON and five more.<br> One clean model out, over REST, FHIR R4 and a read-only MCP server for AI agents.<br> Free, one Go binary plus Postgres, runs on a Raspberry Pi.<br> An open source, self-hosted alternative to hosted wearable APIs such as Terra.
<p> <a href="docs/connectors/apple-health.md"><img alt="Apple Health: available" src="https://img.shields.io/badge/Apple_Health-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/withings.md"><img alt="Withings: available" src="https://img.shields.io/badge/Withings-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/oura.md"><img alt="Oura: available" src="https://img.shields.io/badge/Oura-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/whoop.md"><img alt="WHOOP: available" src="https://img.shields.io/badge/WHOOP-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/strava.md"><img alt="Strava: available" src="https://img.shields.io/badge/Strava-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/polar.md"><img alt="Polar: available" src="https://img.shields.io/badge/Polar-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/fitbit.md"><img alt="Fitbit: available" src="https://img.shields.io/badge/Fitbit-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/suunto.md"><img alt="Suunto: available" src="https://img.shields.io/badge/Suunto-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/ultrahuman.md"><img alt="Ultrahuman: available" src="https://img.shields.io/badge/Ultrahuman-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/intervals-icu.md"><img alt="intervals.icu: available" src="https://img.shields.io/badge/intervals.icu-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/health-connect.md"><img alt="Health Connect: available" src="https://img.shields.io/badge/Health_Connect-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/dexcom.md"><img alt="Dexcom: available" src="https://img.shields.io/badge/Dexcom-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/omron.md"><img alt="OMRON: available" src="https://img.shields.io/badge/OMRON-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/garmin.md"><img alt="Garmin: next release" src="https://img.shields.io/badge/Garmin-next_release-3d7ea6?style=flat-square"></a> </p>docker pull ghcr.io/soma-intelligence/open-health-sync:0.1.0
Rather not run a server? The hosted beta is the same API with nothing to operate: a key in a minute, demo data on the first call.<br> Get started for free → · Sign in to the developer portal · ▶ Watch the 75-second tour
Quickstart · Hosted beta · Compare · Roadmap · Use cases · Why · Features · How it works · MCP · FAQ
<sub>If it saves you one more parser, a <a href="https://github.com/soma-intelligence/open-health-sync/stargazers">⭐ star</a> helps other developers find it. Questions and ideas: <a href="https://github.com/soma-intelligence/open-health-sync/discussions">Discussions</a>.</sub>
<sub><b>v0.1.0, early preview.</b> APIs, configuration and schema may change in any 0.x release.</sub>
</div> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/demo/demo-dark.gif"> <img src="docs/demo/demo-light.gif" width="100%" alt="Terminal recording of the quickstart. docker compose up starts ohs and Postgres; ohs seed --demo writes 90 days of synthetic data from Oura, WHOOP, Withings, Fitbit, Polar and Apple Health, 44144 rows. The daily endpoint returns one day with 8132 steps from apple_health, a resting heart rate of 53 and a sleep score of 62 from oura, and the source of every figure. One heart rate reading of 70 bpm comes back from /samples, as a FHIR R4 Observation with LOINC 8867-4 and UCUM /min, and as an Open mHealth heart-rate data point in beats/min. tools/list on the MCP endpoint lists sixteen read-only tools."> </picture><sub>The quickstart, recorded on v0.1.0 with synthetic data: start the stack, load 90 days from six devices, then read one day of the merged view, one heart rate reading as REST, FHIR R4 and Open mHealth, and the MCP tools. Nothing is mocked; <a href="docs/demo/README.md">the tape</a> renders it again.</sub>
Open Health Sync (ohs) is a self-hosted ingestion and normalization layer for health data. It
pulls from providers, accepts uploads from phones, stores each payload verbatim, maps it to one
canonical model with one set of units, and serves it over a REST API and a read-only MCP server.
It is not a dashboard or a coaching app, and it is not a medical device or clinical software.
Run it yourself, or let us run it for you in the hosted beta.
🔌 Thirteen sources, one model<br>
Every provider maps into the same records, with one unit per quantity (UCUM, LOINC). Heart rate
is bpm, whatever the source called it. All thirteen ship in v0.1.0.
⚡ Always current<br>
Provider webhooks trigger a pull of just what changed. A backstop pull catches anything lost,
and /freshness says how up to date each source is.
🧾 Nothing thrown away<br> Every payload is kept verbatim on disk or S3. Fix a mapper, re-process a user from the raw files. Re-sent uploads are de-duplicated.
</td> </tr> <tr> <td valign="top">🤖 Ready for AI agents<br> A read-only MCP server: a person points their own agent at their own data, with a token that can only read.
</td> <td valign="top">🏥 Standards out<br> An OpenAPI 3.1 REST API, plus FHIR R4 Observations checked against the official HL7 validator.
</td> <td valign="top">🔒 Yours, and erasable<br>
Self-hosted, no call home. DELETE /v1/users/{id} is a hard delete of rows and raw files.
Provider deletions are honored too.
Hosted beta
The same server, run for you. The hosted beta is Open Health Sync without a Postgres, a raw store or workers to operate: you sign in, create a key and read data on your first call.
<a href="docs/demo/platform-tour.mp4"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/platform-tour-dark.jpg"> <img src="docs/assets/readme/platform-tour-light.jpg" width="100%" alt="Play the 75-second tour of the developer portal. The poster shows the Data page of a test project named Sleep Coach: one user, 11k records over 30 days from six sources, and a bar chart of records per day stacked by source (WHOOP, Fitbit, Oura, Polar, Apple Health, Withings)."> </picture> </a><sub>A 75-second tour on test data: create an account and a project, connect a coding agent over MCP, load sample data, see it charted, call the API from the explorer, then Ctrl K. <a href="docs/demo/platform-tour.mp4">Play the video</a> (MP4, 9 MB).</sub>
- A key in a minute. Create a project and get its API key. During the beta: three projects per account, five keys per project.
- Data on the first call. One click adds a synthetic user with 30 days from six sources, so your first request already returns sleep, heart rate and steps.
- Every output. REST with the OpenAPI file, FHIR R4, Open mHealth, CSV and Parquet, signed webhooks and the read-only MCP server, as documented here.
- A quickstart with your values. curl, TypeScript and Python filled in with your instance's address, plus the example apps and an AI agent over MCP.
- Nothing to migrate. It runs this open source server. Code written for it moves to your own instance with a new base URL and key, and back.
<sub>The <a href="examples/web">web example</a> reading a user back with a project key: daily steps, resting heart rate and sleep stages, all synthetic data.</sub>
It is a free beta with open sign-up, on shared capacity. For now it takes test data only: demo and synthetic users, no real people's health data. Self-hosting stays first class, and the server stays free under the AGPL.
<p><a href="https://app.openhealthsync.com/portal/signup?utm_source=github&utm_medium=readme&utm_campaign=section"><b>Get started for free →</b></a> Sign up with an email and confirm it. Already have an account? <a href="https://app.openhealthsync.com/portal">Sign in to the developer portal</a>.</p>Roadmap at a glance
✅ in v0.1.0 · 🔜 on main, ships in the next release · 🛠 planned
| | Outputs and integrations | | Sources | |:---:|---|:---:|---| | ✅ | REST API (OpenAPI 3.1), read-only MCP server | ✅ | Apple Health, Withings | | ✅ | FHIR R4 (Observations, checked with the HL7 validator) | ✅ | Oura, WHOOP, Polar, Strava | | ✅ | Open mHealth output (docs) | ✅ | Fitbit, Suunto, Ultrahuman, intervals.icu | | ✅ | CSV and Parquet exports (docs) | ✅ | Dexcom (CGM), OMRON | | ✅ | Outgoing w
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
99.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
76.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.5kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
88.6k🕷️ A Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
