To get Apple Health data into Grafana, HealthSave Pro background-syncs your HealthKit data to a self-hosted server, where it lands in TimescaleDB and the bundled Grafana dashboards visualize your full history. No cloud bridge sits in the middle, the data goes from your iPhone to your own Postgres, and Grafana queries it with SQL.
Why Grafana, and why this is the long-history view
The HealthSave app gives you a calm on-device dashboard with 7/30/90-day trends. But if you want to explore, overlay resting HR against sleep, zoom out to two years, write an ad-hoc query, you want Grafana over a real time-series database. Apple Health can't do that, and its XML export certainly can't. Once your data is in TimescaleDB, Grafana turns it into panels you control.
The pipeline
iPhone (Apple Health)
└─ HealthSave Pro ──(background sync, ~1–5 min)──▶ your server (FastAPI + TimescaleDB)
└─▶ Grafana dashboards (SQL over your history)
Step 1, Stand up the Observatory (it includes Grafana)
The optional companion, the open-core HealthSave Observatory (the datahub project), is a FastAPI + TimescaleDB stack you bring up with Docker. It ships Grafana dashboards out of the box. Run it on a laptop, NUC, Mac mini, Synology, or a Proxmox VM. The server core is source-available under Elastic License 2.0; the protocol and SDK layers are Apache-2.0.
Step 2, Point the app at it
In HealthSave: Settings → Server Sync, set the Server URL to your server (e.g. http://your-server-ip:8000, iOS won't sync to localhost), optionally add an API key, and enable background sync. Batches start flowing within a few minutes.
Step 3, Open Grafana
The bundled dashboards give you SQL-backed exploration immediately: resting heart rate over months, HRV trend lines, sleep duration, steps, blood oxygen, your real longitudinal record, not a rolling window. Because it's your Postgres, you can clone a panel and write your own query against the TimescaleDB hypertables.
What's free vs Pro
| Capability | Tier |
|---|---|
| On-device dashboard, CSV/JSON export | Free |
| Background sync to your server | Pro |
| Full history → Grafana / TimescaleDB | Pro |
| REST API access | Pro |
Pro is a one-time $24.99, Family Sharing included, no subscription.
Honest limits
- You run it. Grafana, the database, and the server are yours to operate and back up. No hosted option.
- Best-effort ~1–5 min sync, Grafana is for trends and exploration, not real-time monitoring.
- Source-available core: the Observatory server is Elastic 2.0; protocol/SDK are Apache-2.0.
- iOS only; reads Apple Health, so data must already be in HealthKit.
- Accuracy is your wearable's, Grafana shows exactly what your device recorded.
Related
- Apple Health data in your homelab, the full Grafana + Home Assistant + REST API pipeline.
- Build a custom REST API over your Apple Health data.
- Back up 10+ years of history so Grafana has something to chart.
FAQ
Does HealthSave include Grafana?
The open-core HealthSave Observatory companion ships Grafana dashboards out of the box, on top of a FastAPI + TimescaleDB stack you bring up with Docker. The iOS app's job is to get your HealthKit data to that server; Grafana reads from the server's Postgres.
Can I write my own panels?
Yes. The data lands in TimescaleDB (PostgreSQL), so it's your database. Point any Grafana panel at it with plain SQL, resting heart rate over months, HRV trends, sleep duration, steps, anything you've synced.
How far back does the Grafana history go?
As far back as you backfill. Unlike the app's 90-day on-device trend view, Grafana queries your full server-side history, years of data if you run a 10-year backfill. It's SQL over your real longitudinal record.
Is there a hosted version?
No. There is no hosted backend, you run the Observatory and Grafana yourself, which is the point if you want your data on your own hardware.
What's the refresh latency?
Background sync is best-effort, roughly 1–5 minutes end to end. Grafana is great for trends and exploration; it is not a real-time monitor.
HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. The accuracy of any health data depends on your wearable device and its sensors. Privacy claims of zero data collection apply to the iOS app; self-host sync sends your data to your own server.
Get HealthSave
Download free, try the export, then unlock background sync to your server with a one-time Pro purchase when you're ready to wire Apple Health into Grafana.
Download HealthSave on the App Store