Commit Graph

33 Commits

Author SHA1 Message Date
Hitonabi faf25bf76c Faden 8+5-Fix: Worker-Scope korrigieren + Profil-Hooks reproduzierbar
Zwei zusammenhaengende Bugs, beim echten Worker-Test entdeckt:

1) HOOKS FEUERTEN FUER WORKER NIE. Kanban-Worker laufen unter IHREM Profil
   (HERMES_HOME=~/.hermes/profiles/<name>) und lesen dessen config.yaml, NICHT
   die Top-Level ~/.hermes/config.yaml. Die neuen Hooks waren nur oben
   registriert -> fuer Worker inaktiv. FIX: ensure-profile-hooks.py registriert
   pre_llm_call + pre_tool_call in jeder Worker-Profil-config (idempotent,
   validiert, Backup); deploy.sh ruft es je Profil auf -> reproduzierbar.

2) FALSCHER SCOPE. Beide Hooks scopeten auf task_id == t_<hex>. Aber Worker
   tragen als effective_task_id den SESSION-Zeitstempel (z.B.
   20260713_224206_267304), NICHT die Kanban-t_-ID -> der Check schlug immer
   fehl -> box-steckbrief injizierte nie, tabu-guard liess alles durch.
   FIX:
   - tabu-pfade-guard.py: Schutz jetzt UNBEDINGT (kein Task-Scope) - kein
     legitimer Hermes-Agent-Flow schreibt je in Live-Checkout/Hermes-Quelle
     (Werkstatt arbeitet im Workspace-Klon, Wartung ist Shell nicht Agent-Tool).
   - box-steckbrief-inject.sh: Scope jetzt cwd unter ~/.hermes/kanban/workspaces/
     (zuverlaessiger Worker-Signal; Lucy/Voice/CLI laufen nie dort).

Verifiziert: echter betrieb-Worker versuchte in den Live-Checkout zu schreiben
-> GEBLOCKT, Datei nicht erstellt, TABU-Meldung im Log. 26 Guard-Unit-Faelle gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 22:51:47 +02:00
Hitonabi 5a236b4b28 Faden 8: Tabu-Pfade hart sperren (pre_tool_call-Guard)
Fallstrick #2: Worker koennen in die falsche Ebene wandern - Patches im
Live-Checkout ~/mission-control-v2 ablegen oder die Hermes-Quelle
~/.hermes/hermes-agent anfassen. Hermes' native is_write_denied deckt diese
Pfade NICHT ab (nur Credentials/System, live geprueft).

deploy/agent-hooks/tabu-pfade-guard.py (neu): pre_tool_call-Hook, blockt
Schreib-Operationen (write_file/patch + terminal git-write/sed-i/redirect/rm)
auf den home-verankerten Live-Checkout und die Hermes-Quelle - NUR fuer echte
Kanban-Worker (task_id t_<hex>); Lucy/CLI (UUID) = No-op (~15 ms). Der
Workspace-KLON (<workspace>/mission-control-v2) bleibt beschreibbar (nur der
home-verankerte Pfad ist tabu) -> legitime Worker-Arbeit ungestoert. Lesen
erlaubt. 25 Faelle gruen (Block + Allow, inkl. git log 2>/dev/null, Redirect
nach /tmp, Workspace-Commit). deploy.sh synct den Hook (cmp-Guard).

Registrierung in ~/.hermes/config.yaml (pre_tool_call) einmalig von Hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 22:26:29 +02:00
Hitonabi 967225b1d7 Faden 7: betrieb-Profil (Ops/Bench/Mess-Worker) - SOUL + deploy-Sync
Fallstrick #1: Mess-/Bench-/Verify-Aufgaben landeten auf default (Lucys
nicht-technische Persona) und flailten. Neues Worker-Profil betrieb (analog
werkstatt): misst/bencht/diagnostiziert/verifiziert auf der LEBENDEN Box,
aendert aber nichts (kein Restart/Config/Deploy).

deploy/betrieb-SOUL.md: Ops-Leitplanken - nur lesen am Live-System, kennt die
Werkzeuge (Health-curl, systemctl --user status MIT XDG_RUNTIME_DIR, bench-
Skripte), Bench-Vorsicht (kein OOM, Lucys Warm-Set schuetzen), Verifizieren-
vor-Behaupten, falsche Ebene -> werkstatt/default. deploy.sh synct sie (guarded
auf existierendes Profil).

Profil selbst + Modell (hermes) + Routing-Descriptions werden einmalig auf der
Box angelegt (hermes profile create betrieb --clone-from werkstatt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:44:07 +02:00
Hitonabi 4e8f0b91dd deploy: Agent-Hooks nur bei echter Aenderung kopieren (cmp-Guard)
Ein blindes cp aktualisiert die mtime auch bei identischem Inhalt und loest
dadurch bei jedem Deploy die harmlose "script modified since approval"-Warnung
von `hermes hooks doctor` aus. cmp -s ueberspringt unveraenderte Hooks.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:21:46 +02:00
Hitonabi c81523c0f4 Faden 5: Box-Selbstwissen mechanisch in jeden Kanban-Worker (pre_llm_call-Hook)
Fallstrick #1 behoben: Ops-/Mess-/Verify-Aufgaben landen oft auf `default`
(= Lucys Persona, "nicht technisch, keine Pfade/Versionen") und flailen, weil
sie llama-swap :8080 & Co. nicht kennen. Nur `werkstatt` hatte Box-Wissen.

deploy/agent-hooks/box-steckbrief-inject.sh (neu): pre_llm_call-Hook, haengt
eine kompakte Box-Orientierung ephemer an die User-Message JEDES Kanban-Workers
(egal welches Profil) — aber NUR wenn eine task_id gesetzt ist. Lucys
interaktiver/Voice-Chat hat keine task_id -> sofortiger No-op (7 ms gemessen),
kein Persona- oder Latenz-Eingriff. Inhalt: Identitaet + Modell-Endpunkte
(llama-swap :8080, MC2 :9001/v1, gateway :8642, mem0 :8765) + Tabu-Live-Checkout
+ Zeiger auf den vollen Selbst-Steckbrief und docs/wissen. = der "via Hook/
Wrapper/Guard"-Weg aus der Fallstrick-Karte (Dispatcher-Spawn ist Hermes-intern).

deploy/agent-hooks/pre-verify-gates.sh: der bestehende py_compile/dist-Gate-Hook,
bisher nur manuell auf der Box -> jetzt verbatim im Repo getrackt (ueberlebt
Box-Neuaufbau, schliesst eine Autonomie-Luecke).

deploy.sh synct beide nach ~/.hermes/agent-hooks/ (+chmod). Die Registrierung
in ~/.hermes/config.yaml (hooks: pre_llm_call) bleibt einmalig von Hand
(config.yaml ist Zwei-Schreiber-sensibel).

Verifiziert: Hook-Logik auf der Box gegen synthetische Payloads (Worker ->
987-Zeichen-Kontext injiziert, Lucy/leer -> {}, JSON valide), bash -n + LF sauber.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:10:34 +02:00
Hitonabi 52f25432b8 Projekt-Start-Skill: "erst denken, dann bauen" fuer Hermes Desktop
Portiert vom PC-Skill (F:\Coding Stuff\projekt-start): 4 Phasen mit hartem
Plan-Riegel, Savepoints, AGENTS.md/SAVEPOINT.md/.aiexclude-Ritual und
Kontext-Waechter. Zed-Verweise durch Hermes Desktop ersetzt (Modellwaehler
"Box / Coder (bauen)" / "Box / Planer (denken)", Planer-Kontexthinweis),
.aiexclude-Regel in die AGENTS.md-Vorlage gehoben, Verweis auf den
Werkstatt-Weg fuer Box/Lucy-Wartung ergaenzt. deploy.sh installiert ihn
nach ~/.hermes/skills/projekt-start.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 10:56:33 +02:00
Hitonabi 1570b2fc71 Lucy kennt sich: Selbst-Inventur, Karten-Gutachter, Lern-Klick, Radar->Queue
User-Auftrag 12.07. ("bau das alles ein im Sinne der Autonomie. Auch muss
Lucy selbst bemerken wenn sich etwas aendert"):

- deploy/selbst-inventur.sh (Cron 03:35): SELBST-STECKBRIEF wird LIVE aus
  der Realitaet GENERIERT (Versionen, Dienste, Timer, Modelle, Crons,
  Queue, Karten -> ~/.hermes/state/selbst-steckbrief.md) statt von Hand
  gepflegt. Diff gegen gestern => die Box BEMERKT SELBST Aenderungen an
  sich (stille Chronik-Karte + kurze Telegram-Zeile; sonst still).
- deploy/karten-gutachter.sh (Cron 04:00): stempelt jede neue Karte mit
  "Empfehlung: ANNEHMEN/ABLEHNEN/UNKLAR + ein ehrlicher Satz" (prueft
  Redundanz gegen den Steckbrief, Risiko, Nutzen; Ein-Schuss-Richter
  gpt-oss/GLM; Stempel = Meinung, kein Gate; neuer Commit entwertet den
  alten Stempel). Backend mischt den Stempel in /api/auftragsbuch,
  UI zeigt ihn farbig auf der Karte.
- Ablehnen mit Grund (Lern-Klick): UI-Inline-Feld beim Ablehnen ->
  /srv/models/mc2-ablehnungen.jsonl -> Idle-Radar bekommt die Gruende
  als "NIE wieder vorschlagen"-Material vorgelegt.
- idle-radar-feed.sh: Material + Raster erweitert um Selbst-Steckbrief,
  Inventur-Diff und Ablehn-Gruende (Fehlerfall 12.07.: redundanter
  Gateway-Restart-Vorschlag waere damit gestorben).
- werkstatt-SOUL Regel 7 + wartung-Skill: REALITAETS-CHECK - existiert es
  schon? Dann kanban_block statt Branch (ein Branch fuer Ueberfluessiges
  ist ein gescheiterter Lauf).
- hermes-release-radar-feed.sh: echter Treffer legt zusaetzlich EINE rohe
  Idee in die Queue (idempotent je Release-Tag) - der Blick nach draussen
  fuettert denselben Kreislauf.
- deploy.sh: kopiert beide neuen Skripte; Doku AUFTRAGSBUCH.md +
  wissen/OFFENE-FAEDEN.md; frontend/dist frisch gebaut (tsc+vite gruen,
  UI gegen Live-Box verifiziert).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 19:58:00 +02:00
Hitonabi 961b003df4 Zuendung (S4): Idle-Radar + Grossbau-Etappen-Regeln
- deploy/idle-radar-feed.sh (Hermes-Cron 03:45): destilliert aus Journal-
  Fehlermustern (24h) + juengster Traum-Notiz max. 2 belegte Wartungs-
  Kandidaten und legt sie als rohe Ideen (triage) ins native Kanban.
  Ehrlichkeits-Gate: Beleg-Zitat wird MECHANISCH gegen das Material
  geprueft (reproduziert-oder-abgelehnt). Stau-Bremse (>=4 offene Queue-
  Aufgaben oder >=3 offene Karten -> nichts Neues), Dedup dreifach
  (State-Datei + Board-Abgleich inkl. archivierter + --idempotency-key),
  Security/Config/Updates tabu. Analyst gpt-oss-120b, Vertretung GLM.
- deploy/idle-radar-prompt.md: versionierter Boten-Auftrag (Lucys Stimme,
  max 3 Saetze, nichts selbst umsetzen).
- deploy.sh: kopiert idle-radar-feed.sh nach ~/.hermes/scripts/ (greift
  wegen Selbst-Reset-Falle erst ab dem 2. Deploy -> Vorinstallation
  einmalig von Hand; Cron-Registrierung einmalig: hermes cron create).
- Grossbau-Etappen-Regeln (Zielbild-Entscheid 4, 10.07.): werkstatt-SOUL
  Regel 6 + wartung-/orchestrator-SKILL Scope-Check: Grosses nicht mehr
  ablehnen, sondern in Etappen bauen - jede Etappe eigener Branch, fuer
  sich lauffaehig + annehmbar, Folge-Etappen als neue Queue-Aufgaben,
  NIE auf unangenommene Branches aufbauen.
- Doku: AUFTRAGSBUCH.md (Idle-Radar-Abschnitt), wissen/OFFENE-FAEDEN.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:58:05 +02:00
Claude (Werkstatt PC) e1ca7f6a5e Ideen-Queue: natives Hermes-Kanban wird DIE Sammelstelle (Abloesung S2)
Entscheid nach Probe (Hermes-first): Dispatcher im Gateway, Specifier
(triage -> sauberer Auftrag), Profil-Routing und Artefakt-Tracking sind
nativ E2E bewiesen — kein Eigenbau. Auftragsbuch bleibt das Klick-Gate.

- backend services/ideen.py + routers/ideen.py: MC2-Tuer zur Queue
  (GET /api/ideen, POST /api/ideen -> kanban create --triage, Archiv)
- AuftragsbuchView: Ideen-Queue-Sektion (Eingabefeld + Status-Liste),
  dist frisch gebaut
- mcp_voice.py: idee_notieren (Lucys Sprech-Leitung, Prompt-Diaet: 1 Tool)
- chef-gutachter-feed.sh: Morgenlage bekommt kanban stats + Bewegung
- Bagatell-Pfad: bagatell-annahme.sh + mc2-bagatell.timer (04:10) —
  NUR .md-Anlagen/-AEnderungen, max 2/Nacht, gleicher Annahme-Runner
  mit Health-Gate + Auto-Revert, Chronik/Telegram-Meldung
- werkstatt-SOUL.md: Leitplanken des Kanban-Worker-Profils (propose-only,
  nie main, nie Live-Checkout) — deploy.sh zieht sie kuenftig nach

Box-live heute schon (ausserhalb Repo, mit Backups): toolsets+kanban,
platform_toolsets.telegram+kanban, SOUL.md-Ideen-Regel, Profil werkstatt
(model.default=coder), Gateway neu gestartet + E2E-Tuer-Test gruen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 14:02:50 +02:00
Hitonabi 7f224ec98e Uebergabe S1: Auto-Update-Entscheid 10.07. nachgezogen (Timer bleibt AN)
User-Antwort in der Uebergabe-Session: Router/Engine/Hermes duerfen automatisch
(So 04:30, Fangnetz Rollback+Pin) - ersetzt "nur bestaetigt" vom 04.07.
STACK/RUNBOOK/OFFENE-FAEDEN/deploy.sh-Kommentar entsprechend korrigiert;
deploy.sh schaltet den Timer weiterhin NICHT selbst.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 12:19:09 +02:00
Hitonabi 2d32d21742 Uebergabe S1: Wissens-Heimat docs/wissen/ + Gemini-Briefing + Monats-Review-Wrapper ins Repo
- docs/wissen/: kuratierte Projekt-Wahrheit fuer alle Agenten (Zielbild, Arbeitsweise,
  Stack live-verifiziert 10.07., Verdikte, Betriebs-Fallen, offene Faeden)
- docs/GEMINI_BRIEFING.md: Notfall+Review-Briefing (baut auf ANTIGRAVITY_REVIEW auf)
- RUNBOOK: Seite "Wann Gemini rufen" + Automatik-Fahrplan/Werkstatt/sudo aktualisiert
- deploy/radar-selbstkritik-wrapper.sh: lag NUR auf der Box (Monats-Review-Cron),
  jetzt versioniert + deploy.sh kopiert ihn
- docs/memory/-Altkopien mit Veraltet-Banner auf docs/wissen/ verwiesen

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 12:13:05 +02:00
Hitonabi 73f593b1a1 Release-Radar: hermes-Releases woechentlich gegen die Eigenbau-Landkarte halten
Baustein 2-4 des Plans "mehr Hermes nativ, weniger Eigenkreationen":
- deploy/hermes-release-radar-feed.sh: woechentlicher Cron-Feed (Muster chef-gutachter) —
  GitHub-Releases seit letztem Stand holen (nur Tags, kein main-Churn), Ein-Schuss-Abgleich
  gegen ~/wissens-vault/eigenbau-landkarte.md (Analyst gpt-oss-120b, Vertretung GLM),
  Zitat-Pflicht, fremdblick-Gegenpruefung bei Treffern, stiller Briefkasten-Spiegel
  (source=release-radar). Informiert nur — Updates bleiben manuell (Entscheid 04.07.).
- deploy/release-radar-prompt.md: versionierter Auftrag fuer den Boten-Agenten.
- deploy.sh: Feed nach ~/.hermes/scripts/ ausrollen.
- Skills wartung+orchestrator: Hermes-first-Leitplanke (vor Neubau nativ pruefen,
  Befund in den Vorschlag).
- backup.sh/restore.sh: Nebenbefund geschlossen — ~/.hermes/cron (ALLE Cron-Jobs!) und
  ~/.hermes/state wurden bisher nicht gesichert; Restore haette sie still verloren.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 10:31:50 +02:00
Hitonabi 83e5a04735 Betriebs-Lücken nach dem Hermes-Desktop-Umzug geschlossen
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 <noreply@anthropic.com>
2026-07-09 12:40:25 +02:00
Hitonabi 91e1f1ec9a Skill pc-pfad-cache: Traum-Entwurf aufbereitet (Cache + pc_shell-Tool-Suche)
Übernimmt den unproponierten Entwurf aus /tmp/orch-pc-pfad-cache (Users
Orchestrator-Läufe 09.07. früh) mit einem konstruktiven Fix: der Entwurf rief
pc_shell als Shell-Befehl auf — das ist aber ein Agent-Tool, kein Binary, der
Fallback konnte nie funktionieren (der untracked .py-Rest war ein angefangener
Reparaturversuch via MCP-stdio, unnötig kompliziert). Neues Design:
pc_path_lookup.sh = reiner YAML-Cache (lookup/merken/liste, exit 3 = Miss);
die PC-Suche bei Cache-Miss macht der Agent selbst mit seinem pc_shell-TOOL
und merkt den Fund. SKILL.md im Hausstandard, deploy.sh installiert Skill +
Skript. Getestet auf der Box: merken/lookup-Roundtrip inkl. Umlaut-
Normalisierung (Ä→ae, dabei tr-Umlaut-Falle gefixt), Miss=exit 3, bash -n grün.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 11:11:33 +02:00
Hitonabi d9920fba8e MC2-Diät: Hermes-Fenster-Rolle an Hermes Desktop abgegeben
Der "Hermes GUI"-Tab (iframe auf /hermes-ui/) und das Hermes-Terminal-ttyd
(:7681) entfallen — die Agent-Oberfläche ist jetzt die Hermes-Desktop-App,
die über den BESTEHENDEN MC2-Proxy /hermes-ui/ (WS inklusive) an die Box
andockt. hermes-builtin-ui (:9119) bleibt als Desktop-Gateway erhalten und
wird im Dienste-Drawer + /api/system/services erstklassig geführt (statt
hermes-terminal); Wartungs-Allowlist kann ihn jetzt neu starten.

- Frontend: Tab/View raus (nav.ts, App.tsx, TerminalView.tsx gelöscht),
  AgentView + (Legacy-)AgentStatusCard zeigen Desktop-Gateway statt ttyd,
  Dienste-Zeile hermes-terminal → hermes-builtin-ui, Versions-Zeile
  "Hermes UI" (nesquena-Karteileiche ~/hermes-webui) entfernt.
- Backend: terminal_url/terminal_reachable + HERMES_TERMINAL_* raus,
  console.py proxyt nur noch die Box-Konsole, /api/system/services führt
  hermes-builtin-ui, USER_SERVICES getauscht, hermes-webui-GitInfo raus.
- deploy.sh: legt hermes-terminal + hermes-webui idempotent still
  (disable --now + Unit-Löschung). deploy/hermes-terminal.service bleibt
  EINEN Zyklus im Repo (das laufende alte deploy.sh kopiert es noch —
  Selbst-Reset-Falle); Aufräum-Commit folgt nach dem nächsten Deploy.
- frontend/dist mit-committet (Box baut nicht selbst).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 08:49:40 +02:00
Hitonabi d68ee60182 Chef-Gutachter-Cron (Orchestrator-Finale): gpt-oss urteilt naechtlich ueber die autonome Arbeit
User-Idee 06.07.: das grosse Modell NICHT im heissen Pfad, sondern als
naechtlicher Gutachter (04:30) — Kaltladen ist dann egal, Lucy bleibt
tagsueber schnell. Feed sammelt 24h-Beweise (Vorschlags-Branches, main-
Commits, Vault-Notizen, Journal-Warnungen, Insights), der Richter laeuft
als Ein-Schuss-Completion gegen llama-swap (fremdblick-Architektur).
Richter-Kette: gpt-oss-120b -> GLM-4.6V-Flash als gekennzeichnete
Vertretung (gpt-oss wirft neben dem Warm-Set weiterhin 'exited
prematurely', E2E 07.07. verifiziert). Bote = Cron-Agent mit striktem
Treu-Wiedergeben-Mandat (chef-gutachter-prompt.md), Ausfall wird ehrlich
gemeldet statt verschwiegen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:26:24 +02:00
Hitonabi b95530ee70 fix: absolute imports and type annotations in app.py
- replace implicit relative imports with absolute ones (from backend.*)
- add type hints for lifespan tasks list and middleware
- fix unused bool return value in task.cancel() call
2026-07-06 20:06:40 +02:00
Hitonabi 3a6e3c5432 Hermes-GUI: eingebaute hermes serve-Weboberflaeche same-origin in MC2 einbetten (ersetzt CLI-Terminal-Tab)
Statt des ttyd-CLI-Terminals zeigt der Tab jetzt die reiche eingebaute Hermes-Web-GUI
(hermes serve/dashboard: Threads, sichtbare Tool-Calls, Sessions, Config) - same-origin,
ohne offenen Port, ohne Login (Loopback :9119 = LAN-Trust wie Terminal/Konsole).

- backend/routers/hermes_ui.py: generischer Reverse-Proxy /hermes-ui/* (alle Methoden + beliebige
  WebSockets) -> 127.0.0.1:9119; injiziert window.__HERMES_BASE_PATH__=/hermes-ui in die index.html,
  damit die SPA ihre API/WS-Calls unter dem Praefix absetzt (sonst Kollision mit MC2s /api).
- deploy/hermes-builtin-ui.service: hermes serve --skip-build auf Loopback :9119.
- deploy/deploy.sh: baut das GUI-Bundle mit Vite-base=/hermes-ui/ (Temp->Swap, ueberlebt Hermes-
  Updates) + installiert/startet den Dienst.
- backend/app.py + config.py + services/agent.py: Router registriert, Upstream/Pfad + Status-Feld.
- frontend: Terminal-Tab -> "Hermes GUI" (TerminalView iframe /hermes-ui/, nav-Label, vite-Dev-Proxy).

E2E im Browser verifiziert: GUI rendert eingebettet, /hermes-ui/api/* liefern echte Daten
(289 Sessions, verbundene Plattformen), Assets + Plugins laden, Basis-Pfad korrekt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:48:12 +02:00
Hitonabi 18afa37412 UI v3: Cockpit-Startseite + Modelle-Werkbank als Default, neue Box-Konsole
Kompletter Frontend-Umbau auf das abgenommene v3-Konzept, dazu zwei neue Funktionen.

Frontend (Neuordnung bestehender IST-Views, kein Backend-Umbau):
- Cockpit ist die neue Startseite: ruhige Bereichs-Kacheln (je 1 Live-Zahl +
  Status-Punkt), ehrliche Status-Zeile "Box gesund" + Speicher-Pille, "Braucht dich"
  (kritische Probleme mit 1-Klick-Reparatur + bereitliegende Updates).
- Modelle-Werkbank: Maschinenraum-Speicherleiste als Hero (Arbeitsspeicher-Balken,
  nach Rolle eingefaerbt + frei), darunter Master/Detail. Eingebettet als Haupt-Tab
  im Modell-Manager ("Werkbank"), "Modelle finden" + JobsBar bleiben.
- Sidebar/Nav neu strukturiert; alle Aktionen ueber die bestehenden /api-Endpoints.

Neue Features:
- Box-Konsole: zweites ttyd-Web-Terminal mit echter Login-Shell auf :7682 (direkter,
  SSH-artiger Box-Zugriff, kein Passwort — gleiches LAN-Trust-Modell wie hermes-terminal).
  Neuer Dienst deploy/box-console.service + agent_status-Felder box_console_url/-reachable.
- Box-Zugang: das Host-Sudo-Passwort laesst sich jetzt direkt in der Konsole-Seite
  setzen/aendern/loeschen (lokal im Browser), statt nur versteckt im System-Drawer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 20:41:19 +02:00
Hitonabi f6029e25fc Dreaming (Phase 2): naechtlicher Traum-Cron + Wissens-Vault + Fremdblick-Helfer
Der Continual-Learning-Kreislauf als Capstone: idle-Zeit -> Session-Review ->
navigierbare Markdown-Notizen (Wissens-Vault, eigenes git-Repo) -> Vorschlag mit
Fremd-Modell-Kritiker, Mensch als Gate.

- deploy/dreaming-prompt.md: versionierter Traum-Auftrag. Reflektieren (insights/
  sessions/journey/curator) -> Notizen entwerfen -> Fremdblick PFLICHT-GATE (wartet
  auf Urteil) -> bereinigen+INDEX -> committen -> zuletzt berichten (Lucys Stimme).
  Propose-only: einziger Schreib-Ort ist der Vault; alles andere = Vorschlag.
- deploy/dreaming-feed.sh: bootstrappt ~/wissens-vault (idempotent) + sammelt
  Schlaf-Daten. INDEX zwischen Markern (kein Feed-Bleed in die Datei).
- deploy/fremdblick.sh: Ein-Schuss-Zweitmeinung von einem ANDEREN Modell
  (GLM-4.6V-Flash, anderer Vendor). Umgeht Hermes' 64K-Delegations-Floor UND das
  60-GB-Ladeproblem von gpt-oss/heavy (kollidiert mit VL-30B-Warm-Set).
- deploy.sh: kopiert feed + fremdblick nach ~/.hermes/scripts (chmod +x).

E2E gegen die Box verifiziert (cron-Kontext): Kritiker gatet + diskriminiert
(2 Overclaims als TRAEGT-NICHT abgelehnt, Zahlen korrigiert), Vault sauber
committed, Warm-Set unberuehrt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 16:41:59 +02:00
Hitonabi 5ee3f8f73d D16d-Fix: volles Warm-Set nachwärmen statt nur das Hirn
Auto-Rewarm (Nudge + Idle-Tick) lädt jetzt das GANZE Warm-Set über
deploy/warmup.sh nach (fast+vision via chat, embed via /v1/embeddings,
Agent-Prompt-Prefill) statt nur einen Brain-Ping. Erkennt TEIL-Kälte
(Mitglied fehlt in /running), nicht nur den komplett leeren Zustand —
genau der Fall nach einem watch-config-Reload/Deploy (Augen+Gedächtnis
fielen raus, Hirn blieb warm). deploy.sh ruft am Ende warmup.sh.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 19:57:31 +02:00
Hitonabi 612ce127fa Autonomie 0d+0g: Lucy-Alarm-Weg, taegliche Selbst-Smokes, Selbstreparatur nach rotem Update
- /api/alarm: Lucy-unabhaengiger Telegram-Weg (fuer den PC-Lucy-Watchdog, wenn die App haengt).
- self-smoke.sh + mc2-selfsmoke.timer (taeglich 07:15): Gateway/Tools/Voice aktiv durchspielen,
  Meldung nur bei Rot. Ergaenzt den passiven Health-Waechter um echte Funktion.
- self-repair.sh + autoupdate.sh: bei rotem Hermes-Update zieht die Box Config-Brueche selbst
  (nur eindeutige, nicht-sicherheitsrelevante Keys; Backup -> YAML-Check -> Gehirn-Check, sonst
  zurueck). Greift es nicht, haengt eine LLM-Diagnose an die Rollback-Meldung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 19:27:31 +02:00
Hitonabi 8b0e14db7c Selbstkritik-Cron (Faden 11b): der Radar-Zwilling nach innen
- selbstkritik-prompt.md: Auftrag (1-3 belegte Verbesserungen, Lucys Stimme,
  Leitplanken: nur vorschlagen, Hermes-Quellcode tabu, Security nur benennen)
- selbstkritik-feed.sh: Live-Daten (Voice-Latenzen, Token-Stats, Prompt-Größen
  je Lane als Diät-Kontrolle, Journal-Warnmuster, Tool-Loops, Curator, notify-
  Fallbacks); deploy.sh kopiert ihn nach ~/.hermes/scripts

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:02:12 +02:00
Hitonabi ab8d651efc Autonomie E6+DoD6: Werkstatt-Skill (wartung) + RUNBOOK
- deploy/skills/wartung/SKILL.md: Selbstwartungs-Kreislauf (Worktree -> Patch ->
  Reviewer-Subagent -> Gate -> Telegram-Merge-Vorschlag); Leitplanken hart codiert
  (nie main/merge/deploy/Security-Config); deploy.sh installiert nach ~/.hermes/skills/
- Box hat bewusst KEINE Gitea-Push-Rechte (Token = offener User-Entscheid) -> v1 endet
  beim Merge-Vorschlag mit lokalem Branch
- docs/RUNBOOK.md: 1 Seite Mensch-Anleitung (Telegram-Meldungen, Box tot, Pins,
  einmalige sudo-Session, Automatik-Fahrplan)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:29:19 +02:00
Hitonabi 2c95f1c5bc Autonomie E4: Evolution-Radar (Hermes-cron monatlich, Fan-out-Subagents)
- deploy/radar-prompt.md: versionierter Auftrag (delegate_task-Fan-out mit Muell-Filter,
  Verdikt-Liste inline, kurzes deutsches Telegram-Report-Format)
- deploy/radar-feed.sh: speist Auftrag + Live-Inventar (Updates/Modelle/Versionen/Pins)
  in den Cron-Agenten; deploy.sh kopiert ihn nach ~/.hermes/scripts/
- Cron registriert: evolution-radar, 0 9 1 * * (monatlich), --deliver telegram

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:19:41 +02:00
Hitonabi 2db0ce080f Autonomie E2: Auto-Update-Timer (So 04:30) + Pin-Register + Rollback
- deploy/autoupdate.sh: Router->Engine->Hermes ueber bestehende Pfade; rot = Rollback + Selbst-Pinning (/srv/models/mc2-pins.json) + Telegram; gruen = Meldung "eingespielt X->Y"; Abschluss-Summary je Lauf
- Hermes-Rollback selbst gebaut (Job kann nur rot werden): git reset auf alten Stand + Config aus frischem Backup + Gateway-Neustart + Gehirn-Check
- sudoers-mc2-autonomie: NOPASSWD-Snippet fuer Engine/Router (einmalige sudo-Session); bis dahin wird die Ebene uebersprungen + gemeldet
- Verifiziert auf der Box: Happy-Path (11+2 Commits echt eingespielt), Fake-Fail -> Rollback+Pin+Meldung, Pin-Skip, Unpin -> regulaeres Update

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:01:13 +02:00
Hitonabi 8e7ce1b1d3 Feat: Sprechen-Tab — mit Hermes per Sprache reden (Browser-Voice + 3D-Avatar)
Voll-Duplex Sprach-Interaktion vom lokalen PC mit dem vollen Hermes-Agenten
(api_server :8642, OpenAI-kompatibel → gleiche Tools + geteiltes Mem0 wie CLI/Telegram).

- Voice-Sidecar (voice_service/, eigenes Py3.12-venv ~/.voice, :8650): STT faster-whisper
  (medium, de) + gestuftes TTS — Piper (schnell, Default) + Chatterbox (premium, Voice-Cloning,
  lazy-load, CPU-Start). Analog mem0_service.
- Backend: routers/voice.py (Proxy /api/voice/stt|tts|voices + /chat-SSE an Hermes mit
  Bearer API_SERVER_KEY + X-Hermes-Session-Id für server-seitigen Verlauf). config.py:
  VOICE_SERVICE_URL + HERMES_API_KEY (Fallback aus ~/.hermes/.env). System-Dienstliste +
  Wartung (Restart/Logs) um voice-service ergänzt.
- Frontend: Sprechen-Tab mit 3D-Avatar (VRM via three-vrm) — Lippensync (Web-Audio-Pegel),
  Blinzeln, Sentiment-Mimik, Ruhepose. Avatar-Picker (CORS-freie Galerie + .vrm-Upload + URL
  + VRoid-Hub-Link) + Stimm-Auswahl. Push-to-talk (Knopf/Leertaste). Deps: three, r3f, drei.
- Deploy: deploy/voice-service.service + deploy.sh (idempotenter Sidecar-Install, enable, restart).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 23:26:58 +02:00
Hitonabi 8554e7b29c Feat: Voll-Zustands-Backup + getesteter Restore + taeglicher Timer
Behebt 3 von 4 Backup-Luecken (Schicht 1, lokal):
- backup.sh sichert jetzt den ECHTEN Zustand als ein Tarball mc2-state-<ts>.tar.gz:
  mem0 (Chroma+history.db), ~/.hermes (config.yaml, .env, plugins/), llama-swap config.
  Vorher wurde nur die alte/leere mc2-memory.db gesichert. chmod 600 (enthaelt .env).
- restore.sh: --list / --dry-run / [--yes] <datei|latest>; macht VOR dem Zurueckspielen
  ein Sicherheits-Backup, stoppt/startet Dienste, Health-Check. Live round-trip verifiziert.
- mc2-backup.timer/.service: taegliches Backup ~03:30 (vorher gab es KEINE Automatik).
- backend/services/backup.py delegiert an backup.sh (eine Quelle der Wahrheit); UI-Button
  + /api/system/backups zeigen die Tarballs.
- docs/BACKUP.md: Backup/Restore-Anleitung.

Offen (Schicht 2): Off-Box-Spiegel (Box ist Bare Metal -> PBS-Client oder rsync in LXC).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:25:39 +02:00
Hitonabi 965d7b2002 Feat: Hermes Auto-Lern-Hook — mc2-memory Memory-Provider (context-only)
Hängt Hermes ans geteilte Mem0-Gedächtnis ohne Tool-Loop-Risiko:
- sync_turn (nach jedem Turn) → /api/memory/learn (infer=True, Hintergrund-Worker,
  nicht-blockierend) → Mem0 extrahiert dauerhafte Fakten automatisch.
- prefetch (vor dem Turn) → semantische Suche → relevante Fakten als Kontext.
- get_tool_schemas()=[] → context-only, keine Agent-Tools (memory bleibt in
  disabled_toolsets). Single Source of Truth bleibt der MC2-Sidecar.

Installation nach ~/.hermes/plugins/mc2-memory/ via deploy.sh; Aktivierung box-lokal
in ~/.hermes/config.yaml (memory.memory_enabled: true + memory.provider: mc2-memory).
Provider-Ebene verifiziert (Auto-Lernen + semantischer Recall gegen Box).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:57:06 +02:00
Hitonabi 05bef8642d Feat: Agent-Memory auf Mem0 (auto-lernend, semantisch) via Sidecar
Paket A des Plans. Ersetzt die flache SQLite-Fakten-DB durch Mem0 (LLM-Auto-
Extraktion + Vektor/Chroma-Suche). Architektur erzwungen durch Python-Split:
MC2-Backend laeuft auf 3.14 (kann mem0 nicht importieren), mem0+chromadb nur
auf 3.12 (~/.mem0/venv) -> Mem0-Sidecar (FastAPI, localhost:8765), MC2 spricht
ihn per HTTP. /api/memory-Form bleibt unveraendert (UI + MCP kompatibel).

- mem0_service/: Sidecar (app.py), Migration (migrate.py), deps.
  - Embeddings: neue llama-swap embed-Rolle (Qwen3-Embedding-0.6B, 1024 Dim,
    pooling last) ueber /v1/embeddings.
  - LLM-Extraktion: lokales fast-Hirn; NoThinkLLM schaltet Qwen3-Thinking ab
    (sonst bricht json_object-Extraktion ab), custom_instructions halten Deutsch.
- backend/services/memory.py: duenner HTTP-Client auf den Sidecar (semantische
  Suche mit score, verbatim add, learn()). Router: /api/memory/learn.
- mcp/mcp_memory.py: neues learn-Tool (Auto-Lernen aus Gespraechs-Turns),
  search jetzt semantisch.
- Frontend: Relevanz-Score + Auto/Manuell-Herkunft im Gedaechtnis-Tab.
- deploy/: mem0-service.service + deploy.sh (uv-Install, Migration, Restart).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:24:22 +02:00
Hitonabi dcfede7e69 Feat: Hermes-Terminal (ttyd) statt AnythingLLM + AnythingLLM komplett raus
Paket B des Plans. AnythingLLM war nur ein Fallback-Chat zu Hermes; ersetzt durch das
echte interaktive Agent-Terminal (`hermes chat`, mit Tools/PC) als eingebettetes
Web-Terminal.

Box: ttyd (apt) wrappt `hermes chat`; systemd-User-Unit deploy/hermes-terminal.service
(LAN-Bind eno1:7681, apt-Default-ttyd-Dienst deaktiviert). In deploy.sh verankert.

Backend: config HERMES_TERMINAL_URL statt ANYTHINGLLM_URL/_REPO; agent_status liefert
terminal_url/terminal_reachable; maintenance ohne _anythingllm_update; system.py Dienst-Liste
zeigt "Hermes-Terminal".

Frontend: neue Terminal-Seite (iframe auf ttyd) + Nav-Tab; AgentView/AgentStatusCard/nav/api
auf Terminal umgestellt; SystemDrawer toter hermes-dashboard raus, hermes-webui -> hermes-terminal;
Guide-Texte aktualisiert.

Cleanup: deploy/hermes-webui.service + deploy/lobechat/ entfernt (LobeChat-Migration hinfaellig),
HERMES_WEBUI_URL-Env raus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 18:23:37 +02:00
Hitonabi 1b332f86e6 chore(2.0): Deploy als sudo-freier systemd-USER-Dienst (Home, :9001)
mission-control-2.service auf %h/mission-control-v2 umgestellt (kein /opt/
sudo); deploy.sh = Erstinstall+Update als User-Dienst (clone/pull, venv,
systemctl --user, linger). Nordstern: kein Passwort/SSH-Gefummel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 08:30:40 +02:00
Hitonabi b805c294eb feat(2.0): Phase 0 — Greenfield-Skeleton (FastAPI + React/shadcn)
Backend: FastAPI mit /api/health + /api/models (read-only aus llama-swap
config, Logik aus v1 portiert). Frontend: Vite + React + Tailwind v4 +
shadcn-Style App-Shell mit Cmd+K, Dark-default, PWA-Manifest; Modelle-View
live aus /api/models. Deploy-Geruest (systemd-Unit :9001, build/deploy-
Skripte, NOPASSWD-sudoers, kein Klartext-Passwort).

Verifiziert: Backend-Endpunkte + Frontend-Build + gerenderte Shell.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 22:17:45 +02:00