# Cycling Coach — chat with an AI coach on Telegram, it pushes structured workouts to your intervals.icu calendar. Open Source

**URL:** <https://forum.intervals.icu/t/cycling-coach-chat-with-an-ai-coach-on-telegram-it-pushes-structured-workouts-to-your-intervals-icu-calendar-open-source/127372>\
**Category:** AI Tools\
**Created:** [16 April 2026 17:35 UTC](https://forum.intervals.icu/t/cycling-coach-chat-with-an-ai-coach-on-telegram-it-pushes-structured-workouts-to-your-intervals-icu-calendar-open-source/127372 "2026-04-16T17:35:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ys1234](https://forum.intervals.icu/user_avatar/forum.intervals.icu/ys1234/32/66744_2.png) [@ys1234](https://forum.intervals.icu/u/ys1234)\
**Post date:** [16 April 2026 17:35 UTC](https://forum.intervals.icu/t/cycling-coach-chat-with-an-ai-coach-on-telegram-it-pushes-structured-workouts-to-your-intervals-icu-calendar-open-source/127372/1 "2026-04-16T17:35:28Z")

</div>

Hey all — early-stage side project I’ve been building. Sharing here to get feedback from people who’d actually use it. GitHub, MIT, BYOK.

**What it is**

An AI cycling coach you chat with on Telegram (or in your terminal). It connects to your intervals.icu account, reads your actual numbers, and writes structured workouts back to your calendar — which then syncs to Garmin/Wahoo/Hammerhead/COROS/Suunto/Zwift the usual way.

**How it works**

1. You message it (“what should I ride today?”, “build me a 12-week gran fondo plan”, “I tweaked my knee, adjust this week”)
2. It reads your Fitness / Fatigue / Form, recent activities, wellness, eFTP, and zones from intervals.icu
3. Deterministic cycling logic runs locally — zone calc from FTP, periodization model selection (linear / block / reverse linear / polarized / pyramidal), feasibility check on FTP or W/kg targets, weekly templates with hard-day spacing
4. An LLM (Claude, GPT, or Gemini — your key, your bill) stitches the data + logic + coaching context into a reply
5. When you approve a plan or workout, it pushes to your intervals.icu calendar

**What I tried to get right**

- **Numbers aren’t hallucinated.** Zones, load estimates, and plan structure come from typed code, not the LLM. The LLM frames and explains; it doesn’t invent watts.
- **It remembers you.** Goals, injuries, schedule constraints, and preferences are stored locally at `~/.cycling-coach/` and reloaded every session.
- **Form-aware by default.** The coaching prompts tell it to recommend recovery when Form drops below -30, and to flag rising fatigue / declining Form as overtraining signals. (Prompt-level, not a hard gate — an LLM can still be argued with.)
- **It’s honest about feasibility.** If your goal FTP is unrealistic given current Fitness and time-to-event, it says so with numbers.
- **BYOK, local-first.** No subscription, no server. Your data stays between your machine, intervals.icu, and whichever LLM you choose.

**Install**

npm install -g cycling-coach  
cycling-coach setup  
cycling-coach

Needs Node 20+. Setup wizard walks you through LLM key, intervals.icu key, and  
(optional) Telegram bot token.

**GitHub:** [GitHub - yerzhansa/enduragent: AI cycling coach. Self-hosted. Intervals.icu, Telegram, desktop. · GitHub](https://github.com/yerzhansa/cycling-coach)  
**NPM:** [https://www.npmjs.com/package/cycling-coach](https://www.npmjs.com/package/cycling-coach)

Would love feedback — especially on the coaching prompts and periodization logic. Happy to take issues, PRs, or just DM-style “your bot told me to do X and I don’t buy it” reports.

---

<div class="post-metadata">

**Author:** ![Ico8B](https://forum.intervals.icu/user_avatar/forum.intervals.icu/ico8b/32/80410_2.png) [@Ico8B](https://forum.intervals.icu/u/Ico8B)\
**Post date:** [10 August 2026 07:00 UTC](https://forum.intervals.icu/t/cycling-coach-chat-with-an-ai-coach-on-telegram-it-pushes-structured-workouts-to-your-intervals-icu-calendar-open-source/127372/2 "2026-08-10T07:00:22Z")

</div>

Ciao! Potrebbe essere molto interessante però subito un accorgimento: dare la possibilità di cambiare lingua del bot perché non tutti conoscono il russo! È possibile?

---

<div class="post-metadata">

**Author:** ![ys1234](https://forum.intervals.icu/user_avatar/forum.intervals.icu/ys1234/32/66744_2.png) [@ys1234](https://forum.intervals.icu/u/ys1234)\
**Post date:** [8 September 2026 13:32 UTC](https://forum.intervals.icu/t/cycling-coach-chat-with-an-ai-coach-on-telegram-it-pushes-structured-workouts-to-your-intervals-icu-calendar-open-source/127372/3 "2026-09-08T13:32:32Z")

</div>

Ciao! Grazie per il suggerimento! Sì, aggiungerò il prima possibile la possibilità di scegliere l’italiano e altre lingue. La lingua predefinita dell’interfaccia del bot è l’inglese, non il russo.

Hi! Thanks for the suggestion! Yes, I’ll add the option to choose Italian and other languages as soon as possible. The bot’s interface defaults to English, not Russian.

Btw, the desktop version for macOS will be available soon: [https://enduragent.icu/](https://enduragent.icu/)
