Home AssistantHome AssistantContributors
On this page

Most people run Home Assistant on Home Assistant OS. They flash an image, plug in the device, and never think about Linux again. That works because of two projects working together:

  • Home Assistant OS is a small, read-only Linux system built with Buildroot, a tool that builds a complete embedded Linux system from source. It boots the device, runs Docker, and updates itself with an A/B scheme: it has two copies of the system, A and B, writes an update to the one that is not running, and falls back to the other when the update does not start. RAUC, an update system for embedded Linux, does that work. The OS Agent, a small program on the host, does host tasks for the Supervisor, like moving the data disk.
  • The Supervisor is a Python program that runs in a container on top of it. It runs Home Assistant Core, apps, and its own plugins, makes backups, installs updates, and keeps an eye on the health of the system.

This area is for developers who want to work on either one. For the OS, you are working with embedded Linux: Buildroot, kernels, bootloaders, and board support. For the Supervisor, you are working with async Python, Docker, and D-Bus, the message bus that Linux services use to talk to each other. Neither needs you to know the other.

How the pieces fit

Manages everything above, in a container of its own

From top to bottom: what runs on what. Select a box to read more about it.

The architecture area explains the big picture. This area goes into the details you need to change things.

Start here

Home Assistant OS

Supervisor

The Supervisor is also what runs apps. Building apps, and the Supervisor API reference they use, live in the Apps area.

Who to talk to

Was this page helpful?

Last updated on .