TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/commaai/openpilot/llms.txt
Use this file to discover all available pages before exploring further.
replay tool lets you relive a recorded drive without any hardware. It reads a route from your comma account or from a local directory and re-publishes every logged openpilot message exactly as it was originally sent — camera frames, sensor data, CAN packets, and control outputs — so you can run openpilot code against real data and watch how it behaves. Combined with the openpilot UI or PlotJuggler, replay is the standard way to debug, reproduce issues, and test code changes without being in a car.
Authentication
Before replaying routes from your comma account, authenticate once with:Replay modes
Demo route (no account needed)
Run replay immediately against a built-in public route to verify your environment is working:
Remote route from comma connect
Replay any route from your comma account. Find route identifiers at connect.comma.ai.
Local route from disk
Replay segments stored locally. The directory should contain segment folders named with the route ID.
CAN replay to a physical device
Replay CAN messages through a panda jungle to a connected comma device, making the device behave as if it is in a real car.This requires a panda jungle connected to your PC and a comma device or panda connected to the jungle via OBD-C.
Full options reference
Visualizing replay in the openpilot UI
Replay publishes all openpilot service messages onto the local message bus. You can connect the openpilot UI or any other openpilot process to the running replay just as it would connect to a live device.Watching all three cameras with watch3
Use the--dcam and --ecam flags to include the driver-facing and wide road cameras, then launch watch3 to view all three camera streams simultaneously:
Using replay with PlotJuggler
Stream replay messages into PlotJuggler to plot any signal from the route:Sending messages via ZMQ
By default, replay sends messages over MSGQ. To use ZMQ instead (for example, when connecting to tools running on another host), set theZMQ environment variable:
Common development workflows
Testing a code change against real data: make a change to an openpilot process (for example,controlsd), start replay with the route that exercises the bug, and run the modified process alongside it. The modified process receives the same inputs as the original recording.
Reproducing a reported issue: grab the route identifier from a user report on connect.comma.ai and replay it locally with the UI running to see exactly what the car saw.
Filtering services: use --allow and --block to control which services replay publishes. This is useful when you want to run a single openpilot process live while keeping all other services mocked from the recording.
Route replay requires no hardware — only a comma account and an internet connection to download the route. CAN replay (using
can_replay.py) requires a panda jungle connected to your PC and a comma device or panda connected to the jungle via OBD-C.