Tooling

Quantified Self & DIY Health Dashboards

GarminDB, Apple Health Auto Export, Grafana — building your own health-data lake.

For the homelab health-data hoarder: this is the canonical 2026 stack for pulling everything off the wearables / scales / CGMs / labs into a single SQL-or-time-series store you control, then dashboarding it. None of the consumer apps quite show what you can build yourself.

Sister sections: Apple Watch, Garmin, Wearable Aggregation, Diabetes & CGM Tools, Health Records & FHIR, Health Data Privacy, Home Assistant Add-ons, Prometheus Stack, Self-Hosted Personal Apps, Notes & Wiki.

The canonical 2026 pipeline

[Wearables / Scales / CGM / Labs]

[Vendor app / Apple Health / Health Connect]

[Exporter: Auto Export / GarminDB / xDrip+ / Theengs Gateway]

[Storage: SQLite / Postgres / InfluxDB]

[Dashboard: Grafana / Metabase / Streamlit / Notion]

Per-source exporters

Apple Health / Apple Watch

  • ★ ★ Apple Health Auto Export — paid iOS; scheduled Health → CSV / JSON to iCloud Drive / Dropbox / REST endpoint; the iOS export workhorse.
  • HealthFit — paid; Apple Health → FIT / TCX / GPX → Strava / TrainingPeaks / Garmin Connect.
  • Apple Health → ZIP export (Settings → Profile → Export) — manual but free; XML + workout GPX.
  • QS Access (free) — bulk CSV exports.
  • Apple Shortcuts — automate "log my mood" / "if HRV < X message me" workflows.

Garmin

  • ★ ★ GarminDB (FOSS Python) — pulls every activity / step / sleep / HR / weight / body-battery into a local SQLite mirror.
  • garminconnect-python — unofficial API client.
  • Garmin Connect → manual .fit export — per-activity.

Strava

  • stravalib (Python) — official API client.
  • Strava bulk export (Settings → My Account → Download Your Information) — manual.
  • rStrava (R) — for the R-using QS crowd.

Oura / Whoop / Fitbit

  • oura-python, whoop-python, python-fitbit — OAuth API clients; require active sub for full data.
  • Health Connect (Android) → consolidated downstream exporter.

Withings / Renpho

  • python-withings-api — Withings → CSV.
  • Withings HA integration — pulls weight / BP / sleep into HA.
  • See Smart Scales.

CGM (Dexcom / Libre)

  • xDrip+ + Nightscout — see Diabetes & CGM Tools.
  • Nightscout REST API — all your BG / IOB / COB queryable.
  • Tidepool API — pump + CGM unified.

Lab results

  • Apple Health Records → Apple Health Auto Export → JSON.
  • MyChart manual download → CSV → SQLite.
  • See Health Records & FHIR.

Generic BLE sensors

  • Theengs Gateway + Theengs Decoder — see BLE & Bluetooth IoT; pull Govee / Xiaomi / Polar / Mi Flora data straight to MQTT.

Storage layer

  • ★ ★ SQLite — single-file DB; perfect for personal scale; queryable with Datasette / DB Browser.
  • Postgres — for the long-term home lab; SQLAlchemy / Drizzle / Prisma.
  • InfluxDB / TimescaleDB — time-series; pairs with Grafana out of the box. See Time Series Databases.
  • DuckDB — embedded analytical SQL; brilliant for "ad-hoc analyze 10 years of Garmin data."
  • Parquet files in ~/health/ — for the data-lake-curious.

Dashboards / front-ends

  • ★ ★ Grafana — the QS dashboard default; Prometheus / InfluxDB / Postgres / SQLite (via plugin) sources. See Prometheus Stack.
  • Metabase — paid + free OSS edition; better for SQL-first users.
  • Datasette — FOSS by Simon Willison; turns SQLite into a queryable, sharable web app; uniquely good for QS.
  • Streamlit / Dash — Python; for custom dashboards.
  • Observable Notebooks / D3 — for the JS visualization crowd.
  • Notion / Obsidian — for narrative + small charts; see Notes & Wiki.
  • Apache Superset — OSS BI dashboard.

Home Assistant integration

  • ★ Most QS data also makes sense in HA — HRV, sleep, weight, body battery, BG all support automations:
    • "Light goes red on the bed light if HRV is low this morning."
    • "Notify me if BG > 180 for > 30 min."
    • "Sunrise alarm pushes earlier if Whoop strain was high yesterday."
  • See Home Assistant Add-ons and HA LLM Integrations.

Notable QS communities / writers

  • Marco Altini (HRV4Training) — newsletter; HRV science.
  • Bob Troia (Quantified Bob) — long-running QS blog.
  • Quantified Self meetup — global community since 2008.
  • Mark Wilson's Health Data Lakehouse — mid-2020s QS-pipeline writeup.
  • Felix Krause's "I record my entire life" — extreme-end QS.
  • r/QuantifiedSelf — Reddit.

Privacy + ergonomics

  • ★ Behind Tailscale — see VPN Mesh — your dashboards are accessible from your phone but not the public internet.
  • Encrypt the SQLite at rest if it lives on a NAS.
  • Backup the DBs — these are the most painful to lose. See Backup & DR.
  • Don't expose Datasette publicly — even "anonymized" health data is identifiable.

Patterns to adopt

  • Pull only what you'll dashboard. Pulling every HK metric is fun, looking at none of them is the norm. Start with 5 metrics.
  • Quarterly review — most QS dashboards are useful for 3 months and ignored for 9. Keep what's still answering questions.
  • Correlate across sources — sleep × HRV × workouts × mood × BG is where insight lives. Single-source dashboards are less useful.
  • One graph per question — "When did my RHR start drifting up?" → one trend line. Not a 12-panel hellscape.

Anti-patterns

  • The 50-metric dashboard — looks impressive, helps no one. Pick 5.
  • Daily "review" you skip — if the dashboard isn't open weekly, prune it.
  • Self-host as the goal — pulling the data is 20% of value; acting on it is 80%.
  • Trusting any single number — sleep stage / body fat / HRV - day 1 — all noisy.

Cost / license honesty

  • Apple Health Auto Export, HealthFit, RunGap — paid one-time or low monthly.
  • GarminDB, stravalib, oura-python, whoop-python — FOSS.
  • Grafana, Datasette, Metabase OSS, InfluxDB — FOSS / community editions.
  • All on a Pi 5 / mini-PC — minimal hardware cost.

Pick this if…

  • iPhone + Apple Watch: Apple Health Auto Export → SQLite → Datasette + Grafana.
  • Garmin + Strava: GarminDB → SQLite → intervals.icu (web hosted) or local Grafana.
  • Diabetes: xDrip+ → Nightscout → Grafana.
  • Want to share with your doctor: export PDFs from Bearable / Migraine Buddy / Function Health.
  • Just want to stop being trapped in vendor apps: start with the on-device aggregator; export quarterly; defer the lake until you actually have queries.
  • Already self-hosting Home Assistant: integrate Garmin / Withings / Oura HACS integrations + InfluxDB long-term retention.