Implements both new subsystems from the project plan end to end: - hosts/thin-client/: Debian live-build Sway kiosk image — greetd autologin, wayvnc (replaces RDP, per open decision #1), thinclient-agent (HA MQTT discovery + swaymsg control, the sole LLM-reachable surface), mpv/mpv-mpris, spotifyd/Steam Link, minimal-chrome Firefox with uBlock Origin/SponsorBlock preinstalled, a fullscreen-aware now-playing widget, persistent audio-output selection, outbound RDP/VNC via Remmina, HA mobile-app text/pointer remote control via ydotool, an optional opt-in gesture-control camera (MediaPipe hand tracking, off by default at two independent gates), a maintenance-shell keybind, a German default keymap, and an idle-timeout photo slideshow from a new gallery SMB share on the container host. - digest-engine/: quarter-daily LLM digest — email/Signal/Telegram/Discord/ WhatsApp ingestion (WhatsApp via a headful-Chromium bridge, opt-in, highest risk), news (including RCI/marxist.com theoretical sources and a broad mainstream/state-affiliated outlet list), financial indicators, flight/naval traffic and an OPNsense Suricata-alerts summary as political-analysis evidence, Grocy/CalDAV household ingestion, an evening-only recipe and shopping-list suggestion from soon-to-expire stock, and a vendored digest-canvas SDK (globe/window/glow) rendering compact and full views. A digest that goes unviewed (no thin-client canvas display or voice playback) is merged into the next run instead of being discarded, tracked via a retained MQTT message on the shared broker. Both are wired into hosts/container-host/scripts/setup-container-host.sh via the existing ENABLE_X/X_BLOCK pattern, off by default. docs/project-plan.md and README.md are updated to match; remaining open decisions and manual- verification items are tracked in-repo (project-plan.md §4, digest-engine/ README.md, hosts/thin-client/README.md). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPD1RhBsjdFKFLpMCLiVT6 |
||
|---|---|---|
| digest-engine | ||
| docs | ||
| hosts | ||
| .gitignore | ||
| README.md | ||
README.md
AI-Managed Smart Home
Local-first, open-source smart home: Home Assistant + Zigbee + RuView (CSI presence)
- Bermuda (BLE identity) + local LLM (Ollama) + Frigate (peephole face recognition)
- Grocy (kitchen kiosk) + Nextcloud calendar sync + a Sway thin-client media station
- a quarter-daily LLM-generated digest.
See docs/project-plan.md for the full hardware list,
software stack, and phased implementation plan.
Repo layout
docs/ Project plan and design notes
hosts/
container-host/ Docker Compose stack: HA, Mosquitto, Zigbee2MQTT,
Frigate, Grocy, Node-RED, monitoring, etc.
configs/ Per-service config files (mosquitto.conf, etc.)
scripts/ Host setup / bootstrap scripts
llm-host/ Ollama + GPU host setup (separate physical machine)
thin-client/ Sway kiosk/media-station ISO (live-build) + thinclient-agent
firmware/
ruview/ RuView ESP32-S3 CSI presence node configs
esphome-ble-proxy/ ESPHome configs for Bermuda BLE proxy nodes
identity/ Face<->MAC<->name correlation logic (Node-RED flow
export once stabilized, or a Python service)
digest-engine/ Quarter-daily LLM digest: mail/message/news/financial
ingestion, LLM synthesis, digest-canvas SDK rendering
Status
- Project plan drafted
- Container host setup script v1 (HA, Mosquitto, Zigbee2MQTT USB, Frigate, Grocy)
- Node-RED + monitoring (Netdata) + dashboard (Homepage) + ntfy + Portainer added to compose stack
- Backup (restic) setup — scripted, off by default until a backup target is picked (
ENABLE_BACKUPS) - Bermuda / ESPHome BLE proxy configs
- RuView node configs
- Frigate peephole camera config (real RTSP details)
- Grocy kiosk (Pi + touchscreen) setup
- LLM host (Ollama) setup script
- CalDAV / Nextcloud calendar integration notes
- Identity correlation flow (Node-RED)
- Sway thin-client ISO (live-build) + thinclient-agent — built, not yet boot-tested on real hardware; RDP replaced by wayvnc (resolved), remaining open items (mic-enabled rooms, exact hardware target, wayvnc password provisioning) in
docs/project-plan.md§4 - Thin-client follow-ups in progress: fullscreen-aware now-playing widget (cover art + controls), minimal Firefox chrome + uBlock Origin/SponsorBlock, persistent audio-output selection, outbound RDP/VNC client (
rdp-vnc.json), HA mobile-app browser remote control (text input + mouse buttons) - Quarter-daily digest engine (mail/Signal/Telegram/Discord/WhatsApp, news, financial ingestion; LLM synthesis; digest-canvas SDK) — built and wired into
setup-container-host.sh(ENABLE_DIGEST_ENGINE, off by default), not yet run against real credentials; household/calendar ingest (CalDAV/Grocy) still needs a real data source wired in, seedocs/project-plan.md§4
Quick start
cd hosts/container-host/scripts
sudo ./setup-container-host.sh
Edit the variables at the top of the script first (timezone, Zigbee USB device
path, Mealie/hardware-accel toggles, and whether to enable Node-RED/Netdata/
Homepage/ntfy/Portainer and restic backups — all but backups are on by
default). See docs/project-plan.md for the full phased rollout order — don't
skip straight to Phase 4+ automations before the Phase 2 reactive baseline
(presence -> light, no LLM in the loop) is working.
The script brings up everything that runs on this one Debian host: Home
Assistant, Mosquitto, Zigbee2MQTT, Node-RED, Frigate, Grocy, Netdata, a
Homepage dashboard, ntfy, and Portainer, plus an optional scheduled restic
backup timer and an optional quarter-daily digest engine (ENABLE_DIGEST_ENGINE,
off by default — needs digest-engine/ checked out on the host and its .env
filled in first, see digest-engine/README.md). What it can't do for you,
because they need separate hardware, credentials, or physical setup: pairing
Zigbee sensors, flashing RuView/ESPHome/Bermuda BLE proxy boards, pointing
Frigate at a real camera RTSP URL, the Grocy kiosk touchscreen, the separate
LLM/GPU host, wiring up the Nextcloud CalDAV integration, building/flashing
the thin-client ISO (hosts/thin-client/), and provisioning real credentials
for the digest engine's mail/message/news/financial sources — see the Status
checklist above and docs/project-plan.md for those.