dimagious3 downloadsBuild a Garmin dashboard in a few clicks: paste a Personal API key, pick sports and metrics, insert a ready Dashy dashboard.
Paste a Garmin key. Pick what you care about. Get a dashboard in your note.
Sleep, HRV, resting heart rate, Body Battery, steps, runs, rides, swims and strength sessions, drawn as cards, charts and year maps from your own Garmin data. About a minute from install to your first dashboard.
Install: Settings, Community plugins, Browse, search for Garmy. Garmy draws its blocks with Dashy, so install Dashy the same way. Then open the command palette and run Garmy: Build a Garmin dashboard.
You do not have to learn a query language. Garmy writes the dashboard for you, out of ordinary Dashy blocks in an ordinary note. You can read it, edit it, move it to your home page, or stop using the plugin and keep everything.
It only shows what you actually have. No swimming cards if you never swim. No year map after three days of data. Charts and week-over-week comparisons appear once there is enough history to mean something, and monthly goals come from your own last 28 days, not from someone else's numbers.
A year of history takes seconds. Garmy reads Garmin's official Personal API in about 17 requests, saves one plain note per day, and from then on your dashboards work offline.
It stays fresh. Garmy syncs shortly after Obsidian starts and then every 6, 12 or 24 hours (your choice, or off). The three most recent days are rewritten on every sync, because a day is not finished until it is over.
It grows with you. A dashboard built after three days is small. A month later, run Rebuild the dashboard in this note: Garmy regenerates only its own part, adds the charts, year maps and goals that were not possible before, picks up a sport you started since, and leaves everything you wrote around it alone.
The wizard, settings and notices follow Obsidian's language and fall back to English: English, Russian, Spanish, German, French, Portuguese (Brazil) and Japanese. The words inside the dashboard are chosen separately, so you can keep an English interface and a dashboard in your own language.
Translations other than English and Russian were machine-assisted and are open to correction by native speakers: open an issue.
If Garmin Health Sync or your own script writes metrics such as steps or sleep_score into daily notes, the first step of the wizard can find those folders and build the dashboard from them. No key, no loading. Notes need a date in the name (2026-11-06, or the format of your daily notes from Daily notes or Periodic Notes, for example 06.11.2026) and at least two known metrics. Formats with month or weekday names are not read.
One note per day in Garmy/data, with these properties when Garmin has them: steps, resting_hr, stress, sleep_score, sleep_duration, hrv, body_battery (the day's highest value), and per sport run_km, run_min, bike_km, bike_min, swim_km, swim_min, strength_min. Folders are configurable. A dashboard note sits between two comment markers (%% garmy:start %% and %% garmy:end %%) with its choices in one garmy property, which is how the rebuild knows what to do.
distance_km rather than show a wrong number.personal.connectapi.garmin.com and nothing else: once to exchange the key for a 24 hour token, then to read your own data. It uses Obsidian's requestUrl. There is no telemetry, no analytics and no ads.data.json. The token stays in memory.Garmy is an independent project and is not affiliated with, endorsed by or sponsored by Garmin. Garmin and Garmin Connect are trademarks of Garmin Ltd. or its subsidiaries.
Every picture and clip above is the real plugin running in real Obsidian, on generated demo data that is nobody's health data (npm run capture).
Obsidian 1.13.0 or newer, the Dashy plugin, and a Garmin Personal API key.
npm install
npm run lint && npm run typecheck && npm test && npm run build
npm run e2e # real Obsidian, fake Garmin (needs macOS Obsidian and a Dashy build, see CLAUDE.md)
GARMIN_LIVE=1 npm run e2e -- e2e/live.spec.ts # real Garmin, key from the Keychain (service garmin-personal-api)
npm run capture # retake the README pictures and clips (needs ffmpeg)
npm run listing # rebuild the community directory pictures in docs/listing from the capture
Layers: src/core (mapping, data profile, dashboard composer, no I/O), src/api (client with injected transport), src/i18n (one file per language), src/app (wizard, note storage, sync, settings), src/main.ts. Changelog.
MIT licensed.