Auftragsbuch 93c17fe653
Ampel / ampel (push) Failing after 22s
Revert "Auftragsbuch: 'feature/mem0-venv-update' angenommen (Ein-Klick-Gate)"
This reverts commit ae622dfa88, reversing
changes made to 76d2d7c74b.
2026-08-02 12:13:43 +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, Auftragsbuch MC2 :9001
Coding Zed + OpenCode am Tag, opencode-lauf.sh in der Nacht — ein Regelwerk, zwei Auslöser Governor :8100
Lucy Sprach-Companion mit 3D-Avatar, Augen und Ohren eigenes Repo Hitonabi/lucy

Lucy holt ihr Hirn über MC2, spricht aber nie durch den Governor — ein Gespräch ist keine Bau-Sitzung und wird nie unterbrochen.

Ports & Dienste

Port Dienst Erreichbar
9001 MC2 (FastAPI + React) — Cockpit, API, Konsole LAN
8100 Governor — Token-Wächter vor dem Gateway 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 · governor · mem0-service · voice-service · box-console · hermes-builtin-ui + Timer für Backup, Auto-Update, Self-Smoke und Bagatell-Annahme. llama-swap läuft als System-Unit.

Der Weg einer Idee

Idee in MC2  →  Gitea-Repo (mit CI-Ampel + VERIFY)  →  in Zed bauen  →  Ampel  →  main
     └── oder nachts: Hermes-Cron → opencode-lauf.sh → dieselben Regeln

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. Das OpenCode-Plugin führt sie nach jeder Etappe aus und gibt rote Tests dem Agenten sofort zurück, statt sie erst der CI zu zeigen. Keine VERIFY-Datei = Prüf-Tor aus.

Modelle & Rollen

Gemessen auf der Box (25.07.2026, Vulkan, Q4):

Rolle Modell Tempo Aufgabe
coder Qwen3-Coder-Next (80B-A3B) 51,5 t/s · Prefill 754 t/s Plant und baut — Kopf der Coding-Mannschaft
hermes / fast Qwen3.6-35B-A3B 69,6 t/s Lucys Hirn und der Sucher-Subagent. Immer warm
kritiker Devstral-Small-2-24B 15,0 t/s · Prefill 265318 t/s Liest gegen — bewusst fremde Modellfamilie (Mistral statt Qwen)
vision Qwen3-VL-30B-A3B auf Abruf Lucys Augen
heavy gpt-oss-120b nur nachts Chef-Gutachter (4:30). Nie tagsüber — verdrängt das warme Set
embed · reranker Qwen3 0.6B immer warm Gedächtnis + Feinsortierung

‼️ Der Kritiker ist bewusst auf 16k Kontext gedeckelt. Devstral ist ein dichtes Modell — auf dieser bandbreitenbegrenzten Box bricht sein Prefill mit wachsendem Kontext ein (bei 32k gemessene 63 t/s ≈ 9 Minuten nur zum Lesen). Mit dem 16k-Deckel bleibt der schlimmste Fall je Review unter einer Minute. Deshalb ist er der Gegenleser für Etappen, nicht der Coder — als Coder ist er auf dieser Box disqualifiziert (siehe VERDIKTE).

‼️ Speicher-Regel: Warm-Set + größtes On-Demand-Modell ≤ ~115 GB. Die ko-residente Gruppe (groups.brains in der llama-swap-Config) muss persistent: false sein — sonst räumt llama-swap vor einem großen Modell nicht ab und der Kernel schießt Prozesse ab. Details und Messwerte: docs/wissen/VERDIKTE.md.

Qualitäts-Tore

  1. Werkzeug-Zaun (deploy/opencode/plugin/) — blockt git push, rm -rf, sudo, curl | sh und Fremd-Hosts im Agentenlauf.
  2. Prüf-TorVERIFY nach jeder Etappe; rot → der Agent repariert selbst weiter (max. 3 Runden).
  3. Governor (deploy/governor/) — zählt Tokens ehrlich (aus den echten usage.prompt_tokens jeder Antwort, selbstkalibrierend). Bei ~45.000: Savepoint schreiben und Sitzung sauber beenden. Bei ~50.000: harter Riegel. Sichtbar als Kachel im Cockpit.
  4. CI-Ampel — Lint (ruff) · Import/Syntax (compileall) · Frontend-Build. Läuft bei jedem Push.

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/* · **governor** · ideen/* · auftragsbuch/* · 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_GOVERNOR_URL http://127.0.0.1:8100 Token-Wächter für die Cockpit-Kachel
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

Governor-eigene Schalter (GOV_THRESHOLD, GOV_HARD_CEILING, GOV_EXEMPT_MODELS, …): deploy/governor/README.md.

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/AUFTRAGSBUCH.md Vorschlags-Inbox und das Ein-Klick-Gate
docs/wissen/VERDIKTE.md Finale Technik-Entscheide — nicht neu aufrollen
docs/wissen/FALLEN.md · docs/wissen/OFFENE-FAEDEN.md Stolpersteine · offene Punkte
deploy/opencode/README.md Coding-Bahn: Mannschaft, Verteilung, Fallen
AGENTS.md Arbeitsregeln für Agenten in diesem Repo
S
Description
No description provided
Readme 60 MiB
Languages
Python 43.8%
TypeScript 36.2%
Shell 19.5%
CSS 0.4%