Architecture decisions
Structural decisions are recorded in docs/adr. Any structural, privacy, security or compatibility change starts with a new decision.
0001 · An Ubuntu-based appliance
Section titled “0001 · An Ubuntu-based appliance”Ubuntu Server 24.04 LTS ARM64 is the appliance baseline on Raspberry Pi 4 and 5, with at least 4 GB of memory and an SSD recommended. Home Assistant OS would have simplified its own lifecycle but constrained Élise to Supervisor apps; Raspberry Pi OS diverged from the development target. In exchange, Élise owns its updates, backups, hardening, first boot and rollback.
0002 · A Home Assistant bridge
Section titled “0002 · A Home Assistant bridge”A dedicated Home Assistant integration reads the event bus and publishes minimised capability events over authenticated MQTT (QoS 1). Consuming Zigbee2MQTT directly would duplicate device semantics; editing Home Assistant storage is fragile. Élise stays independent of manufacturer payloads; the bridge is regression-tested every month.
0003 · Separate AI, Core decides
Section titled “0003 · Separate AI, Core decides”Élise AI is a local Python service using explainable Isolation Forest scoring. Core owns facts and alerts; a worker supplies features through a versioned API and applies confidence, persistence, coverage and rule gates. An AI owning the event stream would couple models to devices and permit unsafe decisions.
0004 · An isolated camera media plane
Section titled “0004 · An isolated camera media plane”Cameras are optional and subject to consent. RTSP credentials are encrypted; video and audio travel on a separate media plane and never enter analysis, notifications, logs or backups. Live access requires an authorised role and a signed five-minute ticket. Alert images are limited to the room and deleted after 24 hours. There is no fallback to a vendor cloud.
