Power changes as your body responds. Zone2 watches your heart rate and quietly adjusts your smart trainer to help keep the ride in your easy aerobic band — so you finish the ride you intended, not one you accidentally raced.
Available on iPhone & iPad · heart-rate strap & smart trainer over Bluetooth
Pick a band and pedal. Zone2 progressively adjusts the trainer to help keep your heart rate in the easy aerobic zone — and backs off faster than it pushes.
A hard heart-rate ceiling, an internal command limit, and a lost-signal rule keep handled control faults from chasing harder power. Those safety decisions live in a tested core, not the UI.
No account, no servers, no tracking. Your rides stay on your device. Write to Apple Health if you want; export a standard FIT file any time.
Use an observed maximum from Apple Health, estimate from your age, or enter a maximum heart rate you already know. You confirm the band before it is saved.
Zone2's decision-making — the controller and the safety invariants — lives in a portable, I/O-free core that the same tests exercise from Rust, Python, and Swift. I wrote up how it works, what the research says, and what I got wrong along the way, plus a small set of real (scrubbed) ride data so you don’t have to start from nothing like I did.