Commit Graph

204 Commits

Author SHA1 Message Date
Hitonabi 5b699aaa79 Feat: fit-aware Brain-Update (Speicher-Budget) + brains-Kontext gesenkt (Always-On-Footprint)
- Brain-Kontexte gesenkt (live config): hermes 128K->64K, fast/vision 128K->32K
  -> Always-Warm-Footprint 74GB->51GB, ~23GB frei; heavy/coder passen wieder daneben.
- /api/agent/brain liefert jetzt `budget`: projiziert den Always-On-Footprint mit dem
  empfohlenen Brain gegen das GTT-Budget (aus amdgpu.gttsize) und prueft, ob das groesste
  on-demand-Modell daneben passt (fit.estimate_memory_gb).
- Cockpit Agent-Hirn-Karte: Budget-Zeile (gruen/rot) + Warnung im Update-Confirm, wenn ein
  zu grosses Always-On-Brain das groesste on-demand-Modell verdraengen wuerde. Button wird rot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:56:32 +02:00
Hitonabi 510de69250 Feat: Discover zukunftssicher (Recency-Score) + Agent-Hirn (Hermes) im Modell-Manager
- discover.rank_runnable: Score aus Fit + Recency (lastModified, Halbwertszeit ~9 Mon)
  + Capability (params, log) + Popularity (downloads, log) -> neuere Generationen bevorzugt.
- Agent-Hirn: neuer GET /api/agent/brain (aktuelles hermes-Modell + bestes NousResearch-
  Hermes-Update, versions-aware via Hermes-X.Y-Parsing). Cockpit zeigt "Agent-Hirn (Hermes)"-Karte
  mit aktuellem Brain + Aktualisieren-Button, wenn NousResearch eine neuere Generation hat
  (z.B. Hermes-4-14B -> Hermes-4.3-36B). Update installiert mit Rolle hermes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:44:27 +02:00
Hitonabi 8bb4e11f31 Fix: "Modelle finden" bevorzugt faehigste passende Modelle (kein Downgrade) + Rollen-Farben zentral
- discover.rank_runnable: rankt jetzt fit-level > params_b(desc) > downloads -> fuer die
  128GB-Box wird das faehigste passende (MoE-)Modell empfohlen statt kleiner Populaer-Modelle.
  Top-4-Anzeige nutzt dasselbe Ranking.
- maintenance.model_upgrades: schlaegt KEIN Downgrade mehr vor (rec.params_b >= installiert*0.95).
  Behebt: fast 35B-A3B -> 4B wurde faelschlich als Upgrade angeboten.
- Frontend: Rollen-Farb-Mapping zentralisiert in ModelBadges (ROLE_TONE/roleTone);
  Cockpit/RolesCard/ActiveModelsCard nutzen es statt eigener Duplikate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:35:21 +02:00
Hitonabi 38f0394166 Fix: Modell-Manager Rollen-Taxonomie vereinheitlicht (5 Rollen) + echter Vocab-Check
- Rollen ueberall = fast/heavy/coder/vision/scout (eine Quelle der Wahrheit):
  sources.py CATEGORIES (agent/reasoning raus, fast/heavy rein), llamaswap.ROLE_IDS,
  maintenance ROLE_MAP entfernt (Discover-Rollen == Serving-Rollen), Discover.tsx
  ROLE_METADATA, ModelBadges.ROLES, ActiveModelsCard (stale reasoning-Farbe raus).
  Behebt: Discover zeigte "Reasoning"/"agent"; aus Discover installierte Modelle
  landeten in keinem Cockpit-Slot.
- gguf_meta: Vocab-Check jetzt ECHT - sha256 ueber die vollstaendige Token-Liste statt
  nur Metadaten. Familienunabhaengig (Qwen/Llama/Mistral/...). Verifiziert: Coder + Qwen3-0.6B
  byte-identisch (kompatibel), Qwen3.6 abweichend (inkompatibel), 0.11s/Scan.
- RolesCard SPEC-Badge -> spec_active (Konsistenz mit Cockpit).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:26:27 +02:00
Hitonabi 65d8ab5fe3 Feat: Engine-Update-Mechanismus + Update-Checks (Hermes Agent/AnythingLLM) + WebUI->AnythingLLM
- Engine-Update: deploy/update-engine.sh laedt neuesten ggml-org Vulkan-Build + restart;
  MC_ENGINE_UPDATE_CMD verdrahtet, engine_update_job nutzt es (Script macht Restart selbst).
- Update-Checks: Hermes Agent (NousResearch/hermes-agent, Release-Datum vs. installiertes Commit)
  + AnythingLLM (Mintplex-Labs/anything-llm, neueste Version + /api/ping-Health), 1h-Cache.
  Neues Feld /api/maintenance/updates.components; UpdatesCard zeigt beide Zeilen.
- WebUI -> AnythingLLM: agent_status.webui_* zeigt jetzt auf ANYTHINGLLM_URL (192.168.178.155:3001,
  /api/ping); alle "Hermes WebUI"-Buttons/Labels (AgentView, AgentStatusCard, nav, GuideView,
  Services-Liste) -> "AnythingLLM". Lokaler hermes-webui-Dienst bleibt als Service-Control im SystemDrawer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 02:12:56 +02:00
Hitonabi c48e583790 Feat: Vulkan/RADV-Engine + vocab-gepruefte Spec-Drafts + Provisioning/Sync
Engine-Cutover ROCm/HIP -> Vulkan/RADV (gfx1151): +12-22% tg auf MoE (llama-bench
verifiziert, fast 53->65 t/s). ROCm-Build bleibt als Rollback unter /opt/llamacpp.

- Backend: vocab-aware Speculative Decoding. services/gguf_meta.py liest den
  Tokenizer-Fingerprint (model/pre/n_vocab) direkt aus dem GGUF-Header (ohne Modell-Load);
  register_model + migrate_config haengen nur VOCAB-KOMPATIBLE Drafts an (inkl. --spec-type,
  das in dieser llama.cpp-Generation noetig ist). Neue Endpoints /api/models/drafts + /{id}/draft.
- Frontend: idiotensichere Spec-Draft-UI (SpecDraftModal) - nur kompatible Drafts waehlbar,
  inkompatible gesperrt mit Begruendung; SPEC/SPEC?-Badge nach echtem Aktiv-Status; Rolle in AddModel.
- maintenance.py: Engine-Update-Quelle -> ggml-org/llama.cpp (Build-Nummer-Vergleich),
  ENGINE_PATH=/opt/llamacpp-vulkan.
- Startup-Warmup der brains (deploy/warmup.sh, self-detaching ExecStartPost) + deploy/provision-engine.sh.
- Cleanup: tote LiteLLM gateway/config.yaml + alle Referenzen (config.py/backup.py/backup.sh) entfernt;
  README + docs/memory aktualisiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 01:54:29 +02:00
Hitonabi 45bede6579 Feat: reasoning-Rolle entfernt — Modell geloescht, UI bereinigt
- Nemotron-3-Nano-Omni-30B-A3B-Reasoning von der Box entfernt (25 GB freigegeben)
- llama-swap config: Modell-Eintrag und reasoning-Alias entfernt
- sources.py: reasoning-Kategorie aus CATEGORIES entfernt
- maintenance.py: reasoning->heavy Mapping aus ROLE_MAP entfernt
- llamaswap.py: reasoning aus ROLE_IDS entfernt
- Frontend: reasoning aus allen ROLES-Arrays entfernt (ModelBadges, RolesCard, Cockpit)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 00:11:15 +02:00
Hitonabi 0afddcdfdc Feat: UI-Audit — Telegram/MCP/PC-Status, incomplete-Badge, SSH-Karte ersetzt
- backend: PC_EXECUTOR_URL Env-Var + 3 neue agent_status()-Felder
  (telegram_enabled, mcp_server_count, pc_executor_reachable)
- AgentStatusCard: 2x2-Grid (Gateway/WebUI/Gehirn/Verdrahtung) +
  echte Status-Footer-Zeilen fuer Telegram, MCP-Server-Anzahl, PC
- TokenStatsCard: 'Juni 2026' entfernt, Null-Fallback fuer pricing
- AgentView: SSH-Bypass-Karte ersetzt durch PC-Executor-Statuskarte
- Cockpit + RolesCard: Datei-fehlt-Badge + Load-Button disabled fuer incomplete-Modelle
- api.ts: AgentStatus-Interface um 3 neue Felder erweitert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 00:01:36 +02:00
Hitonabi 93111c6eaf Feat: Live-Panel aktive Modelle + Fix llama-swap Log-Viewer
- ActiveModelsCard: zeigt geladene Modelle (aus /running via useModels) mit
  Rolle, Größe (Unified-RAM) und warm-Status; globaler "Inferenz aktiv"-Puls
  via useTokenStats-Delta. Prominent oben im Dashboard. Kein Backend-Change.
- maintenance.logs(): journalctl ohne sudo zuerst (User in Gruppe adm darf das
  System-Journal lesen), nur bei fehlenden Rechten sudo-Fallback. Behebt
  "Unbekannter Fehler" beim llama-swap-Log im MC2-UI.

tsc + Build grün; Dashboard rendert die Live-Karte (Leerzustand lokal, da Engine
offline), keine Konsolenfehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 19:21:53 +02:00
Hitonabi eafeaf333d Refactor: ModelsView in Cockpit/AddModel/Discover-Dateien zerlegen (Phase 4c)
ModelsView 1455 -> 46 Zeilen reiner Orchestrator. Die drei großen Komponenten
in eigene Dateien verschoben (verbatim, kein Verhaltenswechsel):
- views/models/Cockpit.tsx (~1007 Z., VRAM-HUD, Gateway-Graph, Modell-Bibliothek)
- views/models/Discover.tsx (~285 Z., Empfehlungen) inkl. ROLE_METADATA
- views/models/AddModel.tsx (~131 Z., HF-Download/Suche)

Verifiziert: tsc grün, Build grün, Cockpit- und Discover-Tab rendern ohne
Konsolenfehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 15:03:24 +02:00
Hitonabi f1b0d61ada Refactor: ModelsView auf Hooks + Leaf-Komponenten ausgelagert (Phase 4b)
- JobsBar -> components/models/JobsBar.tsx (useJobs + Invalidierung, useDialog).
- FitBadge/getBrandInfo/ROLES -> components/models/ModelBadges.tsx.
- Cockpit + Discover: manuelles Promise.all+setInterval durch useModels/
  useRouting/useConnect/useUpdates/useDiscover ersetzt; lokaler Dialog-State +
  showAlert/showConfirm/showPrompt durch useDialog; Mutationen invalidieren die
  Query-Keys statt load(). AddModel-Aktionen bleiben imperativ (api()).
- ModelsView 1660 -> 1455 Zeilen; tote Format-/Typ-Importe entfernt.

Verifiziert: tsc grün, Build grün, Cockpit- und Discover-Tab rendern ohne
Konsolenfehler (VRAM-HUD, Registry).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 14:59:19 +02:00
Hitonabi 7a11fd2846 Refactor: DashboardView in Karten zerlegen (Phase 4a)
DashboardView 849 -> ~40 Zeilen Orchestrator. Sechs eigenständige Karten unter
components/dashboard/, jede mit eigenem Daten-Hook (react-query, geteilte Keys):
- RadialGauge, SystemStatusCard (useSystemStatus)
- UpdatesCard (useUpdates+useJobs; OS/Engine-Update, Reboot, Modell-Upgrade,
  Sudo-Modal, invalidiert nach Aktionen)
- AgentStatusCard (useAgentStatus+useModels; Gehirn-Wechsel-Modal)
- RolesCard (useModels), MemoryInputCard (useMemory), TokenStatsCard (useTokenStats)

Kein manuelles useEffect+setInterval mehr; useDialog statt lokalem Dialog-State.
Verifiziert: tsc grün, Build grün, alle 6 Karten rendern, Live-Daten + Pricing-
Footer korrekt, keine Konsolenfehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 14:50:54 +02:00
Hitonabi 0266dc9e92 Refactor: TanStack-Query-Daten-Layer + useDialog (Phase 3b)
- @tanstack/react-query (v5) als zentraler Daten-Layer; QueryClientProvider
  in main.tsx (retry 1, kein refetchOnWindowFocus, staleTime 5s).
- lib/queries.ts: Domänen-Hooks (useHealth/useSystemStatus/useServices/
  useModels/useRouting/useJobs/useTokenStats/useAgentStatus/useUpdates/
  useDiscover/useConnect/useMemory) + zentrale Query-Keys (qk) + invalidate.
  Gleicher Key = eine Anfrage über alle Views (Dedup), einheitliches Polling.
- lib/useDialog.tsx: ein Hook für Alert/Confirm/Prompt statt 5x dupliziertem
  Dialog-State + showAlert/showConfirm.
- api.ts: TokenStats + ModelsResp typisiert.
- Migriert auf Hooks/useDialog: App, SystemView, AgentView, ConnectView,
  MemoryView (manuelles useEffect+setInterval entfernt; Mutationen
  invalidieren gezielt die Query-Keys).

Verifiziert: tsc grün, Build grün, alle migrierten Views ohne Konsolenfehler,
Live-Daten (CPU/RAM/Dienste) rendern korrekt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 14:46:26 +02:00
Hitonabi 74f64731ab Refactor: Frontend-Fundament — Format-Utils, Dialog-Ref, Typen (Phase 3a)
- Neuer lib/format.ts: gb/fmtBytes/fmtSize/fmtEta/fmtCtx zentral; aus
  DashboardView/SystemView/ModelsView entdoppelt und importiert.
- CustomDialog: document.getElementById -> useRef (kein DOM-Query, robuster).
- api.ts: GitInfo/ComponentVersion/Versions typisiert, SystemStatus.versions
  ergänzt; App.tsx nutzt SystemStatus statt any.

tsc grün, Build grün, Dashboard verifiziert (keine Konsolenfehler, Formatierer
rendern identisch).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 14:36:28 +02:00
Hitonabi a7c3f8f516 Refactor: Pricing/Draft-Pfad als Single Source of Truth (Phase 1)
- Neuer services/pricing.py: PRICING-Dict + compute_savings() aus dem
  system-Router extrahiert; Router ist jetzt dünn (nur role_map + Aufruf).
- /system/token-stats liefert zusätzlich das pricing-Dict → Frontend zeigt
  die Tarife daraus an statt sie im Text zu hartkodieren.
- SPEC_DRAFT_MODEL_PATH in config.py (MC_SPEC_DRAFT_MODEL); llamaswap.py und
  migrate_config.py referenzieren die Konstante statt des doppelten Literals.
- Ersparnis-Berechnung verhaltensneutral verifiziert (35,09 $ / 32,28 €).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 14:28:26 +02:00
Hitonabi 35dcc69ba5 Implement prompt caching, speculative decoding config, parallel slots, and dynamic pricing metrics 2026-06-26 14:00:32 +02:00
Hitonabi 2c60caf790 Update API token stats pricing and footer to June 2026 rates 2026-06-26 13:50:46 +02:00
Hitonabi 2e4cddc840 Feat: Add Token Stats and Cost Savings dashboard card and backend tracking 2026-06-26 13:48:32 +02:00
Hitonabi 311f4d7b68 UI: Add fluid resolution-based scaling for WQHD and 4K displays in index.css 2026-06-26 13:44:20 +02:00
Hitonabi 77daa38cf0 UI: Remove redundant Ändern badge from Aktives Gehirn graph node in AgentView 2026-06-26 13:41:34 +02:00
Hitonabi d286dbf203 UI: Redesign active roles overview to slot-centric list in Dashboard and ModelsView 2026-06-26 13:38:58 +02:00
Hitonabi 066feee3ea Feat: Add Hermes brain change buttons and skills.sh guide source 2026-06-26 13:34:53 +02:00
Hitonabi 0c7b0b19af Feat: Add manual updates check, Settings tab, direct model upgrades, logs password redirection, fix engine version detection, and expand AI agent Guide tab 2026-06-26 13:09:50 +02:00
Hitonabi 563e7837b9 feat: add Vorhanden / In Benutzung filter mode to Model Manager 2026-06-26 08:23:50 +02:00
Hitonabi f32e4baf5b fix: convert IDE setup popover in Model Manager to viewport overlay modal to prevent clipping 2026-06-26 08:19:17 +02:00
Hitonabi da929845a9 fix: rename Modell-Zentrale to Modell-Manager and highlight configured models 2026-06-26 08:15:44 +02:00
Hitonabi 4acea97f03 fix: simplify agent graph to show the 4 tiles and fix compilation errors 2026-06-26 08:12:30 +02:00
Hitonabi 18f361d485 fix: resolve SVG dimension observer loading mount lifecycle issue using callback refs 2026-06-26 08:06:01 +02:00
Hitonabi dbe6e4b4f3 fix: resolve connection graph lines stretching and flow visual bugs using ResizeObserver 2026-06-26 08:04:25 +02:00
Hitonabi 42d2e58570 build: include compiled production assets 2026-06-26 08:00:22 +02:00
Hitonabi 1e879ca3c4 feat: show last update check timestamp on dashboard 2026-06-26 07:59:42 +02:00
Hitonabi bc3abb127a feat: simplify Discover view into socket cards & backend upgrades 2026-06-26 07:53:41 +02:00
Hitonabi b90cef3968 feat: enable full model file deletion on disk including split parts and vision adapters, update prompt text 2026-06-26 07:23:06 +02:00
Hitonabi e88dfb8f98 fix: restore static workstation IP for local connection snippets and service urls 2026-06-25 23:12:27 +02:00
Hitonabi b6af1c1b4a fix: dynamically resolve active hostname in guide and connect views 2026-06-25 23:08:54 +02:00
Hitonabi e9fb72fdc7 fix: dynamically resolve localhost/127.0.0.1 in links to active hostname for remote access 2026-06-25 23:06:25 +02:00
Hitonabi 8d5885d683 style: enhance UI aesthetics with vibrant glows, solid cards, hover lift animations, and active nav styling 2026-06-25 23:02:31 +02:00
Hitonabi f1e0503c73 feat: upgrade Modell-Zentrale to Model Control HUD 3.0, delete obsolete RoutingView 2026-06-25 22:56:13 +02:00
Hitonabi b08e867c1a feat: integrate Guide-Tab (Anleitung) for local Vibe Coding and compile frontend 2026-06-25 22:36:58 +02:00
Hitonabi d15744a812 feat: consolidate routing view into models tab, and add updates widget directly to Zentrale dashboard 2026-06-25 22:24:00 +02:00
Hitonabi 6a8e55cc43 feat: complete UI/UX Rework into Sleek Glassmorphic AI OS (June 2026) 2026-06-25 22:18:51 +02:00
Hitonabi e1da5c797d feat(2.0): implement cockpit improvements, dynamic mcp path, v2 venv, and ko-residency 2026-06-25 21:50:16 +02:00
Hitonabi 1f391644ca feat(2.0): W8 — Wartung (OS/Engine/Modell-Updates, Restart, Reboot, Logs)
services/maintenance.py + routers/maintenance.py: updates-Badge (apt/Engine-
Release/dyn. Modell-Upgrades via discover), os-update + engine-update als
jobengine-Jobs, system-/user-aware Restart (llama-swap via sudo -n NOPASSWD),
reboot, logs (journalctl). Frontend: Wartungs-Block in SystemView mit Badge,
Buttons + Modell-Upgrade-Vorschlaegen. Passwortfrei (sudo -n).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 17:43:53 +02:00
Hitonabi 2ea3d01b58 docs(2.0): W4 — Bedien-Anleitung (BEDIENUNG.md) + Hilfe-Link im Cockpit
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 14:35:31 +02:00
Hitonabi c863f01a78 feat(2.0): W2+W3 — HF-Link/Suche + Modell-Verwaltungs-UX
W2: install akzeptiert HF-URL ODER org/repo (normalize_repo); GET /api/hf/
search + /api/hf/quants; Frontend AddModel-Panel (URL+Quant-Dropdown+freie
Suche) im Discover-Tab. W3: POST /api/models/{id}/role + /ctx; Installiert-
Tab mit Rollen-Select (fast/heavy/coder/...), ctx-Edit, Loeschen → LLM
tauschen per Klick.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 14:33:23 +02:00
Hitonabi ceca2ae8e3 feat(2.0): Phase 6c — eingebauter OpenAI-Gateway (model:auto) statt LiteLLM
LiteLLM baut auf Python 3.14 nicht (orjson-Pin ohne cp314-Wheel). Stattdessen
eingebauter Gateway in MC2: routers/gateway_proxy.py (/v1/chat/completions,
/completions, /models) + services/router_logic.py (Komplexitaets-Routing
fast<->heavy, Streaming-Passthrough). gateway.py/routing.py/connect.py auf
builtin umgestellt (Endpunkt = MC :PORT/v1). Gleicher OpenAI-Vertrag,
spaeter gegen LiteLLM austauschbar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:54:19 +02:00
Hitonabi af46a7b041 feat(2.0): Phase 6a — Modell-Install (Download-Jobs + Split + UI)
jobengine portiert (Live-Log + %-Fortschritt aus .incomplete), services/hf.py
(resolve_gguf inkl. Split -of-, Groessen), POST /api/models/install (hf
download als Job + sofortige Registrierung, Split-fest), GET /api/jobs +
cancel. huggingface_hub in requirements. Frontend: Install-Buttons auf
Discover-Karten + Live-Download-Fortschrittsbalken (JobsBar).

Verifiziert: resolve_gguf gegen echte Repos (Qwen3.6-35B-A3B 23GB single,
Qwen3.5-122B-A10B 77GB 3-part split) + Frontend-Build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 09:59:46 +02:00
Hitonabi 2e6655c398 fix(2.0): GPU-Metrik findet Strix-Halo-Card dynamisch (card1) + GTT
Real-Box-Befund: GPU ist card1 (nicht hardcoded card0), Connector-Dirs
uebersprungen. Zusaetzlich GTT (echter Unified-Memory-Pool) statt nur
VRAM-Carve-out. Frontend zeigt GTT bevorzugt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 08:33:29 +02:00
Hitonabi 1f4c987652 feat(2.0): Phase 5 — Betrieb, Observability + Politur
Backup: services/backup.py (Memory-SQLite inkl. WAL/SHM + Configs, retain 7)
+ deploy/backup.sh + POST /api/system/backup + GET /api/system/backups.
Services-Health: GET /api/system/services (aggregierte Reachability +
Observability-Links). Frontend: SystemView mit Dienste-Health + Backup-
Button + Links; Theme-Toggle (Hell/Dunkel, persistent).

Lokal verifiziert: Backup-Snapshot + services-Aggregat (TestClient),
Frontend-Build + Browser (Light-Mode bestaetigt via computed styles).
Damit Phasen 0-5 lokal fertig. Docs aktualisiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 08:29:27 +02:00
Hitonabi c773dd7eae feat(2.0): Phase 4 — Hermes-Schicht (MC-Seite + Runbook)
MC-Seite: services/agent.py + routers/agent.py (GET /api/agent/status:
Gateway/WebUI-Reachability + Verdrahtungs-Hinweise), AgentView (Status-
Tiles, Hermes-oeffnen-Button, Offline-Hinweis). deploy/hermes-webui.service
(systemd-USER, :8787). Box-Runbook docs/HERMES_SETUP.md (hermes-webui
installieren, Brain=model:auto via Gateway, Tools/MCP verdrahten inkl.
mcp_mc+mcp_memory, SSH-Windows, LiteLLM-Caveat #26489).

Lokal verifiziert: agent/status + Frontend-Build + Browser (Hermes-View).
Box-Ausfuehrung der Verdrahtung steht aus (Runbook). Docs aktualisiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 08:22:28 +02:00