Independent · iPhone + Apple Watch · for the Specialized Turbo Levo

The ride is a duet.

Every e-bike app shows you the bike's numbers. OpenLevo shows the conversation — your legs in green, the motor in blue, negotiating over a shared budget of amber watt-hours. It connects straight to your Levo over Bluetooth and answers one honest question at every moment of the ride.

You 38% of the work Motor 62%
No account. Ever. No cloud. Rides live on your phone. No trackers. On this site either. No speed unlock. Full stop.

One question, answered at every moment

OpenLevo is built as a ride day. Each surface exists to answer exactly one thing.

Before the ride — "Am I ready?"

The Trailhead: connection, charge, verified config, and how far today's battery actually goes — per assist mode, on your loop, with honest error bars.

See the Trailhead →

At rest — "Set it up my way"

The Studio: tuning profiles named for how they ride. Every change shown before it happens, applied only at a standstill, verified by reading it back from the motor.

See the Studio →

During — "Can I finish the way I want to ride it?"

The Cockpit: watt-hours as the hero, the live rider-vs-motor duet, and "one more lap?" recomputed as you ride. Reads in under a second, gloved, at arm's length.

See the Cockpit →

After — "What did I do, and what did the bike do?"

The Ride Story: your share of the work, climb by climb — plus the Garage, a long-term health and ownership record that's worth money at resale.

See the Story →

Honesty is the interface

Three rules that never bend, on every screen, chart, and export.

The rules

Color is meaning Rider = green. Motor = blue. Battery energy = amber. Identical on phone, Watch, and exports. Red is reserved for genuine risk — when you see it, it means something.
Every number says where it came from measured read from the bike · derived computed from measurements · estimate model output, shown with a ~ and a band. A value never quietly changes tier — if the stream drops, it visibly goes stale.
Estimates never dress up as facts Other apps say "47 mi". OpenLevo says "~290 Wh left ± 35 · estimate" — and the band widens honestly when the model knows less: new bike, cold morning, no elevation profile.

Riding · 52 min

REC ●
341Wh
battery 51% · burn 23.3 Wh/mi
measured · live
The duet · this climb
You 210 W · 34% Motor 340 W
Speed
10.7 mph
Cadence
82 rpm
Gradient
+9%
derived · barometer
Motor temp
136°
normal
One more lap of Emerald Ridge? Trail ~105 Wh ±30
estimate · Eco ~180 ok · Turbo ~10 — risk caution

The Cockpit, live. Wh as the hero — the number range math actually runs on.

What OpenLevo will never do

The refusals are part of the product. Read the full list — and why — on the Open & honest page.

No speed unlock, in any form

No slider, no easter egg, no hidden gesture. Derestriction is illegal on trails, voids your warranty, cooks the motor, and gets riding access revoked for everyone. No code path in the app can write that parameter.

No silent tuning

The app never writes to the motor while you're moving and never claims success it didn't verify. Every change: at rest, shown before → after, confirmed, read back.

No fake certainty

A range projection is an estimate and always looks like one. A disconnected bike shows stale values marked stale — never a number pretending to be live.

No account, no cloud, no tracking

Pairing, riding, and recording work with zero network. Your rides are files on your phone that you can export — not rows in someone else's database.