Home AssistantHome AssistantContributors
On this page

Home Assistant Core is the Python application at the heart of every Home Assistant installation. It runs the state machine, the event bus, automations, and the thousands of integrations that connect Home Assistant to devices and services. All of it lives in one repository: home-assistant/core.

Most contributions to core are about integrations: adding support for a new device, fixing a bug in an existing one, or bringing an integration up to a higher level of quality. Some contributions go deeper, into the helpers and APIs that every integration builds on.

This area is for you if you write Python, or want to. You do not need to know the whole codebase. Most people start with one integration they use at home, and grow from there.

What you can work on

  • Fix a bug: pick up an issue in an integration you use, reproduce it, and fix it.
  • Improve an integration: add tests, add type hints, or work toward the next tier of the integration quality scale.
  • Add an integration: connect Home Assistant to a device or service it does not support yet.
  • Review: test and review pull requests from others. It is one of the most valuable things you can do.

Start here

Pick the path that matches what you want to do:

  1. Fix something first. Never contributed to core? Start with your first contribution: set up your environment, fix a small bug, and open your first pull request. A small fix teaches you the whole process, also if you want to build an integration later.
  2. Build a new integration. Read how an integration fits in, then follow the tutorial. It builds a small integration from the scaffold to a pull request that meets the Bronze tier. For your own device or service, the project recommends starting in the Marketplace: see does it belong in core.

Then use the rest of this area as your reference: the development workflow for the tools and the pull request process, and the guides below for everything else.

Guides and reference

Who to talk to

When you ask for help, push your work to a branch and share the link. People can help you much faster when they can see the code, and a link keeps the channel readable.

Was this page helpful?

Last updated on .