Garmin Connect
Garmin Connect integration for Clawdbot: sync fitness data (steps, HR, calories, workouts, sleep) every 5 minutes using OAuth.
Garmin Connect integration for Clawdbot: sync fitness data (steps, HR, calories, workouts, sleep) every 5 minutes using OAuth.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Sync all your Garmin fitness data to Clawdbot:
pip install -r requirements.txt
python3 scripts/garmin-auth.py your-email@gmail.com your-password
This saves your OAuth session to
~/.garth/session.json — fully local and secure.
python3 scripts/garmin-sync.py
You should see JSON output with today's stats.
Add to your crontab:
*/5 * * * * /home/user/garmin-connect-clawdbot/scripts/garmin-cron.sh
Or manually:
*/5 * * * * python3 /home/user/garmin-connect-clawdbot/scripts/garmin-sync.py ~/.clawdbot/.garmin-cache.json
Import and use in your scripts:
from scripts.garmin_formatter import format_all, get_as_dictGet all formatted data
print(format_all())
Or get raw dict
data = get_as_dict() print(f"Steps today: {data['summary']['steps']}")
✅ OAuth-based (secure, no password storage) ✅ All metrics: activity, sleep, workouts ✅ Local caching (fast access) ✅ Cron-friendly (5-minute intervals) ✅ Easy Clawdbot integration ✅ Multi-user support
summary)steps: Daily step countheart_rate_resting: Resting heart rate (bpm)calories: Total calories burnedactive_minutes: Intensity minutesdistance_km: Distance traveledsleep)duration_hours: Total sleep timeduration_minutes: Sleep in minutesquality_percent: Sleep quality score (0-100)deep_sleep_hours: Deep sleep durationrem_sleep_hours: REM sleep durationlight_sleep_hours: Light sleep durationawake_minutes: Time awake during sleepworkouts)For each recent workout:
type: Activity type (Running, Cycling, etc.)name: Activity namedistance_km: Distance traveledduration_minutes: Duration of activitycalories: Calories burnedheart_rate_avg: Average heart rateheart_rate_max: Max heart rateBy default, data is cached at:
~/.clawdbot/.garmin-cache.json
Customize with:
python3 scripts/garmin-sync.py /custom/path/cache.json
| File | Purpose |
|---|---|
| OAuth setup (run once) |
| Main sync logic (run every 5 min) |
| Format data for display |
| Cron wrapper script |
| Python dependencies |
garmin-sync.py againchmod +x scripts/garmin-cron.sh chmod +x scripts/garmin-sync.py chmod +x scripts/garmin-auth.py
Run
garmin-sync.py at least once to create cache:
python3 scripts/garmin-sync.py
from scripts.garmin_formatter import format_all, get_as_dictGet formatted output
print(format_all())
Get raw data
data = get_as_dict() if data: print(f"Sleep: {data['sleep']['duration_hours']}h") print(f"Steps: {data['summary']['steps']:,}")
MIT — Use, fork, modify freely.
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.