PedalHUD puts your watts and heart rate on camera.
PedalHUD is a macOS app that connects to supported Bluetooth trainers and heart rate monitors, then publishes a virtual camera with live power and heart-rate overlays for Zoom, Google Meet, Slack, and other apps that support virtual cameras.
- Connects to supported Bluetooth trainers and heart rate monitors.
- Composites live ride telemetry over a real webcam feed.
- Publishes the result through a CoreMediaIO virtual camera extension.
- Lets you preview the output locally before joining a call.
- Supports signed releases with in-app Sparkle updates.
- Open PedalHUD and select your webcam as the source camera.
- Connect your Bluetooth power meter and/or heart rate monitor using the dropdowns in the app.
- Click Activate Virtual Camera to register the virtual camera with macOS.
- In your video app (Slack, Zoom, Meet, etc.), choose PedalHUD Camera from the camera dropdown.
Your live power and heart rate overlay will now appear on your camera feed for everyone in the call.
Download the latest signed release from GitHub Releases.
- Download the latest archive.
- Move PedalHUD.app into
/Applications. - Open the app from
/Applications. - Grant Bluetooth and camera access when macOS prompts you.
- Click Activate Virtual Camera.
- Approve the system extension in System Settings > Privacy & Security if macOS asks.
- In Slack, Zoom, Meet, or another video app, choose PedalHUD Camera as your camera.
Installed builds use Sparkle to check for updates from inside the app.
- macOS 15.0 or newer
- A supported webcam
- Bluetooth trainer (tested with Wahoo KICKR) and/or Bluetooth heart rate monitor — at least one is needed for a good experience
PedalHUD ships with a checked-in Xcode project and a Swift package for shared code.
- macOS 15.0 or newer
- Xcode 16.2 or newer
- An Apple Developer account if you want to sign and activate the virtual camera locally
- Copy
Config/Local.xcconfig.exampletoConfig/Local.xcconfig. - Fill in your team ID and bundle ID prefix.
- Open
PedalHUD/PedalHUD.xcodeprojin Xcode, or build from the command line.
swift test
xcodebuild -allowProvisioningUpdates \
-project PedalHUD/PedalHUD.xcodeproj \
-scheme PedalHUD \
-destination 'platform=macOS' \
-derivedDataPath .build/xcode \
buildTo test the virtual camera reliably, install the built app into /Applications:
rsync -a --delete '.build/xcode/Build/Products/Debug/PedalHUD.app/' '/Applications/PedalHUD.app/'
open -n /Applications/PedalHUD.appMore detail lives in docs/xcode-project-setup.md.
Apps/PedalHUDMac- macOS host appApps/PedalHUDCameraExtension- CoreMediaIO virtual camera extensionSources/PedalHUDCore- shared overlay, metrics, and configuration codedocs/- architecture, setup, and contributor documentation
- Launch and test the copy installed in
/Applications, not an Xcode-run copy. - If the virtual camera does not appear in video apps, restart PedalHUD first.
- If macOS shows old extension versions waiting to uninstall, reboot before testing again.
- If you change extension-rendering code locally, bump the app and extension versions together before re-testing.
Issues and pull requests are welcome. Start with CONTRIBUTING.md.
PedalHUD is released under the MIT License.

