AI cycling coach. Free and open source.

The app is free and your training data never leaves your device. For the AI, you use what you already have: a ChatGPT subscription, Claude Code, or any LLM API key. Pair Telegram and coach from your phone.

  • Windowssoon
  • iOS & Androidsoon
On your Mac See the plan and the training data behind it.
Telegram Ask from your phone while the app runs on your Mac. Changes land on your intervals.icu calendar.

What it does

Three things, done properly.

A coach is only useful if it has read your training, has a plan for your season, and puts the session where you will see it.

01

Generic chatbots forget your FTP by Tuesday.

It reads your real numbers.

Paste your own intervals.icu API key and the app pulls your profile, FTP, zones and weight, your activities, and your power and heart-rate curves. Fitness, Fatigue, Form, Load and Intensity come from the rides you did, not from a questionnaire.

  • Wellness too: HRV, resting heart rate and sleep, when you log them.
  • No platform account? Drop in .fit, .tcx or .gpx files — parsed on your device.
  • Power zones, plan skeletons and target feasibility are computed locally, with no model call.
  • It remembers you: goals, injuries, equipment, schedule — plain files on your device, yours to open or delete.

Fitness, Fatigue and Form

Last 26 weeks
Season chart of Fitness, Fatigue and Form over 26 weeks Fitness climbs steadily from 44 to 78 through repeated three-week blocks. Fatigue swings between recovery weeks and block weeks and finishes at 92. Form, which is Fitness minus Fatigue, is positive in recovery weeks and finishes at minus 14. 0 Fatigue 92 Fitness 78 Form −14 26 weeks ago today

02

A plan that survives a work trip, a bad night's sleep, and Saturday's group ride.

It builds a plan toward your event.

Tell the coach the date you care about and it builds a periodized block structure back from it, at a weekly volume you can hold, with hard sessions spaced so you can absorb them.

  • Recovery weeks are part of the plan, not an apology for missing one.
  • It will tell you when an FTP or W/kg target is not reachable in the time you have.
  • The plan adapts to what you actually did — it compares prescribed against actual after each session.

Weekly load, 16-week build

Polarized, 4-week blocks
Sixteen-week plan skeleton Weekly load rises across three-week build blocks separated by lighter recovery weeks, then steps down over the final three weeks into the goal event. Goal event Week 1 Taper Week 16
LinearBlockReverse linearPolarizedPyramidal

03

It writes the workout to your calendar.

When you agree on a session, the coach writes it as a structured workout on your own intervals.icu calendar. intervals.icu syncs it to whatever you have linked there, so the intervals are waiting when you clip in.

  • Targets are written in watts off your current FTP, not vague effort words.
  • Nothing is written until you ask for it.
  • The onward device sync is intervals.icu's job. Enduragent never touches those accounts.

Threshold 5 × 5

1h 20m, Load 85
Interval profile of the Threshold 5 by 5 workout Twenty minutes of warm up ramping to 75 percent of FTP, then five efforts of five minutes at 105 percent of FTP separated by five-minute easy spins, then fifteen minutes of cool down. 278 W Warm up 5 × 5 min at 105% FTP Cool down
GarminWahooHammerheadCOROSSuuntoZwift

Privacy

Your data stays on your device*

There is no Enduragent account, no server holding your training history, and no analytics in the product. Nowhere for us to look, because we did not build the place to look.

Files you can open

Everything lives under ~/.enduragent: a local SQLite store, an archive of the raw data it read, plain-Markdown memory files, and your transcripts. Delete the folder and it is gone.

Keys encrypted at rest

API keys are encrypted with macOS secure storage, with the key held in your Keychain. If secure storage is unavailable, the app refuses to save the key rather than writing it in the clear.

* Your prompt and the training numbers in it go to the model provider you chose. Your intervals.icu key goes to intervals.icu.

Model access

Bring your own model.

Enduragent does not resell tokens. You point it at an account you already have and your provider bills you. Nine providers take an API key. If you already pay for ChatGPT, sign in with it and add no new cost — and unlike a chatbot tab, the coach keeps your training context on your device.

Anthropic Claude OpenAI GPT Google Gemini OpenRouter DeepSeek Qwen MiniMax Kimi Z.AI GLM ChatGPT sign-in experimental

A sidebar spend meter with a daily cap you set shows what the day cost before the invoice does. It is a local estimate, not a billing control. Set limits with your provider too.

Pricing

A human coach runs $150–300 a month and can take two weeks to reply.

Free, and open in the way that matters.

$0

No tiers, no trial, no upsell screen, no account to create.

  • MIT licensed. Read it, fork it, change it, ship your own version.
  • You pay your model provider, not us. We never touch that money.
  • Nothing is held back. There is no paid version with the good features in it.

Run it 24/7

Want the Telegram coach answering around the clock?

The desktop app answers while your computer is awake. For a bot that replies day and night, deploy your own copy to Railway from the template. It is still self-hosted — your instance, your keys, a sender allowlist so only you can talk to it.

Advanced users can also run the coach as an npm package in a terminal on macOS or Linux.

Try it on your own numbers.

Download the app, paste your intervals.icu key, connect a model, and ask what to ride today.

Not medical advice, and not a substitute for a doctor or a certified coach.

Coming next

Windows desktop app, iOS and Android are in the works. Watch the releases page.