Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
15 KiB
Mission Control — Roadmap
Nordstern: Den Bosgame nie wieder via SSH/Putty bedienen. 100 % Automatisierung oder Klicki-Bunti. Größeres Ziel: Mission Control als persönliches Agentic OS — lokaler, privater KI-Assistent der das gesamte Setup kennt und steuert.
v9 — Hermes-Agent-Adoption (🔜 IN ARBEIT, Entscheidung 2026-06-23)
Strategiewechsel: Der hand-gebaute Agent (hermes_agent.py) wird durch das Nous Research Hermes Agent-Framework (MIT, github.com/nousresearch/hermes-agent) ersetzt. Mission Control wird zur Control-Plane darum herum.
Warum: Der Eigenbau ist schwach wegen Scaffolding (blinde DuckDuckGo-Suche, Memory-Voll-Dump in den Prompt, Fake-Streaming) — nicht wegen des Modells (Qwen3 ist SOTA bei Tool-Calling). Hermes Agent liefert die gesamte alte v9-Wunschliste fertig & gepflegt: Cron-Scheduler, Cross-Session-Memory (FTS5), Skills (procedural memory), 40+ Tools.
Verifizierte Kompatibilität (Primärquelle):
- 100 % lokal: spricht jeden OpenAI-kompatiblen Endpoint → llama-swap/llama.cpp (Agent-Modell braucht
--jinja). - MCP-Client (≥v0.2.0) und MCP-Server (≥v0.6.0) → eigenes
mcp_memory.pyplugt als MCP-Server ein, v7/v8.3-Memory + MemoryPanel bleiben erhalten. - OpenAI-API-Server auf :8642 (
API_SERVER_ENABLED=true,API_SERVER_KEY) → HermesPanel-Chat + Voice (Whisper/Piper) zeigen dorthin. - Config:
~/.hermes/config.yaml. Braucht Python 3.11, Node.js, ripgrep, ffmpeg.
Phasen:
- Phase 0 — Proof auf echter HW (✅ 2026-06-23): Hermes Agent v0.17.0 installiert (
~/.hermes/, Code in~/.hermes/hermes-agent).coder(Qwen3-Coder-30B-A3B) in llama-swap um--jinjaergänzt (Backup:/etc/llama-swap/config.yaml.bak-pre-jinja).hermes config: provider=custom, base_url=http://127.0.0.1:8080/v1, ctx 65536. Proof viahermes -z … --yolo: echter Tool-Call (free -h→ „21 GiB frei", exakt deckungsgleich mit Live-Wert). Befunde: ripgrep fehlt (grep-Fallback, späterapt install ripgrep); Hermes hat eigenes lokales STT (faster-whisper); terminal.backend=local; Version nicht sauber pinbar → v0.17.0 in~/.hermes/PINNED_VERSION, keinhermes update. - Phase 1 — Memory-Bridge (✅ 2026-06-23):
mcp_memory.pyviahermes mcp add mission-control-memory --command /opt/mission-control/.venv/bin/python --env MC_URL=http://127.0.0.1:9000 --args …/mcp_memory.pyregistriert (5/5 Tools, Test ✓). Erkenntnis:mcp_memory.pyist stdio-MCP→HTTP-Wrapper auf MC/api/memory— MC :9000 muss laufen. Proof: Hermes liest beide Bestands-Memories und schrieb neuen Eintrag (verifiziert in SQLite, 2→3). v7/v8.3-Gedächtnis ohne Migration im Agenten. Hinweis: Hermes' eigenes Session-Memory läuft zusätzlich → zwei Schichten im Blick behalten. - Phase 2 — Control-Plane (✅ 2026-06-23): Hermes als systemd-User-Service
hermes-gateway(hermes gateway install, Linger aktiv → boot-/logout-fest, kein sudo). API-Server:8642aktiviert (~/.hermes/.env:API_SERVER_ENABLED/KEY/PORT/HOST). Produktionspfad bewiesen: Tool-Call viacurl :8642/v1/chat/completions. mcp_memory.py läuft als Kindprozess im Dienst. UI-Hälfte:routers/hermes.py-Chat-WS proxyt jetzt streamend zu:8642(Key aus~/.hermes/.env); WS-Contract (thinking/token/done/error) beibehalten → HermesPanel unverändert, kein Frontend-Build nötig. Status-Endpoint meldet zusätzlich Hermes-Erreichbarkeit. - Phase 3 — Aufräumen (✅ 2026-06-23, harter Cutover):
hermes_agent.pygelöscht (ReAct-Loop, tote Tools, Modell-Routing weg);config.pyumHERMES_SIMPLE/COMPLEX_MODELbereinigt,HERMES_API_URL/KEYergänzt;routers/hermes.pyzu reinem Proxy verschlankt. Rest-offen: Self-Update auch fürhermes-gateway(aktuell nurmission-control); HermesPanel-Altlast (Windows-SSH-Setup-Sektion) ist nur noch kosmetisch. - Phase 4 — Auszahlung (✅ 2026-06-24): Agent-Cockpit in der HermesPanel (aufklappbar, „📡 Cockpit"). Read-only Control-Plane-Reads in
hermes_control.py(TTL-Cache 10 s): Status aus~/.hermes/gateway_state.json+ Cron-Heartbeat (Liveness), Cron-Jobs viahermes cron list --all, Skills viahermes skills list+.usage.json(Nutzungszähler). Rich-Tabellen werden mitCOLUMNS=400ohne Truncation erzeugt und über│/┃geparst. EndpunkteGET /api/hermes/{agent,cron,skills}. Auf der Box verifiziert: Statusrunning/Scheduler aktiv, 71 Skills geparst, 0 Cron-Jobs. Offen-Rest: Schreib-Aktionen (Job anlegen/pausieren, Skill an/aus) aus der UI — bewusst später, erst Sichtbarkeit. - Memory-Feintuning (✅ 2026-06-23):
~/.hermes/SOUL.md(Persona, frisch je Nachricht geladen) instruiert Hermes, das MCP-Gedächtnis bei Nutzer-/Projektfragen proaktiv viaget_memorieszu konsultieren, bevor er nachfragt — Name/Profil bleiben im Gedächtnis (nicht hart in SOUL.md). Verifiziert: weicher Prompt „nenne meinen Namen" → „Hallo Tobi!". Hinweis: SOUL.md liegt auf dem Bosgame (~/.hermes/), nicht im Repo — bei Neuaufsetzen mitschreiben. - Phase 5 — UI-Adoption (✅ 2026-06-24, Kurswechsel): Statt Eigenbau-Chat das mitgelieferte Hermes-Web-Dashboard einbetten (Chat mit Live-Tool-Aktivität, Approval-Prompts, Settings, Sessions). Dashboard läuft als systemd-User-Dienst
hermes-dashboard(hermes dashboard --host 127.0.0.1 --port 9119 --skip-build, Extras[web,pty]); MC reverse-proxyt es unter/hermes-ui/(routers/hermes_ui.py, HTTP + WS-Bridge fürpty/ws) mitX-Forwarded-Prefix→ Dashboard rewritet Assets/Base-Path selbst und injiziert seinen Session-Token (kein zweiter Login). HermesPanel: Chat → iframe; Eigenbau-Chat/Voice/_proxy_chatentfernt. Damit gelöst: Kontextverlust + „lernt nicht" (UI spricht direkt mit dem Agent-Loop, kein Proxy-Bug) und Tool-Sichtbarkeit. Verifiziert: HTTP-Kette (Asset-Rewrite, 1,9-MB-Bundle) + Chat-WS/api/wsdurch MC identisch zu direkt. - Phase 6 — Rechte & Multi-Agent (✅ 2026-06-24): „lokal = volle Rechte" via
hermes config set:approvals.mode: auto,approvals.cron_mode: allow,hooks_auto_accept: true,delegation.subagent_auto_approve: true. Tirith/allow_private_urls:falsebleiben an (Injection-Schutz). Verifiziert: Agent legt über die API autonom eine Datei an (Schreibrechte ohne manuelle Freigabe). Multi-Agent damit entsperrt. - Phase 7 — Agent-Modell Hermes 4 14B (✅ 2026-06-24): GGUF
bartowski/NousResearch_Hermes-4-14B-GGUFQ6_K (~12 GB) →/srv/models/Hermes-4-14B-GGUF/. llama-swap-EintragHermes-4-14B(Aliashermes,--jinja,-c 65536, Backupconfig.yaml.bak-pre-hermes4).hermes config set model.default Hermes-4-14B+ Gateway-Restart. Verifiziert: llama-swap lädt das Modell (state: ready), Agent macht sauberen Tool-Call (kein<function>-Leak, RAM via Terminal abgefragt). Kaltstart-Load ~3,5 min, dann ttl 1800 s. A/B gegen Qwen3-Coder jederzeit permodel.defaultumschaltbar. - Phase 9 — Gedächtnis wächst autonom + deterministischer Kurator (✅ 2026-06-24): Tool-Beschreibungen in
mcp_memory.pyauf ein proaktives Protokoll (get→Session-Start, add→proaktiv+dedup, search→vor add) → das geteilte MC-SQLite wächst aus allen Tool-Sessions mit. Kurator: deterministisch in MC —POST /api/memory/dedupe(exakt/enthalten/SequenceMatcher≥0.85 je Kategorie, behält den vollständigsten Eintrag; Dry-Run + Anwenden) + „🧹 Aufräumen"-Button im Memory-Tab. Warum nicht LLM-Cron: Test zeigte, dass sowohl Hermes 4 14B (Tool-Call als Text, nicht ausgeführt) als auch Qwen3-Coder (Erfolg nur halluziniert) die Edits NICHT real ausführten → LLM-Cron-Job wieder entfernt. Verifiziert: 18→16 (2 echte Dubletten), konservativ. Nebenbei Bugfix_parse_cron(cron list = Block-Format). Offen: optional deterministischer Schedule (cron --no-agent --script→ ruft den Endpoint). - Phase 8 — Cockpit-Ausbau (✅ 2026-06-24): Cockpit zeigt jetzt Aktivität (
hermes insights: Sessions/Nachrichten/Tool-Calls/Tokens/aktiv + Top-Tool-Balken) und „Was Hermes über dich gelernt hat" (USER.md-Profil,§-getrennt +MEMORY.md). Reads inhermes_control.py(learned_profile,insights), Endpunkte/api/hermes/{learned,insights}. Beantwortet sichtbar „lernt er mit?" — ja (7 Profil-Fakten, 262 Tool-Calls/30 T verifiziert). - Phase 10 — Modell-Metadaten & Capabilities (✅ 2026-06-24):
- Schritt 1 (installierte Modelle):
model_caps.py— dependency-freier GGUF-Header-Reader (offline) liestarchitecture/expert_count/context_length/parameter_count; + cmd-Flags (--jinja=Tools bestätigt,--mmproj=Vision) + dünner Familien-Fallback. Tags: MoE(+aktive B), Tools (yes|likely|no), Vision, Coder, Reasoning, Embedding, native ctx/params. Models-Tab „KANN" = Capability-Chips. Verifiziert (qwen3moe→MoE, qwen3vl→Vision, native ctx 262k). - Schritt 2 (Discovery): Profi-Suche mit
&full=true(HF-Tags); Multi-Capability-Chips + Facetten-Filter (Tools/MoE/Logik/Bild/Code, Mehrfachauswahl, clientseitig). Discover liefert HF-Tags je Modell mit. HF/GGUF = Quelle der Wahrheit, kein Scraping. - Offen-Rest: Tool-Erkennung in der Profi-Suche ist heuristisch (Name+Tags+Familie); authoritatives
gguf.chat_templatenur fürs Detail-Modal denkbar (per-Repo-Call). Reasoning bleibt das schwächste Signal.
- Schritt 1 (installierte Modelle):
Entscheidungen (gesetzt): Memory via MCP einbinden (nicht migrieren) · Kurswechsel 2026-06-24: mitgeliefertes Hermes-Web-Dashboard per iframe einbetten (ersetzt Eigenbau-Chat; der alte „nicht hermes-webui"-Entscheid ist überholt — die UI ist offiziell, mit dem Install versioniert und auf genau dieses Ziel gebaut) · Agent-Modell Hermes 4 14B · stabiler OpenAI-API-Server bleibt für programmatischen Zugriff.
Risiken: sehr junges Projekt (hohes Release-Tempo) → Version pinnen · zwei Memory-Schichten (eigene via MCP + Hermes-Session-Recall) im Blick behalten.
v8.3 — Memory Import (✅ UMGESETZT & live, Stand 2026-06-23)
- MemoryPanel: Import-Button öffnet Formular — Text einfügen, jede Zeile wird ein eigener Eintrag (Batch-POST).
- Quelle wählbar:
claude·gemini·chatgpt·import·manual— Kategorie frei wählbar.
v8.2 — UX & Mobile (✅ UMGESETZT & live, Stand 2026-06-23)
- GuidesPanel: "Begriffe kurz erklärt" jetzt ganz oben; Tab-Navigation mit Active-Highlighting + Scroll-to-Group.
- ConnectPanel: Download-Links für Zed (
zed.dev) und Cline (VS Code + JetBrains Marketplace) ergänzt; OpenCode.jsonc-Pfad und"providers"-Key korrigiert; LAN-IP Override für NPM-Proxy-Setups. - Mobile (≤520px): Sidebar → Bottom-Navigation; kompaktere Buttons/Padding; Touch-freundliche Mindesthöhen.
v8.1 — Bug-Fix Release (✅ UMGESETZT & live, Stand 2026-06-23)
Alle kritischen Bugs aus dem ersten Bosgame-Praxistest behoben:
- Hermes system_status: Key-Mismatch behoben — zeigt jetzt echte CPU/RAM/GPU-Werte statt
? - Model-Routing: Keyword-Liste erweitert (recherchiere/suche/vergleiche/…); kein Downgrade wenn komplexes Modell bereits geladen
- HermesPanel: Chat-History überlebt Browser-Reload (sessionStorage); ⏹ Stopp-Button während Generierung; Verlauf-löschen
- Engine-Update: fragt jetzt nach sudo-Passwort (analog OS-Update)
- asyncio:
get_event_loop()→get_running_loop()in Whisper + TTS - Guide-Titel:
&→&(HTML-Entity in Textknoten war ein Bug) import osinrouters/maintenance.pyergänzt (war NameError inupdates())
v8 — Hermes Agent / Agentic OS Kern (✅ UMGESETZT & live, Stand 2026-06-23)
Hermes: dauerhafter lokaler KI-Assistent auf dem Bosgame. Text + Voice, Tool Calling, Gedächtnis.
hermes_agent.py: ReAct-Agent mit Tool-Set (read_file, list_dir, run_command, system_status, memory r/w, web_search). Modell-Routing: scout für einfache Tasks, coder für komplexe.routers/hermes.py: WS/chat(streaming), POST/transcribe(Whisper STT, CPU), POST/tts(Piper TTS, weibliche Stimme Kerstin), GET/status, GET/pubkey.- HermesPanel.svelte: Chat-UI mit Token-Streaming, Tool-Anzeige, Mikrofon-Button (MediaRecorder), TTS-Wiedergabe, Setup-Wizard.
Offene Schritte (nicht Code, sondern Einrichtung):
- Piper Binary + Kerstin-Stimme auf dem Bosgame installieren (Befehle im Setup-Wizard)
- Windows OpenSSH Server aktivieren (5 PowerShell-Befehle im Setup-Wizard)
- SSH-Key auf Bosgame generieren:
ssh-keygen -t ed25519 -C "hermes-agent@bosgame" -f ~/.ssh/id_ed25519_hermes_agent -N "" HERMES_WINDOWS_HOST+HERMES_WINDOWS_USERinmission-control.servicesetzen
v7 — Memory Layer / Gedächtnis (✅ UMGESETZT & live, Stand 2026-06-23)
Persistentes, tool-übergreifendes Gedächtnis für alle KI-Tools via MCP.
routers/memory.py: SQLite CRUD + Export, WAL-Mode, 5 Kategorien mit Enum-Validierung.mcp_memory.py: stdio-MCP-Server — Tools: get/add/search/update/delete_memory. Einmalig in Cline/OpenCode/Claude Code einbinden.- MemoryPanel.svelte: Gedächtnis-Tab mit Kategorie-Filter, Inline-Edit, Add-Formular.
- ConnectPanel.svelte: Gedächtnis-MCP Setup-Guide mit Config-Snippets.
- 5 Kategorien:
user(wer du bist) ·instruction(Verhaltensregeln für alle Tools) ·stable(Projektfakten) ·versioned(Tech-Versionen) ·ephemeral(7 Tage, dann weg).
v6 — Workflow & Politur (✅ UMGESETZT & live, Stand 2026-06-21)
- Dashboard zeigt echtes Modell hinter dem Alias; Toolbar-Update-Badges (OS + Modell-Upgrades).
- News als Magazin-Layout; Guide neu mit Tutorials/Workflows + Konzept-Karten.
- Cookbook: Modelle diversifiziert (Qwen3/Gemma/Mistral/DeepSeek), „Beste Wahl für dein System".
v5 — „Anfänger-Lotse" (✅ UMGESETZT & live)
v4 — „Der Lotse" (✅ UMGESETZT & live)
v3 — Redesign + Beginner-UX + Security (✅ UMGESETZT & live)
Details in Git-History.
Nächste Features (Vorschläge)
v8.4 — Hermes Windows-SSH (❌ überholt durch v9-Adoption)
Hermes Agent bringt SSH-Terminal-Backend von Haus aus mit — Eigenbau-SSH-Tools unnötig.
read_file_windows / write_file_windows / run_command_windows via paramiko
v9 (alt) — Agentic OS Orchestrierung Eigenbau (❌ ersetzt durch Hermes-Agent-Adoption)
Cron, Task-Queue, Push-Notifications, Multi-Step-Workflows — alles im Hermes-Agent-Framework bereits enthalten, siehe v9-Adoption oben.
v8.5 — .well-known/opencode Remote Config (bleibt relevant)
GET /.well-known/opencode— vollständige, dynamisch generierte OpenCode-Config (providers + models + MCP)- OpenCode Desktop lädt beim Start automatisch alle Configs von Mission Control
- Einmalig:
OPENCODE_REMOTE_CONFIG=http://192.168.178.151:9000/.well-known/opencodesetzen
v9.1 — Guides & Connect weiter verbessern
- Zed als primäre Editor-Empfehlung (Inline-Completion + Agent, lokal)
- Antigravity entfernen oder als "Cloud-first, lokal wackelig" markieren
- Continue als "unsichere Zukunft (Cursor-Akquisition)" markieren
.well-known/opencode-Snippet in Connect-Tab ergänzen (nach v8.5)
Langfristig
- Hermes-Persönlichkeit konfigurierbar (Name, Tonalität) über Gedächtnis
instruction-Einträge - Voice-to-Voice latency optimieren (Whisper ROCm wenn stable)
- Mehrsprachige TTS-Stimmen (EN + DE umschaltbar)
- Hermes kann Mission Control selbst weiterentwickeln (Agentic self-improvement)