Sync your Hevy gym workouts to Garmin Connect with correct exercise names, sets, reps, weights, calorie estimation, and optional heart rate.
Highlights
Safe upload recovery. Uploads that fail mid-request (a crash or a timeout) are now parked in a durable pending_uploads table instead of being blindly re-uploaded, so an upload that may have already reached Garmin never creates a duplicate. Rename, description, and watch-delete steps resume from checkpoints, and reconcile only adopts an existing activity when the start time matches and there is upload evidence. New CLI and web controls let you resolve a stuck sync: reconcile, retry-failed-only, abandon, mark-synced, and skip. Thanks @donndonn (#227).
Also in recent releases
- Python 3.10 compatibility for timestamps with a single fractional-second digit or a space date/time separator, via a shared
parse_iso()helper (#229). - Context-aware "not configured" errors on the cloud path, pointing to the dashboard instead of the local
hevy2garmin initwizard (#224). - Merge mode now strips only the offending exercise name when Garmin rejects a sub-category, keeping the rest of your exercise names intact (#222).
Install
pip install hevy2garminAlso available as an npm package for TypeScript and Node:
npm install hevy2garminFull changelog: CHANGELOG.md · Live demo: https://hevy2garmin-demo.gkos.dev