It runs on your machine, reads your real data from intervals.icu, reviews your rides, answers training questions and builds workouts that land on your Garmin or Wahoo. Chat with it in your terminal or in Telegram. Free and open source.
No API key needed if you have ChatGPT Plus — you can sign in with your existing subscription.
Four things. Two of them you may already have.
Follow the four steps in order. If you already use intervals.icu, skip to step 2.
intervals.icu is a free training-analysis site the coach reads your data from. If you ride with a Garmin, Wahoo or use Strava, your history imports automatically.
i1234567) — the setup wizard asks for both.Open Terminal and run these three commands:
$ npm install -g cycling-coach $ cycling-coach setup $ cycling-coach
The setup wizard walks you through everything: your AI provider (step 3), your intervals.icu key (step 1), and Telegram if you want it (step 4). Answers are saved, you run setup once.
Have ChatGPT Plus, Pro or Business? In the wizard, choose OpenAI Codex (ChatGPT subscription). Your browser opens, you sign in to ChatGPT, done. The coach uses your subscription quota — no separate key, no extra bill. This path is marked experimental and needs at least the $20/mo Plus tier.
Pay-as-you-go key from Anthropic (recommended), OpenAI, Google, DeepSeek, Qwen, MiniMax, Kimi, Z.AI or OpenRouter. You create the key in the provider's console, paste it into the wizard, and you control the spend directly in your provider account.
Without this, the coach is a chat in your terminal. With it, the coach is a Telegram bot in your pocket.
/newbot. Give it any name.cycling-coach setup later to add it).cycling-coach, open your bot in Telegram and say hi. Only you can talk to it — other users are rejected unless you allow them.The software is free and MIT-licensed. You pay only for the AI that powers it: nothing extra if you sign in with an existing ChatGPT Plus subscription, or pay-as-you-go if you bring an API key. intervals.icu is free too (they run on voluntary supporter subscriptions).
The coach runs on your machine. Your data moves between intervals.icu, your chosen AI provider and you — there's no server of ours in the middle. The app makes one anonymous version-check ping so it can tell you when an update exists; it contains no personal data, and you can disable it.
Anything you'd ask a coach who has read your file: what's my form, review yesterday's ride, why was my heart rate high, build me a 12-week gran fondo plan, create a threshold workout for tomorrow, move today's session. Workouts it creates land on your intervals.icu calendar and sync to your head unit as structured workouts with power targets.
Yes — the coach works without it (zones from your FTP, plans, general coaching). But the good stuff comes from your real data, and intervals.icu takes about five minutes to set up. It's worth it.
The coach sends the AI only what it needs for your question — training metrics, not your identity. Your intervals.icu key stays on your machine (on macOS it can live in the Keychain). The full source is on GitHub if you want to check what it does — that's the point of it being open.
A desktop app that removes the setup entirely: download, chat, connect. Running support is in the works too. The build is documented in public at @sks.cycling.