An open-source training log for cyclists. Self-host it in five minutes, track progression for a lifetime, and keep your data yours.
Mean-maximal power across any date range, season overlays included.
The Banister model on your real training history — not an estimate.
FIT file upload, Strava and Wahoo integrations — all supported.
No analytics, no third-party SDKs. Your rides stay on your server. Privacy policy →
SQLite under the hood. Export your raw FIT files and profile data as JSON — anytime.
Every ride is automatically classified — Recovery, Endurance, Tempo, Threshold, VO2 Max, Anaerobic, or Sprint — using Coggan's power model. Override with one click.
Design interval workouts with per-step power, HR, or cadence targets — zone numbers, % FTP, or absolute watts. Export to Zwift (.zwo) or as FIT workout files for Wahoo ELEMNT and Garmin bike computers.
We run a public instance at app.koutsi.dev — the same open-source openkoutsi, hosted and kept up to date for you. No server to rent, no Docker, no maintenance.
It runs on a single UpCloud server in Helsinki, Finland: an EU-owned provider, on EU soil, under EU and Finnish law. Your training data stays inside GDPR's protections and out of reach of the US CLOUD Act. Storage is encrypted at rest and backed up daily, and — as everywhere in openkoutsi — each user gets a private database that no one else, not even an administrator, can read.
Access is by invitation, or by self-serve email sign-up where an instance enables it.
Prefer full control? Export your data and self-host anytime — no lock-in.
Run openkoutsi anywhere — a Pi in your closet, a €4 VPS, or your home NAS. Docker compose for one-command setup, or build from source. No sign-ups, no lock-in.
Core training features are free forever. AI coaching runs on your own model, or — on shared instances — a subscription the host can offer.
# clone & run git clone https://github.com/openkoutsi/openkoutsi docker compose up -d # open http://localhost:8080