Files
mission-control-v2/docs/aufgaben/umbau-openchamber.md
T

9.2 KiB
Raw Blame History

Umbau: OpenChamber als Coding-Bahn, Lucy bleibt SysAdmin

Entschieden 21.08.2026. Rückbau der Hermes-Coding-Bahn ist erledigt, der Aufbau von OpenChamber steht aus. Diese Datei ist die Übergabe an die nächste Sitzung.

Die Entscheidung

Zwei getrennte Bahnen — der Weg, der bei diesem Stack schon einmal funktioniert hat:

Bahn Werkzeug Zweck
Betrieb Hermes-Runtime (Lucy) SysAdmin, Telegram, Crons, Gedächtnis, Skills, Stimme, PC-Steuerung
Coding OpenChamber über OpenCode Nur programmieren. Getrennt von Lucy.
Motor llama-swap :8080 / MC2-Gateway :9010 beide Bahnen teilen sich die Modelle
Steuerpult MC2 :9001 unverändert

Warum getrennt: Der Versuch, beides in Hermes Desktop zu vereinen, ist an zwei Dingen gescheitert — die Gateway-Registry akzeptiert kein Benutzer/Passwort (nur Session-Token oder OAuth, beides für eine selbstgehostete Box ungeeignet), und der Sessions-Reiter fiel dadurch immer auf „This device" zurück. Details in der Gedächtnisnotiz vom 20./21.08.

Was bereits erledigt ist (21.08.)

PC:

  • Hermes Desktop + CLI deinstalliert (hermes uninstall --full), Reste von Hand entfernt
  • AppData\Local\hermes, AppData\Roaming\Hermes, ~\.hermes — alle weg
  • Startmenü- und Desktop-Verknüpfungen entfernt
  • Env-Variablen bereinigt; HERMES_PC_TOKEN bleibt bewusst (Lucys PC-Executor auf :7777)
  • Node v24.19.0 in Program Files ist unabhängig → bleibt, erfüllt OpenChambers Anforderung (≥22)

Box:

  • Bot-Profile coder + debugger entfernt (gesichert in ~/archiv-aufraeumen-20260820/)
  • ~/.hermes/desktop-ssh/ entfernt, desktop-auth.env entfernt
  • ufw: Port 9119 wieder zu — nur noch 22 · 9001 · 8080 · 7681
  • Dashboard bleibt auf 0.0.0.0:9119 gebunden mit Anmeldung, damit MC2s /hermes-ui-Proxy nicht mehr passwortlos aus dem LAN erreichbar ist (das war ein offenes Scheunentor). Zugang: ~/.hermes/dashboard-login.txt (0600), Benutzer commander. ‼️ Zugangsdaten stehen nur in config.yaml — die frühere EnvironmentFile hat sie still überstimmt und kostete eine Fehlersuche. Eine Quelle, eine Wahrheit.

Verifiziert nach dem Rückbau: 5 Dienste aktiv · 4 MCP-Server · 4 Crons · Telegram connected · PC-Executor HTTP 200. Lucy ist vollständig funktionsfähig.

Was aufzubauen ist

1. OpenCode auf der Box

Wurde beim Juli-Rückbau entfernt (command -v opencode → leer). Muss neu.

# Installation (Box)
curl -fsSL https://opencode.ai/install | bash

# Provider auf den lokalen Motor zeigen lassen: ~/.config/opencode/opencode.json
#   base_url  http://127.0.0.1:9010/v1   (MC2-Gateway, kann model:auto)
#   oder      http://127.0.0.1:8080/v1   (llama-swap direkt)
#   api_key   local

Als systemd-User-Dienst (wie alle anderen — reboot-fest, sudo-frei):

opencode serve --hostname 0.0.0.0 --port 4096

Danach ufw allow from 192.168.178.0/24 to any port 4096 proto tcp.

2. OpenChamber auf dem PC

Desktop-Version von den GitHub-Releases (openchamber/openchamber, MIT, ~9,1k ★). Wichtig: Die Desktop-Variante bringt eine eigene OpenCode-CLI mit — für den Remote-Betrieb muss sie ausgeschaltet werden:

OPENCODE_HOST       = http://192.168.178.151:4096     ← volle Adresse MIT Port, OHNE Pfad
OPENCODE_SKIP_START = true

Fehlt der Port oder hängt ein Pfad dran, ignoriert OpenChamber die Variable und startet stillschweigend seinen eigenen Server. Genau diese Klasse Fehler hat uns bei Hermes einen halben Tag gekostet.

Modelle, Provider und Schlüssel liegen in OpenCode, nicht in OpenChamber.

3. Modellwahl — nicht wieder den dichten Coder

★★ fast (Qwen3.6-35B-A3B) nehmen, nicht coder (Qwen3.8-27B). Gemessen:

Ausgabe Eingabe SWE-bench Verified
fast Qwen3.6-35B-A3B (MoE) 95,7 t/s 221 t/s 73,4
coder Qwen3.8-27B (dicht) 12,6 t/s 144 t/s keine agentische Messung

Das dichte Modell ist bandbreitenlimitiert (17 GB ÷ 215 GB/s ≈ 12,6 t/s = Hardware-Limit). Der MoE ist schneller und besser.

4. Die Arbeitsanweisung mitnehmen — der wichtigste Fund überhaupt

Der Agent las in Lauf A eine ganze Nacht lang und schrieb null Dateien. Mit dieser Zeile im Auftrag schrieb er in 24 Minuten fünf:

„Arbeite Datei für Datei. Lies HÖCHSTENS zwei Dateien, bevor du die erste änderst. Kein Gesamtplan, keine Vollinventur. Eine halbfertige Änderung ist wertvoller als eine vollständige Analyse ohne Änderung."

Gehört in OpenChambers System-Prompt bzw. AGENTS.md der Projekte.

Bekannte Fallen (aus dem Juli-Audit + heute)

  • Bus-Faktor 1 bei OpenChamber: ~7080 % der Commits von einer Person. Version pinnen, nicht blind auto-updaten.
  • Windows-Installer unsigniert → SmartScreen-Warnung ist erwartbar, kein Alarm.
  • Nie ohne --ui-password über localhost hinaus binden.
  • opencode web (nicht OpenChamber!) hat einen kaputten Projekt-Finder für $HOME — falls irgendwo ein leerer Projektbaum auftaucht, ist das der Grund.
  • Git-Push zum Gitea geht vom PC nur über PowerShell/GCM, nicht aus der Git-Bash.

Erster Test nach dem Aufbau

Die Referenzaufgabe liegt bereit und ist halb erledigt — ideal zum Vergleich:

Worktree:  ~/projekte/mc2-referenz   (Zweig referenz/mem0-ausbau)
Aufgabe:   docs/aufgaben/referenzaufgabe-mem0-ausbau.md
Prüfung:   bash docs/aufgaben/referenz-check.sh
Stand:     5 von 17 Dateien erledigt (Hermes-Lauf A2, abgebrochen durch SSH-Fehler)

Damit lässt sich direkt vergleichen: Wie lange braucht OpenChamber + fast für dieselben 17 Dateien? Hermes + dichter Coder brauchte hochgerechnet ~80 Minuten; die Rechnung für fast sagt ~30.


Stand nach dem Aufbau (21.08.2026)

Beide Bahnen stehen. Der Aufbau ist erledigt, der Referenzlauf steht aus.

Box (192.168.178.151)

Sache Wert
OpenCode 1.18.20, ~/.opencode/bin/opencode (eigenständiges Binary, kein Node nötig)
Dienst opencode-server.service (systemd user, enabled, Linger=yes → reboot-fest)
Lauscht 0.0.0.0:4096, Arbeitsverzeichnis ~/projekte
ufw Regel 5: 4096/tcp ALLOW IN 192.168.178.0/24
Provider boxhttp://127.0.0.1:9010/v1 (MC2-Gateway), apiKey: local
Modelle box/fast (Standard) · box/heavy · box/hermes (small_model) · box/coder (nur Vergleich)
Autoupdate false in opencode.json

Konfiguration: ~/.config/opencode/opencode.json. Nur Rollen-Aliase, keine Modell-Eigennamen — die Konsolidierung wirft Eigennamen sonst raus (Regel vom 20.08.).

Arbeitsanweisung — global verdrahtet

Liegt als ~/.config/opencode/ARBEITSANWEISUNG.md und ist über instructions in opencode.json in jeder Sitzung aktiv, nicht nur in Projekten mit AGENTS.md. Gegengeprüft: „Wie viele Dateien höchstens?" → 2. ~ wird von OpenCode expandiert.

PC

Sache Wert
OpenChamber v1.19.0 (18.08.), %LOCALAPPDATA%\Programs\@openchamberelectron
Signatur NotSigned — erwartet, kein Alarm
OPENCODE_HOST http://192.168.178.151:4096 (User-Env, mit Port, ohne Pfad)
OPENCODE_SKIP_START true (User-Env)

Verifiziert: OpenChamber hält 8 offene TCP-Verbindungen zur Box auf :4096, startet keinen eigenen OpenCode (kein lokaler Prozess, kein lokaler Port). Damit ist genau der Punkt genommen, an dem Hermes Desktop gescheitert ist.

Auto-Update: kein Riegel nötig. Im Bundle steht autoUpdater.autoDownload = false und autoInstallOnAppQuit = false — OpenChamber lädt nie von selbst, es meldet nur und wartet auf einen Klick. Die Version ist damit faktisch gepinnt.

‼️ Offene Sicherheitsentscheidung — bewusst so gewählt

Der Server läuft ohne Anmeldung im LAN. Beim Start meldet er selbst:

Warning: OPENCODE_SERVER_PASSWORD is not set; server is unsecured.

Praktisch heißt das: jedes Gerät im 192.168.178.0/24 kann über die API beliebige Befehle als hitonabi auf der Box ausführen — dieselbe Klasse Loch wie das passwortlose Dashboard auf :9119, das am 20.08. zugemacht wurde.

★★ Ein Riegel wäre da und kostet nichts: OpenChamber schickt HTTP-Basic-Auth mit, wenn OPENCODE_SERVER_PASSWORD gesetzt ist (Benutzer aus OPENCODE_SERVER_USERNAME, Standard opencode). Server-Variable in der systemd-Unit, gleiche Variable als User-Env auf dem PC — kein Tunnel, keine Umstellung, der Port bleibt offen im LAN.

Der User hat am 21.08. bewusst dagegen entschieden („so lassen"). Nicht neu aufrollen, aber hier notiert, damit es kein stiller Defekt bleibt.

Nächster Schritt: der Referenzlauf

Alles steht bereit, nichts wurde am Prüfstand angefasst:

Worktree:  ~/projekte/mc2-referenz   (Zweig referenz/mem0-ausbau)
Stand:     5 von 17 Dateien erledigt, referenz-check.sh sagt ROT
Prüfung:   bash docs/aufgaben/referenz-check.sh

Die Arbeitsanweisung wirkt dort über die globale Instruktion — AGENTS.md im Worktree wurde absichtlich nicht angefasst, damit der Vergleich zu Lauf A/A2 sauber bleibt. Zu messen: Wie lange braucht OpenChamber + fast für dieselben 17 Dateien? Hermes + dichter coder brauchte hochgerechnet ~80 Minuten; die Rechnung für fast sagt ~30.