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 in watts or W/kg, with Critical Power, exponential and power-law curves fitted over it — and an FTP estimate you can accept in one click.
The Banister model on your real training history — not an estimate. Project it forward to see where form lands on race day.
Drop in an entire Strava bulk export — FIT, GPX and TCX, compressed or not — or sync new rides automatically from Strava and Wahoo.
Koutsi breaks down every ride, sums up your training status each day, and says whether a goal is realistic — then answers your own questions from your actual numbers. Runs on your instance's model, or on one you bring yourself.
Generate a Base → Build → Peak → Taper plan around the hours you actually have. Rides link themselves to the day's session, skipped sessions are recorded with a reason, and an adherence score tracks how closely you followed it.
Upload a GPX and get the route back as segments — a power target and a predicted split for each, solved from your own FTP, weight and bike. Pace it to a finish time or an average power, and read the plan for where to spend and when to eat. On instances that enable it.
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.
Every ride is classified automatically — Recovery through Sprint — using Coggan's power model. Override with one click.
Efficiency factor, aerobic decoupling and W′ balance on every ride, weekly time in zones, and whether a block came out polarized, pyramidal or threshold-heavy.
An MCP server lets Claude, Copilot or any MCP client read your training — read-only, scoped to a token you issue and revoke at will.
No analytics, no third-party SDKs. Your rides stay on your server, and the AI can run on a model you host yourself. Privacy policy →
SQLite under the hood. Export your raw FIT files and profile data as JSON — anytime.
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