9e4a731c27
The inline log panel is cramped, especially on mobile. Add a standalone mobile-first log page and serve the chat server under systemd like the dream loop (the nohup process didn't survive cleanly). - static/logs.html: full-page live log — level filter chips, text search, pause/resume with buffering, autoscroll toggle, color-coded levels, and the expandable "view full prompt" block (where the now-note is visible in context) - server: GET /logs serves the page (FileResponse) - index.html: "⛶ Full Log" button opens /logs in a new tab - deploy/lyra-web.service: user service so the chat server is reboot-resilient Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy
Dream cycle (lyra-dream.service)
Lyra's unattended inner loop. Runs lyra-dream --loop 1800 so she consolidates
memory and reflects every 30 min between conversations. Installed as a
systemd user service on lyra-cortex (10.0.0.41), running as serversdown
— no root needed to manage it.
Install / update
cp deploy/lyra-dream.service ~/.config/systemd/user/lyra-dream.service
systemctl --user daemon-reload
systemctl --user enable --now lyra-dream.service
Persist across reboot / logout (one-time, needs sudo)
A user service stops when the user logs out and doesn't start at boot until login — unless lingering is enabled:
sudo loginctl enable-linger serversdown
Operate
systemctl --user status lyra-dream.service # is she ticking?
journalctl --user -u lyra-dream.service -f # watch her think (logbus -> stderr)
systemctl --user restart lyra-dream.service # after a code change
systemctl --user stop lyra-dream.service # quiet her down
Tunables live in lyra/dream.py (drive thresholds, curiosity gains) and the
--loop interval in the unit's ExecStart. The consolidation backend follows
SUMMARY_BACKEND in .env (cloud gpt-4o-mini for bulk; the MI50 is too slow
for the summarization backfill).