Hitonabi 0c69c491e5 Single Source of Truth: Frontend/Backend-Ungereimtheiten ausgeraeumt (Review 15.07.)
Backend (Wahrheit reparieren):
- gateway_reachable() prueft jetzt den ECHTEN mc2-gateway (:9010 via V1_UPSTREAM)
  statt nur die Engine - toter Denkpfad war in Health/Cockpit unsichtbar
- /api/system/services vollstaendig: + LLM-Gateway, + Steuerpult, + Waechter
  (mc2-steward via is-active); scope-Feld (user/system); mc2-gateway/mc2-steward
  in die Restart-Allowlist
- Connect-Health Leitung 1 prueft den Client-Pfad (V1_UPSTREAM statt llama-swap)
- agent_status liefert pc_executor_url (UI zeigte hartcodierte IP/Ports)
- SSE-Endlosschleife gefixt: /api/auftragsbuch schrieb announce-branches bei JEDEM
  Aufruf neu -> mtime-Bump -> invalidate -> Refetch im 3-s-Takt je Client;
  jetzt nur noch bei echter Aenderung

Frontend (ein Datenweg):
- SystemDrawer komplett auf React-Query-Hooks (vorher eigenes 3-s-setInterval auf
  dieselben Endpunkte inkl. teurem Updates-Check); Dienste-Liste = Backend-Antwort
  (SERVICES-UI-Kopie geloescht); useDialog statt Eigenbau; fmtBytes statt Duplikat
- useLucyHealth: Dienst-Matching per systemd-unit statt Namensfragment; Gateway-
  Reparatur zielt auf mc2-gateway; neuer Waechter-Check; Backend-tot => ehrliches
  rotes Verdikt statt eingefrorener letzter Stand (auch Sidebar)
- Toter Code raus: views/models/Cockpit.tsx (908 Z.) + RoleAssignModal + Placeholder;
  LaneEditor (Routing-Policy) + WarmSetManager damit ZURUECK im UI als Tab
  "Routing & Warm-Set" im Modell-Manager
- Cockpit: blockierte Ideen-Karten erscheinen in "Braucht dich" + Kachel-Hint;
  Verbinden-Kachel zeigt 3 Leitungen live statt hartem "Zed"
- Maschinenraum: ehrliches "frei" (reale Belegung) + eigenes KV-Cache-Segment
- AgentView: Ports/PC-Adresse aus der API; Guide lehrt Lanes chat/coding
- queries.ts: useModels nutzt SSE-relax; Chronik-Limit im Query-Key;
  useJobs/useZeitmaschine mit enabled-Schalter

Verifiziert: tsc+vite gruen, Backend-Smoke beide Gateway-Modi, UI live gegen die
Box (Cockpit/Werkbank/Routing-Tab/Drawer rendern mit Echtdaten).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 22:27:32 +02:00

Mission Control 2.0

Komponierbarer Local-AI-Stack für den Bosgame M5 (Strix Halo). Läuft live auf der Box als sudo-freier systemd-User-Dienst (:9001) und ist als Final-Version eingefroren — Pflege übernehmen ab jetzt die selbst-wartenden Box-KIs (Auto-Update mit Fangnetz + die „Werkstatt"), nicht mehr manuelle Releases.

Schichten: Engine (llama.cpp Vulkan/RADV auf Strix Halo) · Router (llama-swap, Ko-Residenz-Warm-Set) · Builtin-Routing-Gateway in MC2 (model: auto, kein externer LiteLLM — scheitert auf Python 3.14) · Mission Control 2.0 (FastAPI + React/shadcn) · Hermes Agent (api_server-Gateway :8642, Tools/MCP/Telegram/cron) · auto-lernendes Gedächtnis (Mem0-Sidecar, semantisch). Jede Schicht hinter stabilem Vertrag austauschbar.

Sprachassistentin Lucy (Voice + 3D-Avatar) ist in ein eigenes Repo ausgelagert (Hitonabi/lucy) und spricht über den Hermes-Gateway. Aus MC2 selbst sind die Voice-/ Web-Reste entfernt — MC2 ist die Steuerzentrale, kein Sprach-Frontend.

Status: live + eingefroren (MC2 Final)

Der ganze Stack ist auf der Box in Betrieb und auf Autonomie ausgelegt (Ziel: läuft auch ohne Betreuung monatelang weiter):

  • Modelle & Routing — Discover (live HF + Fit/Caps), Engine-Write (register, groups/ Ko-Residenz, vocab-geprüfte Spec-Drafts), Gateway model: auto + Fallbacks.
  • System & Wartung — Status (CPU/RAM/GPU/Disk), ehrliche Speicher-Zahlen (echte KV-Bytes aus GGUF-Architektur), Logs mit Fehler-Filter, Dienst-Neustart (sudo-frei).
  • Updates mit Fangnetz — OS/Engine/Router/Hermes per Timer: Backup → Update → Postcheck → bei Fehler Auto-Rollback + Pin; verständliche Zusammenfassung („Musst du etwas tun?") in Lucys Stimme. Eigene Software wird eingefroren, nicht geupdatet.
  • Gedächtnis — Mem0-Sidecar (auto-lernend, semantisch), 4 Kategorien, Auto-Dedupe.
  • Selbsterhaltung — Health-Wächter (sentry), Warm-Set-Wächter (warmer), tägliche Self-Smokes, Lucy-Watchdog + Alarmkette; Werkstatt (Hermes wartet den Stack via Gitea- Branch → Gate → Deploy selbst).

API: health · models · discover · fit · models/register · groups · routing · system/* · maintenance/* · connect · memory/* · agent/* · voice/announce · reminders/*. MCP: mcp/. Box-Runbooks: docs/HERMES_SETUP.md, docs/RUNBOOK.md, docs/BEDIENUNG.md + deploy/ (Units, deploy.sh, backup.sh, warmup.sh).

Entwickeln

Backend:

cd backend
python -m venv .venv && .venv/Scripts/python -m pip install -r requirements.txt   # Windows
.venv/Scripts/python -m uvicorn app:app --port 9000

Frontend (Dev, proxyt /api → :9000):

cd frontend
npm install
npm run dev          # http://localhost:5173

Frontend (Build → wird vom Backend ausgeliefert):

cd frontend && npm run build   # → frontend/dist

Env-Vars (Auswahl)

Variable Default Zweck
MC_LLAMA_SWAP_URL http://127.0.0.1:8080 Engine
MC_CONFIG_PATH /etc/llama-swap/config.yaml llama-swap Config
MC_GATEWAY_URL http://127.0.0.1:$MC_PORT Builtin-Gateway (Teil von MC2, kein externer Dienst)
MC_PORT 9000 MC-Backend-Port
MC_ENGINE_PATH /opt/llamacpp-vulkan Aktive Engine-Binary (Vulkan-Build)
MC_ENGINE_REPO ggml-org/llama.cpp Quelle für Engine-Update-Check
MC_DRAFTS_DIR $MODELS/drafts Spec-Draft-Modelle (vocab-geprüft)
MC_SPEC_TYPE draft-simple Speculative-Decoding-Typ (llama.cpp)
S
Description
No description provided
Readme 60 MiB
Languages
Python 43.8%
TypeScript 36.2%
Shell 19.5%
CSS 0.4%