From 83e5a04735450bc78c7dccde4717a237d256271b Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 9 Jul 2026 12:40:25 +0200 Subject: [PATCH] =?UTF-8?q?Betriebs-L=C3=BCcken=20nach=20dem=20Hermes-Desk?= =?UTF-8?q?top-Umzug=20geschlossen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Systemblick 09.07. abends fand vier Lücken, drei davon hier (die vierte, blogwatcher-Cron, ist Box-Config): 1. deploy.sh enablete mc2-autoupdate.timer bei JEDEM Deploy — und hat damit den User-Entscheid vom 04.07. ("Updates nur bestätigt") über die heutige Annahme-Kaskade still rückgängig gemacht. Zeile raus, Timer manuell wieder disabled; wer Auto-Updates will, enabled einmalig von Hand. 2. self-smoke.sh prüft jetzt auch das Desktop-Gateway (:9119 /api/status) — stirbt hermes-builtin-ui, ist die Desktop-App tot, das muss der Selbst-Test melden statt der User. 3. backup.sh/restore.sh sichern die neue Infrastruktur mit: agent-hooks/ (pre_verify-Gates), shell-hooks-allowlist.json, desktop-gateway-token, pc-paths.yaml und den systemd-Token-Drop-in (mit chmod 600 + +x beim Restore). Vorher hätte ein Restore Desktop-Verbindung und Gates STILL verloren. bash -n auf allen vier Skripten grün. Co-Authored-By: Claude Fable 5 --- deploy/backup.sh | 8 ++++++++ deploy/deploy.sh | 5 ++++- deploy/restore.sh | 6 ++++++ deploy/self-smoke.sh | 11 +++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/deploy/backup.sh b/deploy/backup.sh index b83ec3c..7d77c85 100644 --- a/deploy/backup.sh +++ b/deploy/backup.sh @@ -34,6 +34,14 @@ mkdir -p "$STAGE/mem0" "$STAGE/hermes" "$STAGE/llama-swap" [ -f "$HERMES/.env" ] && cp -a "$HERMES/.env" "$STAGE/hermes/" || true [ -d "$HERMES/plugins" ] && cp -a "$HERMES/plugins" "$STAGE/hermes/plugins" || true [ -f "$LSWAP" ] && cp -a "$LSWAP" "$STAGE/llama-swap/" || true +# Hermes-Desktop-/Gate-Infrastruktur (09.07.2026) — ohne sie verliert ein Restore die +# Desktop-Verbindung und die pre_verify-Gates STILL (config.yaml referenziert die Hooks): +[ -d "$HERMES/agent-hooks" ] && cp -a "$HERMES/agent-hooks" "$STAGE/hermes/agent-hooks" || true +[ -f "$HERMES/shell-hooks-allowlist.json" ] && cp -a "$HERMES/shell-hooks-allowlist.json" "$STAGE/hermes/" || true +[ -f "$HERMES/desktop-gateway-token" ] && cp -a "$HERMES/desktop-gateway-token" "$STAGE/hermes/" || true +[ -f "$HERMES/pc-paths.yaml" ] && cp -a "$HERMES/pc-paths.yaml" "$STAGE/hermes/" || true +_TOKDROPIN="$HOME/.config/systemd/user/hermes-builtin-ui.service.d/session-token.conf" +[ -f "$_TOKDROPIN" ] && { mkdir -p "$STAGE/hermes/systemd-dropins"; cp -a "$_TOKDROPIN" "$STAGE/hermes/systemd-dropins/"; } || true # --- Known-Good-Manifest ----------------------------------------------------- # Versions-Schnappschuss des LAUFENDEN Stacks: pip freeze je venv, Engine-Build, diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 237f1cf..2ba49ed 100644 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -123,7 +123,10 @@ systemctl --user enable mem0-service >/dev/null 2>&1 || true systemctl --user enable voice-service >/dev/null 2>&1 || true systemctl --user enable hermes-builtin-ui >/dev/null 2>&1 || true systemctl --user enable --now mc2-backup.timer >/dev/null 2>&1 || true -systemctl --user enable --now mc2-autoupdate.timer >/dev/null 2>&1 || true +# mc2-autoupdate.timer wird BEWUSST NICHT enabled (User-Entscheid 04.07.2026: Updates nur +# bestätigt). Die frühere enable-Zeile hier hat den Entscheid bei jedem Deploy still +# rückgängig gemacht (aufgefallen 09.07. nach der Annahme-Kaskade). Wer Auto-Updates will: +# einmalig manuell `systemctl --user enable --now mc2-autoupdate.timer`. systemctl --user enable --now mc2-selfsmoke.timer >/dev/null 2>&1 || true loginctl enable-linger "$USER" >/dev/null 2>&1 || true # Mem0-Sidecar VOR dem Backend (re)starten, damit /api/memory sofort bedient wird. diff --git a/deploy/restore.sh b/deploy/restore.sh index fb1ab69..29d3ab0 100644 --- a/deploy/restore.sh +++ b/deploy/restore.sh @@ -124,6 +124,12 @@ if [ -d "$STAGE/mem0" ]; then rm -rf "$MEM0_DIR"; mkdir -p "$MEM0_DIR"; cp -a "$ [ -f "$STAGE/hermes/.env" ] && cp -a "$STAGE/hermes/.env" "$HERMES/" [ -d "$STAGE/hermes/plugins" ] && { mkdir -p "$HERMES/plugins"; cp -a "$STAGE/hermes/plugins/." "$HERMES/plugins/"; } [ -f "$STAGE/llama-swap/config.yaml" ] && cp -a "$STAGE/llama-swap/config.yaml" "$LSWAP" 2>/dev/null || true +# Hermes-Desktop-/Gate-Infrastruktur (Gegenstück zu backup.sh, 09.07.2026): +[ -d "$STAGE/hermes/agent-hooks" ] && { mkdir -p "$HERMES/agent-hooks"; cp -a "$STAGE/hermes/agent-hooks/." "$HERMES/agent-hooks/"; chmod +x "$HERMES/agent-hooks/"*.sh 2>/dev/null || true; } +[ -f "$STAGE/hermes/shell-hooks-allowlist.json" ] && cp -a "$STAGE/hermes/shell-hooks-allowlist.json" "$HERMES/" +[ -f "$STAGE/hermes/desktop-gateway-token" ] && { cp -a "$STAGE/hermes/desktop-gateway-token" "$HERMES/"; chmod 600 "$HERMES/desktop-gateway-token"; } +[ -f "$STAGE/hermes/pc-paths.yaml" ] && cp -a "$STAGE/hermes/pc-paths.yaml" "$HERMES/" +[ -f "$STAGE/hermes/systemd-dropins/session-token.conf" ] && { mkdir -p "$HOME/.config/systemd/user/hermes-builtin-ui.service.d"; cp -a "$STAGE/hermes/systemd-dropins/session-token.conf" "$HOME/.config/systemd/user/hermes-builtin-ui.service.d/"; chmod 600 "$HOME/.config/systemd/user/hermes-builtin-ui.service.d/session-token.conf"; systemctl --user daemon-reload 2>/dev/null || true; } echo "→ Dienste starten…" systemctl --user start $SERVICES 2>/dev/null || true diff --git a/deploy/self-smoke.sh b/deploy/self-smoke.sh index 2891894..0a7aa91 100644 --- a/deploy/self-smoke.sh +++ b/deploy/self-smoke.sh @@ -53,6 +53,17 @@ if [ -n "$API_KEY" ]; then fi fi +# ── 2b) Desktop-Gateway: hermes-builtin-ui antwortet ──────────────────────── +# Seit dem Hermes-Desktop-Umzug (09.07.2026) hängt die Desktop-App an :9119 +# (via MC2-Proxy /hermes-ui/). Stirbt der Dienst, ist die Arbeits-Oberfläche +# am PC tot — das muss der Selbst-Test melden, nicht erst der User. +if curl -sf -m 10 "http://127.0.0.1:9119/api/status" | grep -q '"gateway_running"'; then + say "PASS · Desktop-Gateway (:9119 /api/status)" +else + say "FAIL · Desktop-Gateway: :9119/api/status antwortet nicht (hermes-builtin-ui prüfen)" + FAILED+=("Desktop-Gateway (hermes-builtin-ui :9119)") +fi + # ── 3) Voice: Lucys Sprech-Stream ──────────────────────────────────────────── # Retry: der erste Turn nach Idle zahlt evtl. den Session-Kaltstart (Prefill). # Subshell OHNE pipefail — head -c schließt die Pipe früh (curl endet mit 23/SIGPIPE),