Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Garmy

dimagiousdimagious3 downloads

Build a Garmin dashboard in a few clicks: paste a Personal API key, pick sports and metrics, insert a ready Dashy dashboard.

Add to Obsidian
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
Garmy screenshot
  • Overview
  • Scorecard
  • Updates2
Garmy (garmidian): your Garmin data, as a dashboard in your Obsidian notes

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.

The Garmy wizard in Obsidian: a Garmin key is pasted, a year of history loads in four parts, the user chooses what to show, previews the dashboard on their own numbers and creates the note, which then scrolls through recovery cards, charts, a year map by sport and monthly goals

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.

Why you might want it

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.

Recovery cards in an Obsidian note: sleep score, sleep duration, HRV, Body Battery, resting heart rate and stress

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.

Sleep, Body Battery, HRV and resting heart rate charts with a steps card, a 10,000-step streak and daily steps as bars This week's run, bike, swim and strength cards, weekly training minutes as stacked bars and a month calendar

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.

A dashboard built from six days of data shows a few cards and a note that charts come after a week; after the rebuild command it shows recovery cards, week-over-week comparisons, charts, a year map and monthly goals, and the text around it is unchanged

Seven languages

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.

The first step of the wizard in English, German, French, Spanish, Portuguese, Japanese and Russian

Translations other than English and Russian were machine-assisted and are open to correction by native speakers: open an issue.

Already keep Garmin numbers in your notes?

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.

What it writes

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.

What it does not do

  • No Training Readiness and no VO2 max number. Garmin's Personal API does not provide them.
  • No full daily distance. The range endpoints report walking distance only, so Garmy does not write distance_km rather than show a wrong number.
  • Not tested on a phone yet. The plugin is not desktop-only and uses only Obsidian's own APIs, but nobody has run it on an iPhone or Android device, so treat mobile as unverified.
  • Not a coach. It draws your numbers. It does not interpret them.

Disclosures

  • Account and key. You need a Garmin Connect account and a Personal API key you create yourself. Garmin describes the Personal API as meant for individuals who want programmatic access to their own data, and not for commercial applications serving multiple end users. Garmy has no server and no accounts: it runs on your computer with your own key, it is free, and any donation is voluntary. Read the terms you accept when you create a key.
  • Attribution. Every dashboard names Garmin as its data source right under the title, as Garmin's API brand guidelines ask. Keep that line if you share a screenshot. If Garmin rejects the key (it expires after the lifetime you chose), Garmy says so once and settings offer Replace key.
  • Network. The plugin contacts 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.
  • Your data. Health data stays in your vault. If your vault is synced (iCloud, git, Obsidian Sync), the daily notes sync with it, like any other note.
  • Secrets. The key lives in Obsidian's secure storage, never in a note or data.json. The token stays in memory.
  • Support. Garmy is free and nothing is locked behind a payment. If it saves you time, you can buy me a coffee; the plugin itself shows no ads and no donation prompts.
  • Files. The plugin creates notes in the data folder and the dashboard folder you configure, and changes only the dashboard part of a note you ask it to rebuild. The only time it looks across the whole vault is when you click Look for those notes: it reads note properties from Obsidian's cache to find folders that already hold Garmin numbers, opens no file, and keeps nothing.

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).

Requirements

Obsidian 1.13.0 or newer, the Dashy plugin, and a Garmin Personal API key.

Development

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.

HealthExcellent
ReviewPassed
About
Build a Garmin dashboard inside a note by pasting your Garmin key and choosing metrics. Display sleep, HRV, resting HR, Body Battery, steps and workouts as cards, charts and year maps drawn from your Garmin data and saved to daily notes for offline use. Rebuild to add charts as history grows.
IntegrationsChartsDates
Details
Current version
1.0.1
Last updated
24 hours ago
Created
Yesterday
Updates
2 releases
Downloads
3
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
dimagiousdimagious
github.com/Dimagious
GitHubdimagious
  1. Community
  2. Plugins
  3. Integrations
  4. Garmy

Related plugins

Reminder

Manage Markdown TODOs with reminder.

Mood Tracker

Track your moods & emotions easily. Visualize tracked history and browse the past entries.

Oura Ring

Import Oura Ring data into a note.

Chronos Timeline

Render interactive timelines inline in your notes from simple markdown

Contribution Graph

Generate an interactive heatmap to visualize and track your productivity.

BRAT

Easily install a beta version of a plugin for testing.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Self-hosted LiveSync

Sync vaults securely to self-hosted servers or WEBRTC.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)