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
Each of the last three weeks has added Load, and Thursday's easy spin was your first real recovery day since the block opened. That leaves room for one hard session this weekend, not two — the long ride on Sunday is the one I would not move.
Five by three minutes at 295–310 W. That is 111–117% of your current 265 W anchor, so every rep sits inside your Z5 band and none of it tips into anaerobic work you would still be paying for on Sunday's long ride.
Three minutes is the shortest rep that holds you at VO₂max long enough to matter, and three easy minutes between them keeps the last rep as good as the first. I stopped at five: the sixth rep is usually the one that turns a good session into a bad week.
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
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
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
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.
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.