Supervisor development
These instructions are for development of the Supervisor, the Supervisor frontend panel and the hassio integration, by interacting with a development or remote supervisor, this assumes that you are using a development machine to do the development, these instructions will also use devcontainer and other tools that rely on Docker, follow our devcontainer development environment guide to set up a proper development environment first.
Supervisor development
The instructions here is for development of the Supervisor itself.
- Fork the Supervisor repo (https://github.com/home-assistant/supervisor) and clone it to your development machine.
- Open the repo with Visual Studio Code devcontainer.
- Create a branch in your fork.
- Do your changes.
- Test your changes with the instructions below.
- Commit and push your changes, and create a PR against the
mainbranch at https://github.com/home-assistant/supervisor
Local testing
Start the task "Run Supervisor" in Visual Studio Code, this will start an instance of the Supervisor inside the devcontainer you can use to test your changes.
When the initializing is complete you can access the Home Assistant frontend on http://localhost:9123
Testing on a remote system
- Access the remote system with SSH or with direct console access.
- Check the architecture on the machine with
ha infoor justinfoif it's Home Assistant OS. - On your development machine, build and push your Supervisor image to a container registry. Using GitHub Container Registry as an example (adjust
YOUR_GH_USERNAMEand the architecture to match what you found in step 2):
docker build \
--platform linux/arm64 \
--tag ghcr.io/YOUR_GH_USERNAME/aarch64-hassio-supervisor:latest \
--push \
.
All examples will have values you need to adjust.
- Adjust
linux/arm64andaarch64with the architecture you found in step 2. - Adjust
YOUR_GH_USERNAMEto match your GitHub username or organization. - To push an image to GitHub Container Registry like in the example above, you need to authenticate using a personal access token with appropriate scopes. See the GitHub Container Registry documentation for more details.
The architecture used in --platform option is not the same as the one used in Home Assistant. While amd64 in Home Assistant corresponds to --platform linux/amd64, aarch64 in Home Assistant corresponds to --platform linux/arm64 in Docker.
- On your remote system change the channel to
devwithha supervisor --channel devor justsupervisor --channel devif it's Home Assistant OS. - Pull down your Supervisor image:
docker pull ghcr.io/YOUR_GH_USERNAME/aarch64-hassio-supervisor:latest
Docker images uploaded to GHCR are by default private. To download them, you will either need to authenticate using a personal access token on the remote system as well or change the visibility of the package on GitHub.
- Tag your Supervisor image as the expected local name:
docker tag ghcr.io/YOUR_GH_USERNAME/aarch64-hassio-supervisor:latest ghcr.io/home-assistant/aarch64-hassio-supervisor:latest
- Restart the
hassio-supervisorservice withsystemctl restart hassos-supervisor - Check for issues with
journalctl -fu hassos-supervisor
Integration development
The instructions here is for development of the hassio integration, we're going to assume that you have a Home Assistant Core development environment set up, and that you have Supervisor API Access set up.
To configure Home Assistant Core to connect to a remote supervisor, set the following environment variables when starting Home Assistant:
SUPERVISOR: Set to the IP of the machine running Home Assistant and port 80 (the API proxy add-on)SUPERVISOR_TOKEN: Set this to the token that you found Supervisor API Access
SUPERVISOR=192.168.1.100:80 SUPERVISOR_TOKEN=abcdefghj1234 hass
Your local Home Assistant installation will now connect to a remote Home Assistant instance.
Frontend development
All supervisor frontend panels are deprecated and won't be loaded with Home Assistant core >= 2026.2
Home Assistant frontend uses supervisor through a core proxy. Checkout the Home Assistant frontend development environment on how to develop the frontend.
Supervisor API access
To develop for the hassio integration and the Supervisor panel, we're going to need API access to the supervisor. This API is protected by a token that we can extract using a special add-on. This can be done on a running system or with the devcontainer.
- Add our developer Add-on repository: https://github.com/home-assistant/addons-development
- Install the Add-on "Remote API proxy"
- Click Start
- The token will be printed in the logs
The add-on needs to keep running to allow Home Assistant Core to connect.
The Remote API proxy token has slightly less privileges than Home Assistant Core has in production. To get the actual token with full privileges, you need to SSH into the host system and run:
docker inspect homeassistant | grep SUPERVISOR_TOKEN
Note that either token can change after a reboot or update of OS/container.