Skip to main content

Add a Worker Node

The worker is the only Superhome node that runs as a plain Docker container (the master runs as the HAOS app). It is typically a separate small computer, such as a Raspberry Pi 5 or a mini-PC. Any machine that can run Docker works.

The camera is configured on the master

You do not set the camera URL on the worker. The worker reads its rtsp_url and other settings from the configuration of the Superhome app in Home Assistant. Remember to set inference_mode to master-worker there (see Master-Worker Cluster).

Prerequisite: Docker

The worker runs as a Docker container, so the worker machine needs Docker (with the Compose plugin) installed. Verify with docker --version and docker compose version.

If it isn't installed yet:

  • Linux (Pi 5, Debian/Ubuntu, etc.): the official convenience script installs Docker + Compose in one go with curl -fsSL https://get.docker.com | sh. See docs.docker.com/engine/install.
  • Windows / macOS: install Docker Desktop, which bundles Compose.
Run Docker without sudo (Linux)

After installing, add your user to the docker group so you don't need sudo: sudo usermod -aG docker $USER, then log out and back in.

Steps

1. Generate an enrollment key on the master

Open the Superhome panel in the Home Assistant left sidebar (this is the Hub), go to the Cluster section, and click Generate Enrollment Key. A single key like 123456-a1b2c3d4 is displayed (a 6-digit PIN combined with the master fingerprint) with a Copy button. The key is single-use and expires automatically after a short time, so do this step right before you launch the worker.

2. Launch the worker container

On the worker machine, create a dedicated folder (e.g. superhome-worker) and, inside it, a file named docker-compose.yml with this content:

services:
superhome-worker:
image: ghcr.io/superhome-vision/superhome-worker:latest
ports:
- "8765:8765"
restart: unless-stopped
user: "1000:1000"
cap_drop:
- ALL
environment:
SUPERHOME_ROLE: worker
SUPERHOME_MASTER_HOST: "192.168.1.X:8765" # IP of your HA host, then :8765 (see note below)
SUPERHOME_ENROLLMENT_PIN: "123456-a1b2c3d4" # enrollment key from step 1
volumes:
- superhome-worker-data:/data # persistent worker data
- /etc/machine-id:/etc/machine-id:ro

volumes:
superhome-worker-data:

Then open a terminal inside that same folder and start it:

  • Linux / macOS: open a terminal in the folder.
  • Windows: open the folder in File Explorer, then either type powershell in the address bar and press Enter, or right-click inside the folder → Open in Terminal.
docker compose up -d

docker compose looks for docker-compose.yml in the current directory, so the command must be run from the folder you created.

Getting SUPERHOME_MASTER_HOST right

Use the form <HA_IP>:8765 (e.g. 192.168.1.50:8765):

  • <HA_IP>: the bare IP of your Home Assistant host, with no http://, https://, or trailing slash.
  • :8765: Superhome's own port, not Home Assistant's 8123. Leave it as 8765.

3. Approve the worker on the master

After the worker starts and enrolls, it appears in the master Hub → Cluster. Approve it there. A newly enrolled worker stays inactive until you approve it.

4. Restart the worker

Once approved, restart the worker container so it picks up its credentials and configuration:

docker compose restart

5. Verify

In the master Hub → Cluster, the worker should now show as connected. The enrollment key is single-use and is no longer valid once enrollment completes.

No enrollment key needed after a restart

Restarting or updating the worker container does not require a new enrollment key; it reconnects on its own. You only need a fresh key if you recreate the worker from scratch.

Windows: Docker tips

If Docker Desktop won't start on Windows, check the following from PowerShell:

  • WSL is running: wsl --status should report an active default distribution. If WSL isn't installed/updated, run wsl --install (or wsl --update) and reboot.
  • Virtualization is enabled: Docker Desktop needs hardware virtualization. Open Task Manager → Performance → CPU and confirm Virtualization: Enabled. If it's disabled, turn on virtualization (VT-x / AMD-V / SVM) in the BIOS/UEFI.

Something not working?

If the worker enrolls but the live stream doesn't show, detections never trigger, or the cluster gets stuck, see the Troubleshooting page.