Skip to main content

Intervals Sync logo

Intervals Sync

The missing intervals.icu sync tool for iGPSPORT and Bryton users.

License: MIT GitHub release Platforms GitHub stars

ko-fi

Enter your credentials once, press Sync, and your latest rides from iGPSPORT or Bryton Active land on intervals.icu. You can also push planned workouts from intervals.icu back to iGPSPORT or Bryton Active. Free and open source, for Windows, macOS, and Android.

Download · CLI & agents · Contributing



Intervals Sync syncing rides to intervals.icu, skipping ones already uploaded

More screenshots

Sync screen    Settings screen with secure credential fields

Features

  • Syncs recent rides from iGPSPORT or Bryton Active to intervals.icu (original .fit files)
  • Optional Dropbox upload — mirror activities to a Dropbox folder from the GUI (iGPSPORT or Bryton sync)
  • Upload workouts — push planned cycling workouts from your intervals.icu calendar to iGPSPORT custom workouts or Bryton Active (sync to your head unit from the vendor app)
  • Skips activities already uploaded so re-running is safe — with an optional force re-sync
  • Lets you choose how many recent activities to process
  • Workout upload window in Settings — how many calendar days to upload (default: today only)
  • Sets the intervals.icu sport type after upload (e.g. Mountain Bike Ride / Gravel Ride) — iGPSPORT exports everything as a generic "Ride"
  • Optionally deletes the local .fit files after a successful upload
  • Stores your credentials in the OS secure vault (Windows Credential Manager / macOS Keychain / Android Keystore), never in a file
  • Lets you know when a newer version is available
  • Sync zones to iGPSPORT — push FTP, LTHR, max HR, weight, and power/HR zones from intervals.icu into your iGPSPORT profile (Settings → iGPSPORT profile, or intervalssync sync-zones; the app prompts on launch when thresholds differ)
  • Headless CLI — activity sync, workout upload, and iGPSPORT zone/threshold sync from the terminal, with JSON output and exit codes for automation and AI agents (see CLI & automation)
  • China iGPSPORT region — accounts on app.igpsport.cn use a separate API; choose China in Settings (or INTERVALSSYNC_IGPSPORT_REGION=china in the CLI)

Prefer the terminal, or want to help out? It's open source (Python + Flet, MIT) — see CONTRIBUTING.md.

Download & run (Windows)

  1. Go to the Releases page and download the latest .zip.
  2. Unzip it anywhere and double-click the app (e.g. intervalssync.exe).
  3. On first launch, open Settings and enter:
    • your iGPSPORT email and password (or phone number for China — set region to China if you use app.igpsport.cn)
    • your intervals.icu API key (intervals.icu → Settings → Developer)
  4. Click Save, then go back and press Sync (or Upload to iGPSPORT / Upload to Bryton for planned sessions on your intervals.icu calendar).

Your password and API key are stored in your operating system's secure credential store — Windows Credential Manager on Windows (the same vault Windows uses for its own logins) — never in a plain text file.

Download & run (macOS)

  1. Go to the Releases page and download the latest macos.zip.
  2. Unzip it and move the app to Applications if you want.
  3. Open the app, fill in Settings (same fields as above), then Sync or Upload to iGPSPORT / Upload to Bryton.

On macOS your credentials are stored in Keychain. Release builds are not notarized yet, so macOS may require right-clicking the app and choosing Open the first time.

Download & run (Android)

  1. On the Releases page, download the latest .apk.
  2. Open it on your phone. Android will ask you to allow installing from this source — accept (Settings → "Install unknown apps" for your browser/files app).
  3. Open the app, fill in Settings (same fields as above), then Sync or Upload to iGPSPORT / Upload to Bryton.

On Android your credentials are stored in the Android Keystore. The app isn't on the Play Store, so the "unknown source" prompt is expected.

CLI & automation (AI agents)

Headless intervalssync CLI — sync from iGPSPORT or Bryton, upload workouts to iGPSPORT or Bryton, sync thresholds and zones to iGPSPORT, JSON on stdout. See Agent / headless sync.

With uv installed, run the latest stable release directly from PyPI—no clone or manual upgrade required:

uvx --python 3.13 intervalssync@latest --version
uvx --python 3.13 intervalssync@latest sync --json

Run from source

Requires uv.

uv sync
cp .env.example .env    # optional: credentials for CLI; IGPSYNC_DROPBOX_APP_KEY for Dropbox
uv run --env-file .env intervalssync-gui

Build the desktop apps

uv run flet build windows
uv run flet build macos

The distributables land in build/windows/ and build/macos/. (Flet downloads the Flutter toolchain on the first build; macOS builds require a macOS host.)

Roadmap

The app is built with Flet, so the same Python code targets desktop and Android today, with iOS (flet build ipa) possible from the same code.

Support

Tips on Ko-fi help fund bug fixes, releases, and new features. Thank you!

Acknowledgements

This project builds on community work around iGPSPORT activity access and syncing:

This app is an independent project and is not affiliated with iGPSPORT, intervals.icu, or the projects listed above.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

intervalssync-0.9.3.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

intervalssync-0.9.3-py3-none-any.whl (75.0 kB view details)

Uploaded Python 3

File details

Details for the file intervalssync-0.9.3.tar.gz.

File metadata

  • Download URL: intervalssync-0.9.3.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for intervalssync-0.9.3.tar.gz
Algorithm Hash digest
SHA256 95fcf74653427dd16ea5c0295f6841beb260160ce9289c175aa6f4dfefdcaa69
MD5 3a6ba8aa87786127f66027df95ee6f30
BLAKE2b-256 844d45324449b744c18a1f2ba3809b2836cf47fb5278a988eefdd9dc35e0eb37

See more details on using hashes here.

Provenance

The following attestation bundles were made for intervalssync-0.9.3.tar.gz:

Publisher: release.yml on jorge-huxley/intervalssync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file intervalssync-0.9.3-py3-none-any.whl.

File metadata

  • Download URL: intervalssync-0.9.3-py3-none-any.whl
  • Upload date:
  • Size: 75.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for intervalssync-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8c18814a2dad508c405de5cebf51f3a18ba6e43234f718b57a183e77439b9f93
MD5 fe2cf8136a7f44069bd54628ad06a0e6
BLAKE2b-256 02cc611e84ca35b3a52a5ced5c5209cc8f193f938817c8894cf988d2a96cc79e

See more details on using hashes here.

Provenance

The following attestation bundles were made for intervalssync-0.9.3-py3-none-any.whl:

Publisher: release.yml on jorge-huxley/intervalssync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.3 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page