is a cross-platform native desktop application for synchronizing, analyzing, and visualizing data from Garmin smartwatches, cycling computers, and Strava Activities. It aims to provide a feature set identical to Garmin Connect™, while staying lightweight, fully open-source, and free from unnecessary bloat. OpenConnectCompanion is privacy-first (all data stays on your device) and does not rely on any Garmin services.
The easiest way to install OpenConnect Companion is to download the latest release for your operating system from the GitHub Releases page.
- Download the
.msior.exeinstaller (e.g.,OpenConnect_Companion_x.x.x_x64_en-US.msi). - Run the installer and follow the prompts.
- Download the
.dmgfile. - Open the disk image and drag the application to your Applications folder.
We provide AppImage and Debian packages:
- AppImage: Download the
.AppImagefile, make it executable (chmod +x OpenConnect_Companion_*.AppImage), and run it. - Debian, Ubuntu: Download the
.debfile and install it usingsudo dpkg -i OpenConnect_Companion_*.debor your package manager. - Fedora, Centos, Suse, Mandrake, Red Hat: Download the
.rpmfile and install it usingsudo yum install OpenConnect_Companion_*.rpm - Alpine Linux: Download the
.apkfile and install it usingdoas apk add OpenConnect_Companion_*.apk --allow-untrusted
- Dashboard with stats overview, contribution calendar, activity breakdown, and weekly trends
- Interactive Maps with GPS route visualization
- Performance Charts for heart rate, speed, power, and cadence
- Personal Records tracking
- Tag System for organizing workouts
- Training Analytics:
- HR Zones: Time-in-zone analysis based on configurable Heart Rate zones.
- Training Load: Tracks fitness (CTL), fatigue (ATL), and form (TSB).
- Recovery Score: Estimates readiness to train based on Training Stress Balance.
- Offline & Private: SQLite database stored locally; no cloud upload required.
OpenConnect Companion uses standard impulse-response models to estimate your fitness and fatigue.
TSS quantifies the workload of a single session. Since power meters are not always available, we estimate TSS using Heart Rate Reserve (HRR):
The specific stress score (TSS) for each individual workout is calculated using your Heart Rate Reserve (Max HR - Resting HR). If your resting heart rate drops as you get fitter, you should update it in Settings.
An exponentially weighted average of TSS over the last 7 days. It represents how tired you are currently.
The system calculates a 42-day rolling average of your training load. This represents your baseline "Fitness." As you train consistently over weeks, this number rises, effectively teaching the system that your body is accustomed to more work.
- Positive (> +5): You are fresh and ready to perform ("tapered").
- Neutral (-10 to +5): Optimal training zone.
- Negative (< -10): You are accumulating fatigue (overreaching).
- Deep Negative (< -30): High risk of overtraining.
A high-volume training week (high Fatigue) that would crush a beginner (low Fitness) might result in a TSB of -50 (Fatigued). However, for an athlete with high Fitness (high CTL), that same training week might only result in a TSB of -10 (Optimal). Because your Accumulated Fitness is subtracted from your Recent Fatigue, a fitter athlete can absorb much more training load while remaining in a "Recovered" or "Optimal" state.
- Node.js (v18+)
- Rust (latest stable)
- Tauri Prerequisites
# Build for production
npm run tauri buildThis creates installers in src-tauri/target/release/bundle/.
- React 19.2 with TypeScript
- Vite
- TailwindCSS
- Zustand
- Recharts & React-Leaflet
- Tauri 2.x
- rusqlite
- fitparser
MIT License - see LICENSE for details.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
OpenConnectCompanion is an independent open-source project and is not affiliated with or endorsed by Garmin Ltd. or its subsidiaries.