Garmin Connect (Fixed)
Garmin Connect integration for Clawdbot: sync fitness data (steps, HR, calories, workouts, sleep) every 5 minutes using OAuth. Skill: Garmin Connect (Fixed) Owner: GodsBoy Summary: Garmin Connect integration for Clawdbot: sync fitness data (steps, HR, calories, workouts, sleep) every 5 minutes using OAuth. Tags: latest:1.1.0 Version history: v1.1.0 | 2026-01-28T07:43:19.022Z | user Fork of garmin-connect v1.0.0 with fixes: Fixed daily summary 403 error (display_name was None - now fetches from socialProfile endpoint). Fixed requirements.txt
Rank
62
Safety
84
Downloads
1.8k
Updated
Apr 15, 2026
Version
1.1.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Apr 15, 2026
- Adoption signal
- 1.8K downloadsadoption · observed Apr 15, 2026
- Latest release
- 1.1.0release · observed Jan 28, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: medium.
clawhub skill install kn70jpv4vft60w34b6sa1p6dqh8024yf:garmin-connect-fixed- Python environment detected. Create a strict virtual environment (`python -m venv .venv`) before installing dependencies to prevent system-level package conflicts.
- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-godsboy-garmin-connect-fixed/snapshot"
Documentation
CLAWHUB
8,848 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
--- name: garmin-connect description: "Garmin Connect integration for Clawdbot: sync fitness data (steps, HR, calories, workouts, sleep) every 5 minutes using OAuth." --- # Garmin Connect Skill Sync all your Garmin fitness data to Clawdbot: - 🚶 **Daily Activity**: Steps, heart rate, calories, active minutes, distance - 😴 **Sleep**: Duration, quality, deep/REM/light sleep breakdown - 🏋️ **Workouts**: Recent activities with distance, duration, calories, heart rate - ⏱️ **Real-time sync**: Every 5 minutes via cron ## Quick Start ### 1. Install Dependencies ```bash pip install -r requirements.txt ``` ### 2. OAuth Authentication (One-time) ```bash python3 scripts/garmin-auth.py [email protected] your-password ``` This saves your OAuth session to `~/.garth/session.json` — fully local and secure. ### 3. Test Sync ```bash python3 scripts/garmin-sync.py ``` You should see JSON output with today's stats. ### 4. Set Up 5-Minute Cron Add to your crontab: ```bash */5 * * * * /home/user/garmin-connect-clawdbot/scripts/garmin-cron.sh ``` Or manually: ```bash */5 * * * * python3 /home/user/garmin-connect-clawdbot/scripts/garmin-sync.py ~/.clawdbot/.garmin-cache.json ``` ### 5. Use in Clawdbot Import and use in your scripts: ```python from scripts.garmin_formatter import format_all, get_as_dict # Get all formatted data print(format_all()) # Or get raw dict data = get_as_dict() print(f"Steps today: {data['summary']['steps']}") ``` ## Features ✅ 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 ## Data Captured ### Daily Activity (`summary`) - `steps`: Daily step count - `heart_rate_resting`: Resting heart rate (bpm) - `calories`: Total calories burned - `active_minutes`: Intensity minutes - `distance_km`: Distance traveled ### Sleep (`sleep`) - `duration_hours`: Total sleep time - `duration_minutes`: Sleep in minutes - `quality_percent`: Sleep quality score (0-100) - `deep_sleep_hours`: Deep sleep duration - `rem_sleep_hours`: REM sleep duration - `light_sleep_hours`: Light sleep duration - `awake_minutes`: Time awake during sleep ### Workouts (`workouts`) For each recent workout: - `type`: Activity type (Running, Cycling, etc.) - `name`: Activity name - `distance_km`: Distance traveled - `duration_minutes`: Duration of activity - `calories`: Calories burned - `heart_rate_avg`: Average heart rate - `heart_rate_max`: Max heart rate ## Cache Location By default, data is cached at: `~/.clawdbot/.garmin-cache.json` Customize with: ```bash python3 scripts/garmin-sync.py /custom/path/cache.json ``` ## Files | File | Purpose | |------|---------| | `garmin-auth.py` | OAuth setup (run once) | | `garmin-sync.py` | Main sync logic (run every 5 min) | | `garmin-formatter.py` | Format data for display | | `garmin-cron.sh` | Cron wrapper script | | `requirements.txt` | Python dependencies | ##
README.md
# Garmin Connect Integration for Clawdbot Sync your Garmin fitness data (steps, HR, calories, workouts, sleep) automatically to Clawdbot every 5 minutes. ## Quick Start ### 1. Install Dependencies ```bash pip install -r requirements.txt ``` ### 2. Authenticate with OAuth Run the authentication script: ```bash python3 scripts/garmin-auth.py [email protected] your-password ``` This saves your OAuth session to `~/.garth/session.json` (local, secure). ⚠️ **Keep this file safe** — it contains your Garmin OAuth token. ### 3. Test ```bash python3 scripts/garmin-sync.py ``` You should see JSON output with your current Garmin data. ### 4. Set Up Cron (5-minute sync) Add to your crontab: ```bash */5 * * * * python3 /path/to/scripts/garmin-sync.py ``` ### 5. Use in Your Scripts Import Garmin data in any Clawdbot script: ```python from garmin_connect_clawdbot.scripts.garmin_formatter import format_all, get_as_dict # Get all formatted data all_data = format_all() print(all_data) # Or get raw dictionary data = get_as_dict() steps = data['summary']['steps'] sleep_hours = data['sleep']['duration_hours'] ``` ## Features - ✅ OAuth-based authentication (secure) - ✅ Real-time sync every 5 minutes - ✅ Sleep quality tracking (duration, deep/REM/light sleep) - ✅ Daily activity metrics (steps, HR, calories, distance) - ✅ Workout tracking (all activity types) - ✅ Body battery monitoring - ✅ Local caching (JSON) - ✅ Easy Clawdbot integration ## Scripts | Script | Purpose | |--------|---------| | `garmin-auth.py` | OAuth authentication (run once) | | `garmin-sync.py` | Sync all data from Garmin | | `garmin-formatter.py` | Format data for display | | `garmin-cron.sh` | Wrapper for cron jobs | ## Data Caching Data is cached locally in JSON format for quick access without constant API calls. ### Data Structure The cached data contains: - **summary**: Daily activity (steps, heart rate, calories, active minutes, distance) - **sleep**: Sleep metrics (duration, quality, deep/REM/light sleep breakdown) - **workouts**: Recent activities (type, distance, duration, calories, heart rate) ## Usage Examples ### Format All Data ```python from scripts.garmin_formatter import format_all output = format_all() # Returns formatted string print(output) ``` ### Access Raw Data ```python from scripts.garmin_formatter import get_as_dict data = get_as_dict() if data: print(f"Sleep: {data['sleep']['duration_hours']}h") print(f"Steps: {data['summary']['steps']:,}") print(f"Workouts: {len(data['workouts'])} activities") ``` ### Format Specific Metrics ```python from scripts.garmin_formatter import format_daily_summary, format_sleep, format_workouts # Use individually print(format_daily_summary()) print(format_sleep()) print(format_workouts()) ``` ## Troubleshooting ### Authentication Failed - Check email/password - Ensure 2FA is **OFF** on Garmin (or use app-specific password) - Garmin servers might rate-limit — wait 5 minutes ### No Sleep Da
_meta.json
{
"ownerId": "kn70jpv4vft60w34b6sa1p6dqh8024yf",
"slug": "garmin-connect-fixed",
"version": "1.1.0",
"publishedAt": 1769586199022
}requirements.txt
garminconnect>=0.2.38 requests>=2.28.0 python-dateutil>=2.8.2
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-godsboy-garmin-connect-fixed/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-godsboy-garmin-connect-fixed/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.8K downloads",
"href": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.1.0",
"href": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-01-28T07:43:19.022Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-godsboy-garmin-connect-fixed/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-godsboy-garmin-connect-fixed/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.1.0",
"description": "Fork of garmin-connect v1.0.0 with fixes: Fixed daily summary 403 error (display_name was None - now fetches from socialProfile endpoint). Fixed requirements.txt (garminconnect>=0.3.2 doesn't exist, corrected to >=0.2.38). All data (steps, HR, calories, sleep, workouts) now works. Contributed by @GodsBoy7777.",
"href": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-01-28T07:43:19.022Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
