If you run a homelab and want your Apple Health metrics in your own Grafana, Home Assistant, and an API you control, HealthSave is built for exactly that. With a one-time Pro unlock, the iOS app background-syncs your HealthKit data to a server you run, exposes a private REST API, and can push live metrics into Home Assistant. There is no hosted cloud in the middle, the destination is always a box you own.
The pipeline, end to end
Here's the shape of it:
iPhone (Apple Health)
└─ HealthSave Pro ──(background auto-sync, ~1–5 min)──▶ your server
├─▶ Grafana panels
├─▶ Home Assistant entities
└─▶ private REST API (your scripts)
Apple Health is the on-ramp; your hardware is the destination. The app reads HealthKit on-device and, with Pro, pushes batches to a server URL you set. Nothing routes through a HealthSave server, because there isn't one.
Step 1, Get the data flowing off the phone
In the app: Settings → Server Sync, set the Server URL to your server (e.g. http://your-server-ip:8000), optionally add an API key, and tap sync. Two things worth knowing up front:
- iOS won't sync to
localhost, point it at the LAN IP or hostname of the box running the backend. - Background sync is best-effort, roughly 1–5 minutes end to end. It is not a real-time stream. Design anything downstream to tolerate that latency.
Step 2, Stand up the backend (the open-core Observatory)
You need something on the other end to receive the batches. The optional companion project, HealthSave Observatory (the datahub project), is open-core: the protocol and SDK layers are open source, while the self-hosted server core is source-available under Elastic License 2.0. You can self-host it freely on a laptop, NUC, Mac mini, Synology, or a Proxmox VM. It's a FastAPI + TimescaleDB stack you bring up with Docker, and it ships Grafana dashboards out of the box plus a private read API.
The iOS app speaks a frozen v1 contract to it (POST /api/apple/batch), so the wire format is stable. If you'd rather build your own receiver, you can, the protocol/client layer is permissively licensed (Apache-2.0) precisely so anything can speak the format.
Honest architecture note: there is no hosted backend. "Self-host" means you run and maintain the server, the database, backups, and any reverse proxy yourself. If you don't want to operate a server, the standalone export workflow (CSV/JSON to a file) is the simpler path.
Step 3, Grafana panels over your own history
Once data lands in TimescaleDB, the bundled Grafana dashboards give you SQL-backed exploration: resting heart rate over months, HRV trends, sleep duration, steps, your real longitudinal record, not a 90-day window. Because it's your Postgres, you can write your own panels and queries against it.
Step 4, Home Assistant entities and automations
HealthSave Pro can push live health metrics into a self-hosted Home Assistant instance, turning metrics like heart rate, steps, and sleep into HA entities. From there they're just sensors, you can build automations on them.
A realistic example, given the latency: a recovery-aware morning scene that reads last night's resting HR and HRV and adjusts lighting/thermostat when you get up. That tolerates a few minutes of lag. What I would not build is anything safety-critical or sub-minute on this path, the ~1–5 minute, best-effort nature means it's for ambient automations, not alarms.
Step 5, The private REST API for your own scripts
Pro unlocks REST API access so your scripts, notebooks, and tools can query your body data from the server you run. This is the part self-hosters care about most: your data, queryable, on your terms, behind your own auth, feed it into a Jupyter notebook, a cron job, or a future local agent.
What's free vs Pro for this workflow
| Capability | Tier |
|---|---|
| On-device dashboard, CSV/JSON export | Free |
| 7-day export history | Free |
| Background auto-sync to your server | Pro |
| REST API access | Pro |
| Home Assistant integration | Pro |
| Full 30/90-day trends, PDF, unlimited export history | Pro |
Pro is a one-time $24.99 purchase with Family Sharing, no subscription. For a self-hoster, that's the whole automation layer unlocked once.
Honest limits for this audience
- You run the server. No managed/hosted option exists. Budget time for setup, backups, and a reverse proxy if you expose it.
- Sync is best-effort ~1–5 min, not instant, fine for dashboards and ambient automations, wrong for real-time triggers.
- iOS only today. Android Health Connect capture is on the Observatory roadmap but not shipped.
- HealthSave Observatory is open-core: protocol and SDK layers are Apache-2.0 open source; the server core is Elastic 2.0 source-available.
- Accuracy depends on your wearable. The pipeline faithfully moves whatever your device recorded; it doesn't validate sensors.
HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. Privacy claims of zero data collection apply to the iOS app; self-host sync sends your data to your own server.
Related guides
- Build a custom REST API over your Apple Health data, the endpoints, curl examples, and how to write your own receiver.
- Store Apple Health in your own database, the TimescaleDB destination in detail.
- Receive Apple Health as a webhook, POST batches to your own endpoint.
- Apple Health to InfluxDB, the honest forward path from TimescaleDB.
- Apple Health to Prometheus, an exporter for current health gauges.
- Put your Apple Health history into Grafana, SQL-backed dashboards over your full record.
- Publish Apple Health metrics over MQTT, fan out to Node-RED, Home Assistant, and custom subscribers.
- Push live Apple Health metrics into Home Assistant, the HA setup in detail.
- Back up 10+ years of history, give your homelab a real longitudinal record.
- Apple Health's export is unusable XML, get real CSV instead.
- How HealthSave handles your data, what leaves the device and what doesn't.
Get HealthSave
Download free, try the export, then unlock the homelab stack with a one-time Pro purchase when you're ready to wire it into your server.
Download HealthSave on the App Store