commaai/opendbc

a Python API for your car

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 17 minutes ago
Added to GitGenius on September 20th, 2026
Created on May 31st, 2017
Open Issues & Pull Requests: 285 (+1)
GitHub issues: Enabled
Number of forks: 2,271
Total Stargazers: 3,425 (+0)
Total Subscribers: 112 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 120
New in 7 days: 5
Closed in 7 days: 21
Avg open age: 615 days
Stale 30+ days: 105
Stale 90+ days: 92

Recent activity

Opened in 7 days: 1
Closed in 7 days: 21
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • car (130)
  • bug (129)
  • enhancement (50)
  • car safety (21)
  • hyundai (15)
  • cleanup (13)
  • toyota (13)
  • ford (12)

Detailed Description

opendbc is a Python API for controlling and reading data from vehicles equipped with electronic steering, gas, and brake actuators.

The project addresses the challenge of programmatically interfacing with modern cars by providing a unified Python library that abstracts away the complexity of CAN bus communication. It works by maintaining a repository of DBC files that describe the message formats for different vehicle models, then layering a high-level car interface library on top of a lower-level CAN message parser. This allows developers to read sensor data like speed and steering angle, and send control commands for steering, acceleration, and braking without needing to understand the underlying CAN protocol details for each vehicle.

The tool suits developers building vehicle automation features, particularly those working on advanced driver assistance systems. It is designed primarily to support openpilot, an open-source driving automation system, but the library is general-purpose enough for any application requiring programmatic vehicle control. The project provides example programs including a joystick controller for testing, and the supported cars list documents which vehicles are compatible and at what level of functionality. Porting a new car requires connecting to its CAN buses via a comma four device and car harness, then adding DBC files and control logic; the project notes that if similar cars are already supported, much of this work may already be complete.

The project maintains an organized codebase with distinct modules for DBC file storage, CAN message parsing and building, high-level car interfaces, and functional safety validation. Development activity shows consistent engagement with the community through documentation, example code, and structured contribution guidelines that explain the car porting process in detail.