SQLiteGo serverWake fileShared bufferNDJSON fileLua agentHotplug scriptEvent sourceSQLiteGo serverWake fileShared bufferNDJSON fileLua agentHotplug scriptEvent sourceSingle buffer handles BOTH hotplug and Lua events.Survives: internet outage, server restart, agent restart.Does NOT survive: router reboot (tmpfs).loop[per event (in order)]exponential backoff10s retry when buffer >80% fullalt[Internet down]alt[Buffer overflow (>1000events)]WiFi/DHCP eventappend NDJSON linetouch wake filesend SIGHUP (best-effort)poll wake file (each loop)read queued eventsWS frame {type: event, ...}INSERT eventsACKremove sent linesWS send failsappend own event30s → 60s → 120s → ... → 5mindrop oldest (FIFO), log warning