comma.ai develops openpilot as open-source software so that anyone can solve their own problems and, when they’re ready, share those solutions with the entire community. Development is coordinated through Discord and GitHub. Whether you write code, drive regularly, or report problems you encounter, there are meaningful ways to contribute.Documentation 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.
What openpilot prioritizes
openpilot’s priorities are safety, stability, quality, and features — in that order. All development is in service of comma’s mission to solve self-driving cars while delivering shippable intermediaries. Pull requests that don’t advance that mission, regardless of effort, are unlikely to be merged.What gets merged
The probability of a PR being merged depends on two things: the value it delivers and the effort required to review and land it. Simple, well-tested bug fixes are the easiest to get merged. New features are the hardest.Typo and doc fixes
Small, precise, and easy to review. An excellent first contribution. Example PR
Removing unused code
Keeps the codebase clean with low risk. Example PR
Simple car model ports
Extends openpilot support to more vehicles with minimal surface area. Example PR
Car brand ports
Broader vehicle support with well-scoped, testable changes. Example PR
What doesn’t get merged
If a PR offers some value but will take significant effort to review and land, it will be closed. Focus on scope and clarity.
- Style changes — Code is art; it’s up to the author to make it beautiful. Style-only PRs will be closed.
- 500+ line PRs — Break large changes into smaller, focused PRs.
- PRs without a clear goal — Every PR must have a single, well-defined purpose.
- UI design changes — There is no reliable review process for this yet.
- New features — openpilot is considered mostly feature-complete. Most feature PRs are closed immediately. Forks can and do offer features that upstream openpilot doesn’t.
- Negative expected value PRs — Changes where the risk or validation cost exceeds the benefit. The risk can sometimes be mitigated by getting a failing test merged first.
Your first contribution
openpilot bounties is the best starting point. The project goes into detail on expectations when working on a bounty. Many bounties don’t require a comma device or a car — they’re approachable from a standard development environment.Pull request requirements
Pull requests should target themaster branch. A good PR includes all of the following:
Verification
Describe how you tested the change. For tuning improvements, include before and after plots. For performance changes, include benchmarks.
Justification
If you’ve optimized something, post benchmarks. If you’ve improved car tuning, post before/after comparisons.
Contributing without code
Code contributions aren’t the only way to improve openpilot. The following all have a real impact on the quality of the software:Bug reports
Report software bugs in GitHub Issues. Report driving problems in the
#driving-feedback channel on Discord.Driver camera uploads
Opt into driver camera uploads from your comma device settings. This data directly improves the driver monitoring model.
Training data
Connect your device to Wi-Fi regularly so comma can pull route data for training better driving models.
Data annotation
Annotate images in the comma10k dataset to improve perception model training.
nightly branch and report any issues you encounter. This branch is built the same way as a release, making it a good signal for pre-release quality.
Contributing training data (for forks)
If you maintain a fork and want your data to be eligible for the training set, three rules apply:- Your cereal messaging structs must be compatible with upstream.
- Do not change how any stock messaging fields are set — including
selfdriveState.enabledorcarState.steeringAngleDeg. Create your own structs for custom behavior. - Do not include cars that aren’t supported in upstream platforms. Create new opendbc platforms for vehicles you want to support outside of upstream.
