Open-source project
GoldenCheetah/GoldenCheetah avatar
GoldenCheetah/GoldenCheetah

GoldenCheetah: a desktop analysis platform that lets you write your own cycling metrics

Performance Software for Cyclists, Runners, Triathletes and Coaches

2,207 stars475 forksStandard MLGPL-2.0

At a glance

What is it?
GoldenCheetah is a GPL v2 desktop application for cyclists, triathletes and coaches that combines planning, indoor trainer control and performance modelling with embedded Python and R so users can define their own metrics and charts.
Who is it for?
GoldenCheetah is worth trying if you want one application that imports your rides, plans your training, drives your trainer and lets you write the metric nobody shipped, and it is the wrong choice if you want a phone app or a hosted account. The embedding story is the differentiator: a local Python runtime or a user installed one, an embedded R runtime, and a programmable HTML chart for Train View mean the analysis layer is yours, not the vendor's.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly Standard ML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A desktop application, not a service, with prebuilt binaries for three platforms

GoldenCheetah's first line is that it is free for everyone to use and modify, released under the GPL v2 open source license, with pre-built binaries for Mac, Windows and Linux. That sentence sets the shape of the project: it is a locally installed application, not a web service with an account, and the reason to build it yourself is optional rather than mandatory.

The feature list is organised around the training cycle rather than around screens. You plan activities and forecast progress. You analyse with summary metrics including BikeStress, TRIMP and RPE. You extract insight through models such as Critical Power and W'bal, and track and predict performance with models such as Banister and PMC. Aerodynamics are addressed through Virtual Elevation, and indoor training works with ANT and BTLE trainers. Data moves to and from cloud services including Strava, Withings and Todays Plan, and to and from a wide range of bike computers and file formats.

The repository describes itself in the topics as a Linux, macOS and Windows application built on Qt, with cycling, power-meter and triathlon as subject areas. GitHub's own language detection reports Standard ML for the repository, which is almost certainly a misclassification given the Qt topic and the `build.pro` file at the top level, a qmake project file. Build instructions are separate per platform, in three files at the repository root:

text
INSTALL-WINDOWS
INSTALL-LINUX
INSTALL-MAC

The README also notes that release builds, snapshots and development builds are all available from goldencheetah.org, and that AppVeyor builds all three platforms.

Why the scripting runtimes are the actual product decision

The part of the README that distinguishes GoldenCheetah from a charting tool is the list of things users can build themselves: a high performance built-in scripting language, a local Python runtime or an embedded user installed runtime, an embedded user installed R runtime, and a user programmable realtime HTML chart for Train View.

Read carefully, that is a decision about where the analysis code lives. R metrics run inside R, so a statistician's existing package works rather than being reimplemented. Python metrics run inside Python, and the README distinguishes a local runtime from an embedded user installed one, which means you choose whether GoldenCheetah ships its own interpreter or uses the one already on your machine. The right choice depends on your other tooling: an embedded runtime is more predictable across machines, a user installed one means your virtual environment and package versions are the ones that apply.

Community sharing sits on top of that. Users can upload and download metrics they developed, upload and download Python or R charts, import indoor workouts from the TrainerDay service, and share anonymised data with researchers through the OpenData initiative.

This also explains why the GPL matters more here than for a typical desktop utility. A metric you write in R is your code, but it runs inside a GPL v2 application and can be shared through the project's own cloud feature. If you intend to keep your analysis private, that sharing path is opt-in rather than automatic, which is worth confirming for your own data before uploading anything.

The repository layout: a vendored Qt application with a qmake build

The tree describes a mature C++ desktop codebase rather than a script collection. `src/` is the application, `vendor/` holds vendored third party code, and `qwt/` is the Qwt plotting library that provides the charting widgets. Build configuration sits in `build.pro` with an `appveyor.yml` and an `appveyor/` directory for continuous integration.

text
src/
vendor/
qwt/
build.pro
appveyor.yml

Everything else supports that core. `test/` and `unittests/` are the test trees, `doc/` holds documentation including the wiki material, `contrib/` holds contributed content, `util/` holds utility scripts, and `deprecated/` is a directory kept around for code that is no longer built. `COPYING` at the root is the GPL text, and `CONTRIBUTING.md` is the contribution guide.

One naming detail worth flagging for anyone who arrives from a search engine. The README points NOTIO users to a separate fork at github.com/notio-technologies/GCNotio rather than folding it into the main repository. If you are evaluating GoldenCheetah specifically for NOTIO hardware, you are evaluating a different codebase and should read that repository's own documentation instead.

v3.8 planning work and how quickly it shipped

The release record shows a fast cadence around the 3.8 line. v3.8-RC2 appeared on 2026-08-14, v3.8 on 2026-09-20, and a snapshot build on 2026-09-23 that already listed changes from v3.8 and a line about starting the v3.9 development cycle. The last push to master was on 2026-09-26.

v3.8 is described as adding detailed planning facilities, tracking and forecasting in a Plan View with new charts for Calendar, Agenda, Plan Adherence and Expected PMCs, programmable Train View charts, native Apple Silicon support, and updated Python embedding. The credits name the individual contributors for each piece: planning facilities and the Plan View charts, the Plan View refactoring, the user programmable Train Chart, upgraded Python support and macOS code signing, Apple Silicon native binaries built with GitHub Actions, and a Tredict.com integration for syncing FIT files and downloading body and HRV measures and workouts.

The snapshot release shows where development went next: caldav sync, described as write only to remote, a fix for TRIMP zonal points to consider time in heart rate zones nine and ten, and a global named filter and search file.

The per platform installation notes in those releases are the part to read before downloading anything. On Windows all three steps are required, downloading and running the executable without installing over an existing copy, installing the vc++ redistributable, and rebooting before running. On macOS, drag and drop the app out of the dmg and authorise it to run rather than launching from the disk image. On Linux, download the AppImage, make it executable and run it, with an explicit warning not to use the version from the distribution's app store because it is likely to be wrong.

Editorial conclusion

GoldenCheetah is worth trying if you want one application that imports your rides, plans your training, drives your trainer and lets you write the metric nobody shipped, and it is the wrong choice if you want a phone app or a hosted account. The embedding story is the differentiator: a local Python runtime or a user installed one, an embedded R runtime, and a programmable HTML chart for Train View mean the analysis layer is yours, not the vendor's. Two caveats belong in the same breath. The GPL v2 licence means a modified build you distribute carries obligations, and the Linux release notes warn explicitly against the build your distribution's app store offers, pointing users at the AppImage instead. v3.8 shipped on 2026-09-20 with a snapshot following on 2026-09-23 and v3.9 development already started, so take the AppImage, install the Python or R runtime you want to use, and write one metric before you import a season of data.

Frequently asked questions

Is GoldenCheetah available for running or phone use?

The README describes it as a desktop application with pre-built binaries for Mac, Windows and Linux, and does not mention a phone app. Running data is one of the subject areas the project tracks, but through the desktop application rather than a separate mobile client.

How do I install GoldenCheetah on Linux?

The README points to an INSTALL-LINUX file at the repository root for build instructions, and the release notes say to download the AppImage, make it executable and run it. The release notes also warn against the version from a distribution's app store because it is likely to be the wrong one.

Can I write my own metrics and charts in GoldenCheetah?

Yes, and that is a stated feature. The README lists a built-in scripting language, a local Python runtime or an embedded user installed Python runtime, an embedded user installed R runtime, and a user programmable realtime HTML chart for Train View. User developed metrics and Python or R charts can also be uploaded and downloaded through the cloud sharing feature.

What license is GoldenCheetah released under?

GPL v2. The README states it is free for everyone to use and modify under that license, with pre-built binaries for Mac, Windows and Linux, and the GPL text sits in the COPYING file at the repository root. Code you write as a metric runs inside the application, which matters if you plan to redistribute a modified build.

Official sources

  1. GoldenCheetah/GoldenCheetah on GitHub
  2. License: GPL-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/goldencheetah-goldencheetah.svg)](https://hysenlabs.com/projects/goldencheetah-goldencheetah)