Bike Play reads Cycling Power Service data from a BLE bike trainer and maps effort states to keyboard input. It can also read a Zwift Click controller.
Start the application with the live bike dashboard:
uv run python main.py --guiThe window updates the latest power, cadence, pedaling state, and sample delta in place, with cumulative ride statistics below. Live telemetry is omitted from the terminal in GUI mode, while connection messages and errors remain visible. Closing the window disconnects the readers and exits the application.
To run the dashboard without the Zwift Click reader:
uv run python main.py --gui --disable-zwift-clickGUI mode uses Python's optional tkinter support. Verify it is available with
uv run python -m tkinter if the dashboard cannot open.