Supervisor
What the Supervisor does, what it runs, and how it relates to apps and the Supervisor API.
The Supervisor is what lets users manage their whole system from Home Assistant. It is a Python program, in the home-assistant/supervisor repository, that runs as a container on Home Assistant OS. Its jobs:
- Run Home Assistant Core, and update it. When an update fails to start, it rolls back.
- Install, run, and update apps.
- Make and restore backups.
- Update Home Assistant OS, and itself.
- Run the plugins that provide DNS, audio, multicast, the command line, and a status page.
- Manage the host: network, hostname, disks, and time, through D-Bus and the OS Agent.
- Check the system for problems, and offer fixes.
Everything the Supervisor runs is a Docker container. Most of them are on a private bridge network called hassio, 172.30.32.0/23. Core and the multicast plugin use the host network instead, and so do apps that ask for it:
| Container | What it is | Address |
|---|---|---|
hassio_supervisor |
The Supervisor | 172.30.32.2 |
homeassistant |
Home Assistant Core | Host network |
hassio_dns |
DNS plugin | 172.30.32.3 |
hassio_audio |
Audio plugin | 172.30.32.4 |
hassio_cli |
CLI plugin | 172.30.32.5 |
hassio_observer |
Observer plugin | 172.30.32.6 |
hassio_multicast |
Multicast plugin | Host network |
app_<slug> |
An app | From 172.30.33.0/24, or the host network |
The Supervisor container itself is started by haos-supervisor.service on the host, see Home Assistant OS. Everything else is started by the Supervisor.
The Supervisor has a REST API at http://supervisor, on the hassio network. Home Assistant Core uses it through the hassio integration, the ha command line uses it through the CLI plugin, and apps use it when they ask for access in their configuration. Each caller gets its own token, and a role that limits what it may do.
Apps are where most people meet the Supervisor. The Supervisor installs them from app repositories, builds or pulls their images, and runs them with the options, ports, and access their configuration asks for. Building apps, and the full Supervisor API reference, are documented in the Apps area.
- Set up a development environment to run the Supervisor on your own machine.
- Architecture explains how the code is organized.
- Jobs and the resolution center are the two mechanisms most changes touch.
- Supervisor architecture: How the Supervisor code is organized, how it starts, and how updates and backups work inside it.
- Jobs: How the Supervisor runs work as jobs, with conditions, concurrency limits, throttling, and progress that clients can follow.
- The resolution center: How the Supervisor finds problems with checks and evaluations, tracks them as issues, and fixes them with suggestions.
- Plugins: The five plugins the Supervisor runs next to Home Assistant Core, what each one does, and where its code lives.
- Set up a development environment: Run the Supervisor from source in its development container, run the tests and linters, and try your build on a real system.
- Debug the Supervisor: Attach a Python debugger to a running Supervisor, locally or on a remote device, and find its logs.
- Connect Core to a Supervisor: Run Home Assistant Core from your development environment against a real Supervisor, to work on the hassio integration.