Skip to content

janmarkus-dev/OpenConnectCompanion

OpenConnectCompanion

OpenConnectCompanion is a fast, open-source, self-hostable tool for synchronizing, analyzing, and visualizing data from Garmin smartwatches and cycling computers — all written in Python.

It aims to provide a feature set identical to Garmin Connect™, while staying lightweight, fully open-source, and free from unnecessary bloat. Even if Garmin’s services were ever discontinued, OpenConnectCompanion is designed to remain fully functional for its users, as it does not depend on any Garmin services.

Install

  • Docker: docker run -p 5000:5000 -d janmarkusdev/openconnectcompanion
  • Debian/Ubuntu: Enable testing, run sudo apt-get install openconnectcompanion
  • from AUR (git): run yay -S openconnectcompanion-git (or other AUR helper)
  • from AUR (bin): run yay -S openconnectcompanion (or other AUR helper)
  • Alpine: Enable testing repo, apk add openconnectcompanion
  • From source: Clone repo, satisfy requirements.txt, run app.py.
  • Other: Clone repo, run install.sh as root.

Usage

  • Run openconnectcompanion

Sync Device (FIT import on Linux)

Use this to import activities from your Device.

Quick start

  1. Install MTP + GVFS packages
  • Ubuntu/Debian: sudo apt install gvfs gvfs-backends gvfs-fuse libmtp9 mtp-tools
  • Fedora: sudo dnf install gvfs-mtp gvfs-fuse libmtp
  • Arch/Manjaro: sudo pacman -S gvfs-mtp gvfs gvfs-gphoto2
  1. Connect and mount your Device
  • Plug in via USB (original cable recommended).
  • If your device has a USB mode setting, choose “MTP” or “File Transfer”.
  • In your file manager (Nautilus/Dolphin/etc.), click the Garmin under “Devices”.
  1. Verify the mount
ls -la /run/user/$(id -u)/gvfs/
find /run/user/$(id -u)/gvfs -maxdepth 4 -type d -name Activities
  1. Click “Sync Device” in the app (top-right)
  • You’ll see a status message with files found and imported.

Notes

  • Linux only. For reliable syncing, run the app natively (not in Docker), as GVFS/FUSE mounts are often not accessible from containers.

Troubleshooting

  • Device not found: ensure it’s mounted in your file manager and try another cable/port.
  • Still stuck: run DEBUG_MODE=1 python app.py and try again to see a more detailed status in logs.

Wouldn't be possible without:

Docker, Alpine Linux, Python, Flask, Werkzeug, pytz, tzlocal, python-dotenv, folium, leaflet, TailwindCSS, fitparse

Roadmap & Planned features:

  • Support all workouts
  • First beta containers release

OpenConnectCompanion is an independent open-source project and is not affiliated with or endorsed by Garmin Ltd. or its subsidiaries.

About

A open source Garmin Connect™ rewrite

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •