HitonabiandClaude Opus 5.5 e9f488b56c
Ampel / ampel (push) Successful in 26s
phase1b: Backend entruempelt und robuster (35 tote Routen raus, Sperren, ehrliche Update-Pruefung)
Ballast raus:
- 35 Routen ohne Nutzer entfernt (agent/*, fit, roles, ctx, drafts, groups, routing/policy,
  system/history, system/self-update, maintenance/reboot, zeitmaschine/inhalt, zeitplan,
  voice/health|metrics|trace|voices|reference|tts). Von 95 auf 60.
- Tote Module geloescht: agent-Router, roles, agent_aktivitaet, metrics_history (samt
  10-s-Sampler), voice_metrics, migrate_config, parse_mc2_timeout, scripts/.
- Unbenutzte Funktionen und Konstanten entfernt (Modell-Upgrade-Empfehlung, Draft-/Kontext-
  Setzer, Konsole, PC-Ausfuehrer-Probe, Routing-Policy-Editor ...).

Robuster:
- Jobs in eigener Prozessgruppe (Abbrechen beendet wirklich alles), Zeitlimit je Job-Art,
  start_job_exklusiv: zwei Klicks starten kein doppeltes Update mehr; alte Jobs raeumen sich auf.
- Update-Pruefung meldet Fehler (pruef_fehler, Lampe "Pruefung unklar") statt "aktuell".
- Nach jedem Update sofort neu pruefen (update_stand) statt 10 Minuten alten Stand zeigen.
- llama-swap-Config: Sperre (RLock + flock) fuer UI, Radar, Aufraeumen und Hirn-Umstellung.
- Hermes-Config: bei Lesefehler nichts schreiben, atomar, mit Sicherung.
- Live-Strom und Gateway-Warnung blockieren den Event-Loop nicht mehr (Lucy, OpenChamber).
- Gateway antwortet bei Engine-Ausfall im OpenAI-Fehlerformat (502) statt nacktem 500.
- Abgestuerzte Waechter-Pruefung wird ein gelber Hinweis statt still zu verschwinden.
- Download laedt nur den gewuenschten Quant (vorher bei Fehlen alle Teile aller Varianten),
  Download-Jobs in Gruppe "download"; HF-Suche kodiert den Suchbegriff.
- Herkunftspruefung: schreibende /api-Aufrufe fremder Webseiten werden abgelehnt (keine
  Anmeldung, User-Entscheid); Skripte, Desktop-Lucy und /v1 unveraendert.
- Modellpfade: Eintragen und Loeschen nur innerhalb von MODELS_DIR.
- Dienste-Liste fragt keine abgebauten Dienste mehr ab (PC-Ausfuehrer haette 3 s gekostet).
- SSE-Fehlerzeilen von /api/voice/chat als gueltiges JSON.
- mission-control-2.service: --timeout-graceful-shutdown 3 (Neustart ohne 10-s-Haenger).

Tests: 92 gruen (neu: Herkunft, Quant-Auswahl, abgestuerzte Pruefung).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 15:08:44 +02:00

Mission Control 2.0

Steuerzentrale des lokalen KI-Stacks auf dem Bosgame M5 (AMD Ryzen AI MAX+ 395 „Strix Halo", 122 GB Unified Memory, keine dedizierte GPU — llama.cpp über Vulkan/RADV). Läuft live als sudo-freier systemd-User-Dienst und ist auf Autonomie ausgelegt: Die Box wartet sich selbst, prüft sich selbst und meldet sich, wenn etwas nicht stimmt.

100 % lokal. Kein Cloud-Modell, kein externer Dienst im Datenpfad.

Die drei Bahnen

Bahn Was sie tut Wo
Steuerzentrale Modelle, Routing, Wartung, Gedächtnis, Ideen-Queue MC2 :9001
Coding Agentic IDE (z.B. OpenCode Desktop) auf Dev-PC via lokaler API + MCP 100% lokal
Lucy Innere Stimme am PC (HUD, kein Avatar) und auf Telegram — eine Stimme, ein Hirn eigenes Repo Hitonabi/lucy

Lucy holt ihr Hirn direkt über das MC2-Gateway (:9010/v1) mit nativer Bildweiche und Voice-Streaming.

Ports & Dienste

Port Dienst Erreichbar
9001 MC2 (FastAPI + React) — Cockpit, API, Konsole LAN
8080 llama-swap — Modell-Router LAN
9010 mc2-gateway/v1-Datenpfad (model: auto, Bild-Weiche) loopback
8642 · 9119 Hermes-Gateway · Hermes-Web-UI loopback
8765 · 8650 Mem0-Sidecar · Voice-Sidecar (STT/TTS) loopback
7682 ttyd — Box-Konsole, same-origin unter /console/ loopback

Units in deploy/: mission-control-2 · mc2-gateway · mc2-steward · mem0-service · voice-service · box-console · hermes-builtin-ui + Timer für Backup, Auto-Update und Self-Smoke. llama-swap läuft als System-Unit.

Die Bau-Pipeline

Idee in MC2  →  Gitea-Repo (mit CI-Ampel + VERIFY)  →  in Agentic IDE bauen  →  Ampel  →  main
     └── autonomes Vibe Coding via OpenCode Desktop + MCP

Jedes neue Repo wird von deploy/gitea-repo-create.sh mit beiden Wächtern geboren:

  • .gitea/workflows/ci.yml — die Außen-Prüfung nach dem Push (Gitea Actions)
  • VERIFY — die Innen-Prüfung: eine Zeile, wie man das Projekt testet. Die Agentic IDE führt sie im Mix-Ansatz vor jedem Push aus, um Code-Fehler ("Quality Gap") abzufangen. Keine VERIFY-Datei = Prüf-Tor aus.

Modelle & Rollen

Gemessen auf der Box (Stand: 27.08.2026, Vulkan b10653):

Rolle Modell Tempo Aufgabe
coder Qwen3.8-27B (dicht, 27B) 12,7 t/s Plant und baut — der Haupt-Coder. 131k Kontext (ganzer Slot), multimodal
hermes / fast Qwen3.6-35B-A3B 69,690 t/s Lucys Hirn und Sucher-Subagent. Immer warm, 65k/Slot
debugger Muse-Glimmer-30B 4050 t/s (DFlash) Runtime-Debugger & Fehler-Diagnostiker (multimodal)
vision Qwen3-VL-30B-A3B auf Abruf Lucys Augen (On-Demand)
heavy gpt-oss-120b nur nachts Chef-Gutachter (4:30 Uhr). Nie tagsüber — verdrängt das warme Set
embed · reranker Qwen3 0.6B immer warm Vektorsuche + Feinsortierung

Sieben Rollen, mehr nicht. Frühere Fassungen listeten hier auch kritiker, scout und dense-planer — die Modell-Konsolidierung vom 19.08. hat sie entfernt (ein Coder, ein Agent-Hirn). Der dichte 27B ist seither nicht mehr „Planer" neben dem Coder, sondern ist der Coder. Details: docs/wissen/STACK.md.

‼️ Dichte Modelle sind auf dieser Box bandbreitengebunden. Der Prefill bricht mit wachsendem Kontext ein — beim früheren Kritiker (Devstral, dicht) waren bei 32k gemessene 63 t/s ≈ 9 Minuten nur zum Lesen, weshalb er hart auf 16k gedeckelt war. Das gilt weiter für jedes dichte Modell: coder (Qwen3.8-27B) liefert ~12,7 t/s gegen ~90 t/s des MoE-Hirns — kein Konfigfehler, sondern das 215-GB/s-Limit der Plattform. Der Kritiker selbst ist seit dem 19.08. nicht mehr im Stack.

‼️ Speicher-Regel: Warm-Set + größtes On-Demand-Modell ≤ ~115 GB. Die ko-residente Gruppe (groups.brains) steht auf persistent: true (Verdrängungsschutz; live gegengeprüft 27.08.2026). Wichtig ist nicht der Schalter, sondern: alles, was gleichzeitig warm sein muss, gehört in DIESELBE Gruppe — zwei Gruppen verdrängen sich gegenseitig, und persistent schützt nicht davor (gemessen 25.07.). Details und Messwerte: docs/wissen/VERDIKTE.md.

Qualitäts-Tore

  1. Prüf-TorVERIFY nach jeder Etappe; rot → der Agent (OpenCode Desktop) repariert lokal nach.
  2. CI-Ampel — Lint (ruff) · Import/Syntax (compileall) · Frontend-Build. Läuft in Gitea.

Gemeinsame Lehre dahinter: Wissen lebt in Datei + git, nicht im schrumpfenden Chat-Kontext. Kontext-Komprimierung löscht still die Regeln mit.

Selbsterhaltung

  • Health-Wächter (sentry) + Warm-Set-Wächter (warmer, per Env abschaltbar)
  • Updates mit Fangnetz — Backup → Update → Postcheck → bei Fehler Auto-Rollback + Pin
  • Melde-Briefkasten (/api/voice/announce) — alles, was die Box von sich aus sagen will; Lucy pollt ihn und spricht es. Absender loop = Coding-Ereignisse
  • Gedächtnis — Mem0-Sidecar, auto-lernend, semantisch, mit Auto-Dedupe
  • Tägliche Self-Smokes, Zeitmaschine (Snapshot + Ein-Klick-Restore), Chronik der autonomen Taten

API (Auswahl)

health · models/* · discover · fit · groups · routing/* · system/* · maintenance/* · connect · memory/* · agent/* · ideen/* · lucy/stimme/* · chronik · eigenleben · wissen · zeitmaschine/* · reminders/* · voice/* · events (SSE) OpenAI-kompatibel: /v1/chat/completions, /v1/completions. MCP-Server: mcp/.

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

frontend/dist wird mitcommittet — die Box hat kein Node; Deploy ist ein git pull plus Dienst-Neustart. Vor jedem Commit lohnt der Ampel-Vorlauf: ruff check . und npm run build.

Env-Vars (Auswahl)

Variable Default Zweck
MC_PORT 9000 MC-Backend-Port (die Unit auf der Box setzt 9001)
MC_LLAMA_SWAP_URL http://127.0.0.1:8080 Engine/Router
MC_CONFIG_PATH /etc/llama-swap/config.yaml llama-swap-Config
MC_V1_UPSTREAM gesetzt → /v1 geht an mc2-gateway (:9010) statt in-process

| MC_ENGINE_PATH | /opt/llamacpp-vulkan | aktive Engine (Vulkan-Build) | | MC_REWARM_ENABLED | 1 | Warm-Set-Wächter (auf der Box bewusst 0) | | MC_DRAFTS_DIR · MC_SPEC_TYPE | $MODELS/drafts · draft-simple | Spekulatives Dekodieren |

Weiterlesen

Dokument Inhalt
docs/BEDIENUNG.md Wie man MC2 benutzt
docs/RUNBOOK.md · docs/DISASTER_RECOVERY.md Betrieb, Störungen, Wiederherstellung
docs/HERMES_SETUP.md Hermes-Agent, Profile, Crons
docs/wissen/VERDIKTE.md Finale Technik-Entscheide — nicht neu aufrollen
docs/wissen/FALLEN.md · docs/wissen/OFFENE-FAEDEN.md Stolpersteine · offene Punkte

| AGENTS.md | Arbeitsregeln für Agenten in diesem Repo |

S
Description
No description provided
Readme
108 MiB
Languages
Python 72.2%
TypeScript 13.3%
Shell 13.1%
CSS 0.5%
JavaScript 0.4%
Other 0.4%