* compile_modeld.py * update estimates * missing image=2? * Revert "missing image=2?" This reverts commit 2f5952eb63ba1e3f24cbf5769e6b5e9170d7f0a6. * Revert "update estimates" This reverts commit 1f72feef2ffdec6126e3c941e899b46ace7b4b65. * Revert "compile_modeld.py" This reverts commit f10541502efca02725f368deda2a21d1f786f57d. * load warp in ModelState init * dead code * prep * compile modeld * update SConscript * tmp save plot locally * Revert "tmp save plot locally" This reverts commit ec22f15161ad3b0241a097546b35860f989219f5. * openpilot hacks? * no float16 * tmp more chunks * Revert "tmp more chunks" This reverts commit 9e1d9b4d0dc36ff530d2a70b565fbfabd7afb00d. * Revert "no float16" This reverts commit 6204956e98e3c0818ed1985ede8eeccb810f63e3. * realize boundaries * Revert "realize boundaries" This reverts commit ffaa19259eba70944e7793e8f51a0f87089531b3. * prune=False? * Reapply "tmp more chunks" This reverts commit 2599c41cea93b4a6b4e946cdffc6a617663a7d23. * tg bug? * load first? * Revert "load first?" This reverts commit f643d082d76a424b23295e254179eb111e936e61. * revert * Reapply "tmp save plot locally" This reverts commit 1b95b82ee58654bd908b1cb04ab0ddbcd1a5955d. * 0 tol pc * warp -> modeld * rename * bypass chunking? * dont chunk * Revert "dont chunk" This reverts commit cc97fc67b3203456e123f02babe5c83b87c7e264. * dont chunk * debug * Revert "debug" This reverts commit b3c2f2e7a095fd32f8d8562a68fd1cca42357eac. * Revert "dont chunk" This reverts commit 42bd9b6f6ad0722c50348ba11ba7e2a64fdf997d. * Revert "bypass chunking?" This reverts commit ad5422a93483ffd8a59ba62e5fb72ced3b5d04d0. * corrupt model outputs * Revert "corrupt model outputs" This reverts commit 245feb94480e02f83a20b65a9488652bcbfc88b0. * image=0 for warp, match master * dedupe enqueue * pass traffic convention * tg buffer for desire * dedupe buffer creation * compile_modeld: nuke stale cached pkl before compiling The UNSAFE CI checkout keeps gitignored files (.pkl, .sconsign.dblite), so stale pkl files from previous commits can persist and be reused instead of being recompiled. Delete them explicitly before compiling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test vs compile * all outputs need to be different on different inputs * randomize numpy inputs * randomize on every step * SConscript: nuke stale pkl+chunks before compile_modeld Move the stale artifact cleanup from compile_modeld.py into the SConscript build command. This ensures stale gitignored pkl and chunk files are deleted even if scons decides to skip the compile step (due to a stale .sconsign.dblite from UNSAFE CI checkout). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * compile_modeld: restore Context(IMAGE=0) for warp The warp operations must run under IMAGE=0 to avoid QCOM image texture optimizations that corrupt the output buffer after ~33 frames. This was accidentally commented out in a855173. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * modeld: create SubMaster before model loading Move PubMaster/SubMaster creation before the model loading step. During model loading (3.5s+), process_replay may send liveCalibration. If SubMaster doesn't exist yet, the message is dropped and the warp transform stays as zeros, producing garbage warped images. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Revert "modeld: create SubMaster before model loading" This reverts commit 968c987c2fbb3fce141c4e345d10ddea559b6c50. * stale metadata? * claude debug * Revert "claude debug" This reverts commit 49e754c6affa45a8ea8834588a00227b8090b17a. * Revert "stale metadata?" This reverts commit 870388513c0d4a67dcf970cd277b6db56cb2b478. * modeld: realize jit outputs before parsing * Update modeld.py * modeld: fix NameError by removing redundant MODELS_DIR definition * test buffers in test vs. compile * 2x inputs before running * fixup 2x inputs test * realize onnx weights? * Revert "realize onnx weights?" This reverts commit 49c8b9a505db38ff22f342db011a3a6b6526d398. * move openpilot_hacks flag to sconscript * stricter test vs compile * correct timings * more run more fail? * Revert "more run more fail?" This reverts commit 9e94bb63940751ec29e81b634c42449113e1f2e5. * numpy shenanigans * correct shapes * dont assert timings for now * Revert "correct shapes" This reverts commit 5b9ff6c84c0022327d21801d179e9e51c39e8f78. * Revert "numpy shenanigans" This reverts commit b4f6fb3078d7e9b09698895b88728fd8eea8c8a8. * no need to nuke * comment unused * don't use NPY device * copy instead of from_blob * to device before jit * Revert "to device before jit" This reverts commit 7a59ed9b1ac88657b5a3917986b6ff92e59a2ee3. * Revert "copy instead of from_blob" This reverts commit 196c4892a06ffba89ef631876372cecf137cc1b4. * Revert "don't use NPY device" This reverts commit 18abf43bbac46ad47a60c03dd8d1ef40b3f59227. * 3 runs is enough * no_memory_planner=1 * lint * restore model_replay.py * on policy -> policy * unused * prepare only enqueues full images * warp with image=2? * unused args * test vs compile, check different inputs different outputs * avoid uop cache collision * dont need realize here * misc * input queues diverged * strict zip * monkey patch for now * memory planner * prev desire correct order * dedupe pkl paths / compile targets * don't change behavior, warp and enqueue frames when skipping model eval * actually prepare only * warm up warp jit * correct path * oops * explicit warmup * need continuous + can't have dupplicate jit inputs * whitespace * bufs -> input_queues * master tg * /N_RUNS * bump tg, remove uop cache patch * more readable * Revert "bump tg, remove uop cache patch" This reverts commit 499acca2591becd389de4025943f9e776a5b337c. * missing dep --------- Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
openpilot
openpilot is an operating system for robotics.
Currently, it upgrades the driver assistance system in 300+ supported cars.
Docs · Roadmap · Contribute · Community · Try it on a comma four
Quick start: bash <(curl -fsSL openpilot.comma.ai)
Using openpilot in a car
To use openpilot in a car, you need four things:
- Supported Device: a comma four, available at comma.ai/shop/comma-four.
- Software: The setup procedure for the comma four allows users to enter a URL for custom software. Use the URL
openpilot.comma.aito install the release version. - Supported Car: Ensure that you have one of the 275+ supported cars.
- Car Harness: You will also need a car harness to connect your comma four to your car.
We have detailed instructions for how to install the harness and device in a car. Note that it's possible to run openpilot on other hardware, although it's not plug-and-play.
Branches
Running master and other branches directly is supported, but it's recommended to run one of the following prebuilt branches:
| comma four branch | comma 3X branch | URL | description |
|---|---|---|---|
release-mici |
release-tizi |
openpilot.comma.ai | This is openpilot's release branch. |
release-mici-staging |
release-tizi-staging |
openpilot-test.comma.ai | This is the staging branch for releases. Use it to get new releases slightly early. |
nightly |
nightly |
openpilot-nightly.comma.ai | This is the bleeding edge development branch. Do not expect this to be stable. |
nightly-dev |
nightly-dev |
installer.comma.ai/commaai/nightly-dev | Same as nightly, but includes experimental development features for some cars. |
To start developing openpilot
openpilot is developed by comma and by users like you. We welcome both pull requests and issues on GitHub.
- Join the community Discord
- Check out the contributing docs
- Check out the openpilot tools
- Code documentation lives at https://docs.comma.ai
- Information about running openpilot lives on the community wiki
Want to get paid to work on openpilot? comma is hiring and offers lots of bounties for external contributors.
Safety and Testing
- openpilot observes ISO26262 guidelines, see SAFETY.md for more details.
- openpilot has software-in-the-loop tests that run on every commit.
- The code enforcing the safety model lives in panda and is written in C, see code rigor for more details.
- panda has software-in-the-loop safety tests.
- Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.
- panda has additional hardware-in-the-loop tests.
- We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.
MIT Licensed
openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.
THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT. YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS. NO WARRANTY EXPRESSED OR IMPLIED.
User Data and comma Account
By default, openpilot uploads the driving data to our servers. You can also access your data through comma connect. We use your data to train better models and improve openpilot for everyone.
openpilot is open source software: the user is free to disable data collection if they wish to do so.
openpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs. The driver-facing camera and microphone are only logged if you explicitly opt-in in settings.
By using openpilot, you agree to our Privacy Policy. You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.