One CLI command pulls any date range of your Garmin Connect data as local files (preserved as an offline backup) AND loads them into a single SQLite database. Multi-account in one DB, gap-fills automatically, fully idempotent on reprocess.
The standout is the schema: 33 normalized tables with inline column comments preserved into SQLite, an EAV time-series table that captures every FIT-file metric (power, running/cycling/swimming dynamics, etc.), dedicated tables for each sport, and 7 sleep tables down to 1-minute intervals. Pleasant to query by hand and very effective as a data source for an LLM.
Garmin (via Cloudflare) has been making it increasingly difficult to get your own data out through anything resembling a decent API. The hacks bundled in garmin-health-data (self-contained SSO client, five fallback login strategies, browser-TLS impersonation, anti-rate-limit pause) resolve auth and 429 issues that have broken other tools, including older projects like GarminDB.
Contributions and feedback welcome, particularly around specialized sports.