How to contribute

Our software is open source so you can solve your own problems without needing help from others. And if you solve a problem and are so kind, you can upstream it for the rest of the world to use. Check out our post about externalization.

Most open source development activity is coordinated through our GitHub Discussions and Discord. A lot of documentation is available at and on our blog.

Getting Started

First contribution

Try out some of these first pull requests ideas to dive into the codebase:

Pull Requests

Pull requests should be against the master branch. Welcomed contributions include bug reports, car ports, and any open issue. If you’re unsure about a contribution, feel free to open a discussion, issue, or draft PR to discuss the problem you’re trying to solve.

A good pull request has all of the following:

  • a clearly stated purpose

  • every line changed directly contributes to the stated purpose

  • verification, i.e. how did you test your PR?

  • justification

    • if you’ve optimized something, post benchmarks to prove it’s better

    • if you’ve improved your car’s tuning, post before and after plots

  • passes the CI tests

Car Ports

We’ve released a Model Port guide for porting to Toyota/Lexus models.

If you port openpilot to a substantially new car brand, see this more generic Brand Port guide.


Automated Testing

All PRs and commits are automatically checked by GitHub Actions. Check out .github/workflows/ for what GitHub Actions runs. Any new tests should be added to GitHub Actions.

Code Style and Linting

Code is automatically checked for style by GitHub Actions as part of the automated tests. You can also run these tests yourself by running pre-commit run --all.