Debug SSH access on port 22222 currently has two lifecycle mechanisms: dropbear.service is enabled and gated by ConditionFileNotEmpty=/root/.ssh/authorized_keys at boot, and haos-config explicitly starts/stops the service when importing a CONFIG partition. Keys written through any other path - most notably os-agent's AddSSHAuthKey D-Bus method, which the Supervisor is growing an API on top of - do not start dropbear until the next reboot. Add dropbear.path, watching /root/.ssh/authorized_keys, triggering a oneshot dropbear-lifecycle.service that starts dropbear when the file is non-empty and stops it when it is absent. This makes the file the single source of truth for whether debug SSH runs, regardless of the writer, and lets haos-config drop its explicit systemctl calls. Design notes: - PathChanged= only, no PathExists=: an exists-trigger pointed at a oneshot that does not consume the file re-triggers on every deactivation until the start rate limit is hit. Boot-time presence is already handled by the enabled dropbear.service and its ConditionFileNotEmpty. - The lifecycle service is idempotent since the watch may fire for any change in the directory, including temporary files from atomic writes (rename into place is IN_MOVED_TO, which PathChanged= covers). - RequiresMountsFor=/root/.ssh orders the watch after root-.ssh.mount: inotify events do not cross mount points, so a watch armed on the shadowed rootfs inode would never fire. If the bind mount ever goes away, the directive degenerates to a no-op. - Before=haos-config.service arms the watch before the config import can write the file, closing the missed-event race on first boot. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Home Assistant Operating System
Home Assistant Operating System (formerly HassOS) is a Linux based operating system optimized to host Home Assistant and its Apps.
Home Assistant Operating System uses Docker as its container engine. By default it deploys the Home Assistant Supervisor as a container. Home Assistant Supervisor in turn uses the Docker container engine to control Home Assistant Core and Apps in separate containers. Home Assistant Operating System is not based on a regular Linux distribution like Ubuntu. It is built using Buildroot and it is optimized to run Home Assistant. It targets single board compute (SBC) devices like the Raspberry Pi or ODROID but also supports x86-64 systems with UEFI.
Features
- Lightweight and memory-efficient
- Minimized I/O
- Over The Air (OTA) updates
- Offline updates
- Modular using Docker container engine
Supported hardware
The list of supported hardware is defined by ADR-0015. Every new hardware addition must meet at least requirements defined in ADR-0017 and pass through an architecture design proposal.
For documentation explaining details of the individual supported boards, see Board support section of the Home Assistant Developer Docs.
Getting Started
If you just want to use Home Assistant the official getting started guide and installation instructions take you through how to download Home Assistant Operating System and get it running on your machine.
If you're interested in finding out more about Home Assistant Operating System and how it works read on...
Development
If you don't have experience with embedded systems, Buildroot or the build process for Linux distributions it is recommended to read up on these topics first (e.g. Bootlin has excellent resources).
The Home Assistant Operating System documentation can be found on the Home Assistant Developer Docs website.
Components
- Bootloader:
- Operating System:
- Buildroot LTS Linux
- File Systems:
- Container Platform:
- Docker Engine for running Home Assistant components in containers
- Updates:
- RAUC for Over The Air (OTA) and USB updates
- Security:
- AppArmor Linux kernel security module
Development builds
The Development build GitHub Action Workflow is a manually triggered workflow which creates Home Assistant OS development builds. The development builds are available at https://os-artifacts.home-assistant.io/index.html.
