OpenSpin
Trainer off HR off

Library

Builder

10m 50% · 5m 50-90% · 5x(3m 115%, 3m 50%) · 1m 300w · 10m free

No ride loaded.

DateWorkoutTimeAvg WNPTSSkJAvg HRBest 5mAgent
No rides yet.

Athlete

Built-in coach

Advanced
Auto-adjust: Easier lowers the step 5% FTP, Harder raises it 3% (not in HR zone 5), 30 s over the HR cap eases 5%. Indoor distance comes from the trainer's virtual speed; FIT files keep it.

Uploads

Garmin: download the .fit from a ride and import it in Garmin Connect, or use the local OpenSpin app for automatic Garmin upload.
Strava upload (optional)
Use your own Strava API app (strava.com/settings/api, callback domain localhost). The secret stays in this computer's data folder.
If Garmin Connect already syncs your rides to Strava, uploading to both creates duplicates on Strava. Keep one: Garmin upload with Garmin's Strava sync, or direct Strava upload.
Advanced
Without it, Strava gets a text summary (NP, IF, TSS, intervals). Strava's API cannot attach photos; download the card from the ride summary to post it by hand.
Strava: download the .fit and upload it on strava.com, or use the local app for direct upload.

Your data

Everything is stored in this browser. Export a backup now and then.
AI agent (optional)
OpenSpin works fully without an agent.