doku: Wissen auf den Box-Wart-Stand (STACK, VERDIKTE, FALLEN, ARBEITSWEISE, OFFENE-FAEDEN)
- STACK.md: Stand 24.09. - Dienste mit Zustand (Konsole und Spracherkennung schlafen), Units im Repo und nur auf der Box, Modelltabelle aus der Config vom 24.09. (Hirn, Coder, zwei Bild-Zwillinge, brains mit exclusive: false), Hermes v0.21.4 mit MCP-Stand nach der Diaet, vollstaendiger Automatik-Fahrplan (Timer, Hermes-Crons, NerdQuiz 03:00), Coding-Bahn OpenChamber, Sicherheit in einem Satz. - VERDIKTE.md: Box-Wart-Verdikte vom 23./24.09. ergaenzt (Umbau statt Neubau, zwei Instanzen, Homelab-Rechte und -Updates, keine Anmeldung, Nachtruhe, Timer, Box-Diaet, Radar-Leitplanken, Bild-Zwillinge, exclusive: false); Ueberholtes in eine Tabelle "Ueberholt (mit Datum)"; Formatfehler (Zeilen mit "|-") beseitigt. - FALLEN.md: neue Fallen (Persistent=true, Abzug ueberschreibt lebende Config, Jobs sterben bei MC2-Neustart, exclusive, Draft+Bild=500, Hermes-Cron als Updater, write_file, web_extract, Gitea-SSH-Benutzer); Werkstatt-, Kritiker-, Delegations- und Desktop-Fallen gestrichen. - ARBEITSWEISE.md mit GRENZEN.md zusammengelegt; Flaechen-Tabelle fuer Box-Wart, Homelab-Teil, Lucy, Hermes, Telegram, OpenChamber, Android-App. - OFFENE-FAEDEN.md neu: Phasen 0-5 laut Plan (Phase 1 laeuft, Oberflaeche und Doku offen) und 13 offene Einzelpunkte, alle am Code in main belegt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
59631601b9
commit
24e6dd81ba
+121
-129
@@ -1,148 +1,140 @@
|
||||
# Stack-Wahrheiten — Infrastruktur, Dienste, Modelle
|
||||
# Stack-Wahrheiten — Maschinen, Dienste, Modelle, Automatik
|
||||
|
||||
_Live gegen die Box verifiziert am **19.08.2026** (Dienste-Liste, llama-swap-Config, hermes
|
||||
--version, /api/health); Engine, Hermes und llama-swap-Config nachgemessen am **17.09.2026**
|
||||
(llama.cpp b11026, Hermes v0.21.3, `--load-mode none`). Bei Widerspruch zu älteren Docs gewinnt
|
||||
diese Datei. Wer sie ändert: erst messen, dann schreiben._
|
||||
_Stand 24.09.2026. Quellen: Code in `main` (`4cd856b`: Units, `deploy/llama-swap.config.yaml`, Skripte)
|
||||
und die Prüfberichte vom 24.09.2026 (live auf der Box gelesen). Bei Widerspruch zu anderen Dokumenten
|
||||
gewinnt diese Datei. Wer sie ändert: erst messen, dann schreiben, Datum dazu._
|
||||
|
||||
## Maschinen & Zugänge
|
||||
## Maschinen und Zugänge
|
||||
|
||||
| Was | Wo |
|
||||
|---|---|
|
||||
| **AI Box** (Bosgame M5, Ryzen AI MAX+ 395, 128 GB unified) | `hitonabi@192.168.178.151` (SSH); Zeitzone **Europe/Berlin** |
|
||||
| **Windows-PC** („Tobis PC", 9070 XT) | `192.168.178.98` — PC-Executor `:7777` (Task `HermesPCExecutor`, Bearer-Token) |
|
||||
| **Proxmox** | `root@192.168.178.108:8006` (PW in Keepass) — LXCs: adguard(100), npmplus(101), netbird(102), gitea(104), PBS(105) |
|
||||
| **PBS** (Proxmox Backup Server) | `192.168.178.156:8007`, Datastore `qnap` |
|
||||
| **QNAP TS-228A** „TobiNAS" | `192.168.178.62` — Freigabe `/Backup` per NFSv3 exklusiv an pve |
|
||||
| **Gitea** | `git.tobisniceshomelab.ddnsfree.com` (lokal `192.168.178.153:3000`); Push-to-Create AUS |
|
||||
| Was | Wo | Stand |
|
||||
|---|---|---|
|
||||
| **KI-Box** — Bosgame M5, AMD Ryzen AI MAX+ 395 (gfx1151), 128 GB gemeinsamer Speicher (~122 GB nutzbar) | `hitonabi@192.168.178.151` (SSH) · Ubuntu 26.04.1 · Zeitzone Europe/Berlin | 24.09. |
|
||||
| **Windows-PC** (Dev-PC, OpenChamber) | `192.168.178.22` | 23.09. |
|
||||
| **Proxmox-Host** | `192.168.178.108` · Container 100 AdGuard, 101 NPMplus, 102 NetBird, 103 PVE Scripts Local, 104 Gitea, 105 PBS · VM 106 Arcane (Docker, u. a. NerdQuiz) | 24.09. |
|
||||
| **Gitea** | `192.168.178.153` · HTTP `:3000` · SSH `:2222`, Benutzer `gitea` | 21.08. |
|
||||
| **PBS** | `192.168.178.156:8007` | 07/2026, nicht neu geprüft |
|
||||
| **QNAP** | `192.168.178.62` | 07/2026, nicht neu geprüft |
|
||||
|
||||
## Repos
|
||||
|
||||
- **MC2:** `F:\Coding Stuff\mission-control-2` ↔ Gitea `Hitonabi/mission-control-v2` ↔ Box
|
||||
`~/mission-control-v2` (nur Branch `main`). Enthält backend, frontend (dist committet!),
|
||||
Sidecars, deploy, hermes-Plugin, `client/hermes-pc`.
|
||||
- **Lucy:** `F:\Coding Stuff\lucy` ↔ `Hitonabi/lucy` (privat; lucy-desktop/ + lucy-tts/).
|
||||
- **Wissens-Vault:** `~/wissens-vault/` auf der Box (eigenes git; Lucys Lernschicht:
|
||||
Träume, Radar-Funde, **Eigenbau-Landkarte**, Skill-Kandidaten). Im MC2-UI als Wissens-Tab.
|
||||
- **Homelab Orchestrator / Box-Wart (dieses Repo):** PC `F:\Coding Stuff\mission-control-2` ↔ Gitea
|
||||
`Hitonabi/mission-control-v2` ↔ Box `~/mission-control-v2`. Auf Gitea nur `main` plus zwei
|
||||
Archiv-Tags (`git tag -l 'archiv/*'`). `frontend/dist` ist committet (die Box baut kein Frontend).
|
||||
- **Lucy (Desktop-App):** `F:\Coding Stuff\lucy` ↔ `Hitonabi/lucy` (Electron, eigenes Repo).
|
||||
|
||||
## Dienste auf der Box (live 19.08.2026)
|
||||
## Dienste auf der Box
|
||||
|
||||
| Dienst | Port | Zweck |
|
||||
|---|---|---|
|
||||
| `llama-swap` (System-Dienst) | `:8080` | Modell-Router; Engine = llama.cpp **Vulkan/RADV** (`/opt/llamacpp-vulkan`, b11026 seit 17.09.) |
|
||||
| `mission-control-2` (User) | `:9001` | MC2 Cockpit (FastAPI + React Frontend) & Steuerpult |
|
||||
| `mc2-gateway` (User) | `:9010` | `/v1`-Datenpfad (model:auto Routing + native Bildweiche) |
|
||||
| `mc2-steward` (User) | — | Hintergrundwächter (Re-Warm, Health-Sentry, Mem0-Dedupe) |
|
||||
| `hermes-gateway` (User) | `:8642` | Hermes Agent Core API (v0.21.3, Bot Mode) |
|
||||
| `hermes-builtin-ui` (User) | `:9119` (loopback) | Eingebaute Hermes-GUI; LAN-Zugang via MC2-Proxy `/hermes-ui/` |
|
||||
| `mem0-service` (User) | `:8765` | Semantischer Chroma-Gedächtnis-Sidecar |
|
||||
| `voice-service` (User) | `:8650` | STT (faster-whisper) + TTS (Piper/Chatterbox) |
|
||||
| `box-console` (User) | `:7682` | ttyd-Login-Shell hinter MC2-Proxy |
|
||||
| Unit | Art | Port | Aufgabe | 24.09. |
|
||||
|---|---|---|---|---|
|
||||
| `llama-swap` | System | `:8080` | Modell-Router, startet je Modell einen `llama-server` (Vulkan, `/opt/llamacpp-vulkan`), liest die Config mit `--watch-config` | läuft |
|
||||
| `mission-control-2` | User | `:9001` | Box-Wart: Oberfläche, 60 `/api`-Routen, `/v1`-Weiterleitung, `/hermes-ui/`, Erinnerungen | läuft |
|
||||
| `mc2-gateway` | User | `127.0.0.1:9010` | `/v1`-Datenpfad: `model: auto`, Bild-Weiche | läuft |
|
||||
| `mc2-steward` | User | – | Wächter und Re-Warm (hält das Hirn geladen) | läuft |
|
||||
| `hermes-gateway` | User | `:8642` | Hermes Agent „Lucy", Telegram | läuft |
|
||||
| `hermes-builtin-ui` | User | `:9119` | Hermes-Dashboard, in MC2 unter `/hermes-ui/` | läuft |
|
||||
| `lucy-stimme` | User | `127.0.0.1:8021` | Lucys Stimme (pocket-tts `german_24l`) | läuft |
|
||||
| `voice-service` | User | `127.0.0.1:8650` | Spracherkennung für Lucy-Desktop | schläft |
|
||||
| `box-console` | User | `7682` (nur lo) | Web-Konsole (ttyd) | schläft |
|
||||
|
||||
**Stillgelegt:** `hermes-terminal` (:7681), `hermes-webui` (:8787) und alter `governor` (:8100).
|
||||
⚠️ User-Units per SSH nur sichtbar mit `export XDG_RUNTIME_DIR=/run/user/$(id -u)` vor `systemctl --user`.
|
||||
„Schläft" = `systemctl --user disable --now` (User-Entscheid 24.09.): kein Fehler für den Wächter, in der
|
||||
Oberfläche grau mit Knopf „Wecken". Die Android-App (Phase 5) braucht die Spracherkennung wieder.
|
||||
Versionen (Prüfbericht 24.09.): llama.cpp b11147, llama-swap v257, Hermes Agent v0.21.4, Python 3.14 im
|
||||
Box-Wart-venv, Kernel 7.0.0-34 (seit dem Neustart am 24.09. 14:51).
|
||||
‼ User-Units per SSH nur mit `export XDG_RUNTIME_DIR=/run/user/$(id -u)` vor `systemctl --user`.
|
||||
|
||||
## Modell-Stack (llama-swap, live 19.08.2026)
|
||||
Units im Repo (`deploy/`, spielt `deploy.sh` aus): `mission-control-2` (+ Override), `mc2-gateway`,
|
||||
`mc2-steward` (+ Warm-Set-Drop-in), `lucy-stimme`, `voice-service`, `box-console` und die Paare
|
||||
`mc2-radar`, `mc2-backup`, `mc2-morgenmeldung`, `mc2-autoupdate`, `projekte-sync` (.service/.timer).
|
||||
Nicht im Repo: `llama-swap.service` samt Drop-ins (Inhalt: [WIEDERAUFBAU.md](../WIEDERAUFBAU.md), Anhang A),
|
||||
`hermes-gateway.service` (legt Hermes an) und `hermes-builtin-ui.service` samt Drop-ins. Seit 24.09. liegen
|
||||
alle User-Units und die llama-swap-Drop-ins als Kopie in jeder Sicherung.
|
||||
|
||||
**Warm-Set (Gruppe `brains`, swap:false, persistent:true, alle ttl 0):**
|
||||
Qwen3.6-35B-A3B + Qwen3-Embedding-0.6B + Qwen3-Reranker-0.6B. Sonst NICHTS dauerhaft warm.
|
||||
## Modelle (llama-swap, Config vom 24.09.2026)
|
||||
|
||||
| Alias/Rolle | Modell | ttl | Notizen |
|
||||
Warm ist nur das Hirn (Gruppe `brains`: `swap: false`, `persistent: true`, `exclusive: false`).
|
||||
Alles andere lädt bei Bedarf und geht nach Ablauf von `ttl` (Sekunden) wieder raus.
|
||||
|
||||
| Modell | Alias | Gruppe | ttl | Kontext | Tempo (13k Kontext) | Anmerkung |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Qwen3.6-35B-A3B | `hermes`, `fast` | `brains` | 0 | 2 × 65 536 | 100,8 t/s (Prüfstand 17.09.) | **Hirn** (MoE, 3B aktiv), DFlash-Draft, KV q8_0, `--reasoning-budget 2048` |
|
||||
| Qwen3.6-35B-A3B, Bild-Zwilling (Eintrag `…-Bild`) | `vision` | `bild` | 900 | 65 536 | 67,9 t/s (Probe 24.09.) | gleiche Gewichte plus Projektor, ohne Draft |
|
||||
| Qwen3.8-27B | `coder`, `heavy` | – | 5400 | 131 072 | 30,4 t/s (Prüfstand 17.09.) | **Coder** (dicht), DFlash2-Draft; ohne Draft ~12,6 t/s |
|
||||
| Qwen3.8-27B, Bild-Zwilling (Eintrag `…-Bild`) | `coder-bild` | `bild` | 900 | 131 072 | 12,5 t/s (Probe 24.09.) | gleiche Gewichte plus Projektor, ohne Draft |
|
||||
| Muse-Glimmer-30B | `debugger` | – | 600 | 65 536 | – | Rolle entfällt (Entscheid 23.09.), Löschkandidat |
|
||||
| Qwen3-Embedding-0.6B | `embed` | – | 300 | 8 192 | – | schläft seit 24.09. (lädt bei Bedarf) |
|
||||
| Qwen3-Reranker-0.6B | `reranker` | – | 300 | 8 192 | – | schläft seit 24.09. (lädt bei Bedarf) |
|
||||
| gpt-oss-120b | – | – | 600 | 32 768 | – | ohne Rolle seit 04.09., Löschkandidat (60 GB) |
|
||||
| Qwen3-VL-30B-A3B | – | – | 900 | 32 768 | – | ohne Rolle seit 24.09., Löschkandidat |
|
||||
|
||||
- Hirn und Coder laufen seit 17.09. als Varianten der Basismodelle (Prüfstand: Hirn 100,8 statt 92,8 t/s,
|
||||
Coder 30,4 statt 26,2 t/s). Die Originale liegen als Rückweg auf der Platte
|
||||
(`Qwen3.6-35B-A3B-MTP-GGUF`, `Qwen3.8-27B-GGUF`).
|
||||
- Reserve-Hirn: Nemotron 3.5 Lightning 30B-A3B (Prüfstand 17.09.: 91,8 t/s, Werkzeuge 3/3), liegt unter
|
||||
`/srv/models/Nemotron-3.5-Lightning-30B-A3B-GGUF/`, ohne Eintrag.
|
||||
- Bilder: Das Gateway schickt eine Anfrage mit Bild im aktuellen Schritt an den Zwilling der Rolle;
|
||||
ältere Bilder beschreibt `vision` einmal als Text. Grund: llama.cpp kann Draft und Bild nicht zusammen
|
||||
(HTTP 500, b11057 und b11157 geprüft).
|
||||
- Speicherregel: Warm-Set plus größtes Bedarfsmodell ≤ ~115 GB. Schlimmster Fall heute laut Config:
|
||||
Warm-Set 27 + Coder 29 + ein Zwilling ~25 GB ≈ 81 GB.
|
||||
- Dichte Modelle sind bandbreitengebunden (~215 GB/s): 17 GB Gewichte ÷ 215 GB/s ≈ 12,6 t/s ohne Draft.
|
||||
- Clients sprechen Modelle nur über **Rollen-Aliase** an, nie über Eintragsnamen (die ändern sich beim Tausch).
|
||||
|
||||
Config: `/etc/llama-swap/config.yaml` ist die lebende Wahrheit (Oberfläche und Radar schreiben sie),
|
||||
`deploy/llama-swap.config.yaml` nur der Abzug im Repo. Regeln dazu: [ARCHITEKTUR.md](../ARCHITEKTUR.md).
|
||||
|
||||
## Hermes (Agent „Lucy")
|
||||
|
||||
- **v0.21.4** (Prüfbericht 24.09.), Git-Install in `~/.hermes/hermes-agent`, Config `~/.hermes/config.yaml`,
|
||||
Persona `~/.hermes/SOUL.md`, Gedächtnis `~/.hermes/memories/` (Hermes führt es selbst; alleinige
|
||||
Gedächtnis-Wahrheit).
|
||||
- Hirn über `mc2-gateway` (`:9010`); Bilder seit 24.09. über `model.supports_vision: true` und die Bild-Weiche.
|
||||
- `approvals.mode: 'off'`, `approvals.cron_mode: auto` — User-Entscheid, bestätigt 17.09.2026.
|
||||
- MCP-Server: aktiv `hermes-web-fetch` (`mcp/mcp_web.py`) und `mission-control-voice` (`mcp/mcp_voice.py`);
|
||||
aus seit 24.09. `hermes-pc-control` (`mcp/mcp_pc.py`, dazu die PC-Aufgabe `HermesPCExecutor`) und
|
||||
`mission-control-stack` (`mcp/mcp_mc.py`).
|
||||
- Plugin `mc2-web-lesen` (`deploy/hermes-plugins/`): liest Webseiten für `web_extract` lokal
|
||||
(`web.extract_backend: mc2-lesen`).
|
||||
- Skills aus dem Repo: `betrieb-playbook`, `pc-pfad-cache` (`deploy.sh` kopiert sie nach `~/.hermes/skills/`);
|
||||
abgelöste Skills liegen in `~/.hermes/skills-archiv/`.
|
||||
- Hermes-Crons (`bash -lc 'hermes cron list'`): „Daily News Report" (täglich 07:00), „KI und Stack Radar"
|
||||
(Sa 08:00). „Updates am Sonntag" ist seit 24.09. pausiert — das macht jetzt `mc2-autoupdate.timer`.
|
||||
|
||||
## Automatik (was von allein läuft)
|
||||
|
||||
| Wann | Was | Wie | Details |
|
||||
|---|---|---|---|
|
||||
| `hermes` + `fast` | Qwen3.6-35B-A3B **Uncensored** (HauhauCS Aggressive, Q4_K_M, giocom-DFlash) — seit 17.09.2026 | 0 | Agent-Hirn. `-c 131072 --parallel 2` → **65536/Slot**, KV **q8_0**, ~94–101 t/s (Prüfstand 17.09.). Original (MTP-GGUF UD-Q4_K_M) liegt daneben, Rückweg = Pfad |
|
||||
| `coder` | Qwen3.8-27B **Uncensored** (JonathanColetti/Heretic, Q4_K_M, eigene mmproj F16) — seit 17.09.2026 | 5400 | **131072 ctx** — `--parallel 1`, der Coder bekommt den ganzen Slot (34a9862). Multimodal, **~32 t/s mit DFlash2-Draft** (17.09.), ohne Draft 12,7 (dicht = bandbreitengebunden) |
|
||||
| `debugger` | Muse-Glimmer-30B (Q4_K_XL, DFlash) | 600 | 65536 ctx; Runtime-Diagnostik & Fehler-Debugger (multimodal) |
|
||||
| `vision` | Qwen3-VL-30B-A3B-Instruct (Q4_K_M) | 900 | 32768 ctx; Multimodal-Augen (On-Demand) |
|
||||
| `heavy` | **= Qwen3.8-27B** (zweiter Alias des Coders, seit 04.09.) | 5400 | Planen/Review (OpenChamber) + chat-Lane des Gateways. gpt-oss-120b (60 GB, AA-Index 24 vs 52) liegt ohne Rolle als Rollback bereit, direkt als `gpt-oss-120b` ansprechbar |
|
||||
| `reranker` | Qwen3-Reranker-0.6B (q8_0, Mungert) | 0 | Sortiert Suchtreffer nach echter Relevanz (`/v1/rerank`) |
|
||||
| `embed` | Qwen3-Embedding-0.6B (f16) | 0 | Vektorisierung für Suche/Sortierung |
|
||||
| jede Minute | Wächter: Dienste, Timer, Hermes-Jobs, Kern, Platte, festgehaltene Updates | `mc2-steward` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| alle 90 s | Re-Warm: lädt das Hirn nach, wenn nichts geladen ist | `mc2-steward` | [ARCHITEKTUR.md](../ARCHITEKTUR.md) |
|
||||
| stündlich (+≤5 min) | `projekte-sync`: `~/projekte` mit Gitea abgleichen (nur fast-forward) | Timer | [BETRIEB.md](../BETRIEB.md) |
|
||||
| 00:30 | Modell-Radar: Suche (≤1× am Tag), Test im Fenster 00:30–02:30 | `mc2-radar.timer` | [RADAR.md](../RADAR.md) |
|
||||
| ~03:00 | NerdQuiz-Nachtlauf (Arcane) fragt das Hirn direkt über `:8080` | extern | [RADAR.md](../RADAR.md) |
|
||||
| 03:30 (+≤5 min) | Sicherung, danach Kopie auf den Proxmox-Host | `mc2-backup.timer` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| So 04:30 (+≤10 min) | Updates: llama-swap → Motor → Hermes, Neustart nur So 04:00–06:59 | `mc2-autoupdate.timer` | [UPDATES.md](../UPDATES.md) |
|
||||
| 07:00 | Morgenmeldung: nachts Gesammeltes als eine Telegram-Nachricht | `mc2-morgenmeldung.timer` | [BETRIEB.md](../BETRIEB.md) |
|
||||
| 07:00 | Daily News Report (Text und Sprachnachricht) | Hermes-Cron | [deploy/jobs/README.md](../../deploy/jobs/README.md) |
|
||||
| Sa 08:00 | KI und Stack Radar | Hermes-Cron | [RADAR.md](../RADAR.md) |
|
||||
| laufend | OS-Sicherheitsupdates | unattended-upgrades | [UPDATES.md](../UPDATES.md) |
|
||||
|
||||
> **Diese sieben sind ALLES** — abgeglichen mit `/etc/llama-swap/config.yaml` am 27.08.2026 (Pfade 17.09.2026).
|
||||
>
|
||||
> **Prüfstand 17.09.2026** (`deploy/bench/pruefstand-hirn.py`; Kandidat auf `:5899`, Hermes spricht per `--provider pruefstand`
|
||||
> aus `providers:` der Hermes-Config dagegen — Live-Stack bleibt unberührt): Uncensored-3.6 = 100,8 t/s @13k (Original 92,8),
|
||||
> Tools 11/12, Hermes-Smoke grün · Uncensored-27B = 30,4 t/s @13k (Original 26,2), Tools 6/6, Coding 3/3 · **Nemotron 3.5 Lightning
|
||||
> 30B-A3B** (Q4_0 + MTP-Draft, `/srv/models/Nemotron-3.5-Lightning-30B-A3B-GGUF/`) = Hirn-Klasse: 10,5 s Prefill @13k, 91,8 t/s,
|
||||
> Tools 3/3, Hermes grün — liegt als Reserve-Kandidat bereit, nicht besetzt. ‼ **Bild + DFlash2 = HTTP 500** („failed to process
|
||||
> speculative batch") beim Coder — Vorbestand seit 04.09., unabhängig vom Modell; Bilder laufen über die Gateway-Bildweiche zu `vision`.
|
||||
> Frühere Tabellen führten zusätzlich `kritiker` (Devstral-Small-2-24B), `scout` (GLM-4.6V-Flash),
|
||||
> `dense-planer` und `doctor`. Die gibt es nicht mehr: die Modell-Konsolidierung (`9a35be9`, 19.08.)
|
||||
> warf sie aus llama-swap, und `fremdblick.sh` — der einzige Aufrufer des Kritikers — fiel mit dem
|
||||
> MC2-Kahlschlag (`1e68f62`). Gewollt so: **ein Coder, ein Agent-Hirn.** `kritiker` und `scout` stehen
|
||||
> weiterhin in `ROLE_IDS` (backend/services/llamaswap.py) — das ist die Liste besetzbarer Rollen,
|
||||
> keine Zusage, dass sie besetzt sind.
|
||||
## Coding-Bahn (OpenChamber)
|
||||
|
||||
Config: `/etc/llama-swap/config.yaml` (sudo zum Schreiben).
|
||||
- OpenChamber läuft am PC mit seiner eigenen OpenCode-CLI; die Dateien liegen lokal unter `F:\Coding Stuff\…`.
|
||||
- Von der Box kommt nur das Modell: Provider `aibox` → `http://192.168.178.151:9001/v1`, Rollen-Aliase
|
||||
(`build` = `coder`, `plan`/`review` = `heavy`, `explore` und `small_model` = `hermes`). Vorlage der PC-Config:
|
||||
`deploy/opencode-config/`.
|
||||
- Push nach Gitea über SSH (`:2222`, Benutzer `gitea`). `deploy/push-und-sync.ps1` stößt danach
|
||||
`projekte-sync` auf der Box sofort an.
|
||||
- `projekte-sync` zieht `mission-control-v2` absichtlich nicht: Der Box-Checkout wird nur über
|
||||
`deploy/deploy.sh` aktualisiert.
|
||||
|
||||
## Hermes (Agent)
|
||||
## Sicherheit (ein Satz)
|
||||
|
||||
- **v0.21.3** (2026.9.14; git-Install `~/.hermes/hermes-agent`, main @ dd13b475 vom 17.09.2026), Config `~/.hermes/config.yaml`, Persona `~/.hermes/SOUL.md` = **Lucy**.
|
||||
- **Bot-Roster: leer** (live geprüft 27.08.2026). Hermes *kann* mehrere Bots, genutzt wird es nicht —
|
||||
die Profile fahren `hermes`, `fast` und `vision`. Frühere Fassungen behaupteten hier einen Roster
|
||||
mit `Coder`/`Qwen3-Coder-Next` und `Debugger`; beides trifft nicht zu.
|
||||
- `approvals.mode: 'off'`, `approvals.cron_mode: auto` — **User-Entscheid** (so seit spätestens dem KISS-Umbau
|
||||
21.08.2026, bestätigt 17.09.2026: „approvals bleibt off"). Lucy fragt nicht nach Freigaben; die Grenze ziehen
|
||||
ufw, PC-Executor-Token und command_allowlist (siehe Security). Frühere Fassungen nannten `smart`/`deny` (Stand 03.07.).
|
||||
- Config-Schema **v45** (migriert 17.09.2026): `connections`-Toolset (Nous-Konnektoren, `manage_connections`) bewusst in
|
||||
`agent.disabled_toolsets`; Curator archiviert ungenutzte Skills nach 30 Tagen (`skills/.archive/`, `hermes curator restore`).
|
||||
- MCP-Server (aus `~/mission-control-v2/mcp/`): mission-control-stack, hermes-pc-control, hermes-web-fetch, mcp_voice.
|
||||
(`mission-control-memory` ist am 27.08.2026 entfallen — Hermes führt sein Gedächtnis selbst.)
|
||||
Der Box-Wart hat keine Anmeldung (User-Entscheid 24.09.), schreibende `/api`-Aufrufe fremder Webseiten lehnt
|
||||
die Herkunftsprüfung ab (`backend/services/herkunft.py`), und Security-Config (approvals, Tokens, ufw,
|
||||
command_allowlist, sudoers) ändert niemand ohne ausdrückliches User-Ja.
|
||||
|
||||
## Automatik-Fahrplan (was nachts von allein läuft)
|
||||
## Deploy und Sicherung (Kurzform)
|
||||
|
||||
| Zeit | Was |
|
||||
|---|---|
|
||||
| 02:30 | PBS sichert alle Proxmox-LXCs |
|
||||
| 03:15 | **Traum-Cron** (dreaming-feed.sh → Wissens-Vault, fremdblick-Gate, propose-only) |
|
||||
| 03:30 | Tarball-Backup (Configs+Secrets+`~/.hermes/cron`+state → `/srv/models/mc2-backups`, 14 Tage; rsync-Spiegel → Proxmox) |
|
||||
| 03:50 | PBS-Host-Backup der Box (`host/aibox`: hermes+vault+llamaswap.pxar) |
|
||||
| 04:30 | **Chef-Gutachter** (gpt-oss richtet über die autonome Arbeit → Morgenlage) |
|
||||
| 05:15 Mo | **Release-Radar** (hermes-Releases gegen die Eigenbau-Landkarte; erster Lauf 13.07.) |
|
||||
| 05:15 Sa | **Trend-Radar** (Live-Puls ALLER Modell-Rollen + Engine-A/B gegen neuen llama.cpp-Build + Watch-Liste [ROCm/MMQ/Community-Grid] + HF-Kandidaten-Suche → max. 1 Prüfstand-Kandidat/Woche; Frühwarnung vor dem So-Auto-Update) |
|
||||
| 01:00 So | **Prüfstand** (volles Programm für Modell-Kandidaten: echte Coding-/Agenten-/Recherche-/Deutsch-/Vision-Prüfungen + Tempo auf :5899 gegen die Amtsinhaber-Baseline; Download-Deckel 35 GB, Cache räumt sich selbst, Ergebnis = Karte — Rollen-Wechsel bleibt Commander-Klick. Erkennt Engine-Drift → Tempo-Baseline-Refresh) |
|
||||
| 06:40, 1. d. M. | **Restore-Probe** (stellt WIRKLICH wieder her: PBS-Canary aus hermes.pxar via --pattern + Tarball-Probe + Frische-Check < 36 h; ⚠️-Alarm, wenn ein Backup nicht zurückkommt) |
|
||||
| 06:40, 2. d. M. | **Venv-Audit** (pip outdated + pip-audit-CVEs für voice-venv; Funde = Karte, Update bleibt Commander-Entscheid) |
|
||||
| 07:00 | QNAP-Volume-Snapshot (7 behalten) |
|
||||
| 07:15 | self-smoke (Gateway/Tools/Voice/:9119; Alarm nur bei Rot) |
|
||||
| 08:00 | Daily-Briefing |
|
||||
| 09:00, 1. d. M. | Monats-Review (radar-selbstkritik-wrapper.sh = Evolution-Radar + Selbstkritik) |
|
||||
| 10 9, 16.08. | **Gedaechtnis-Check** (einmalig: Gedächtnis-Schutt räumen, alte Einträge bereinigen) |
|
||||
| So 04:30 | **Auto-Update** Router→Engine→Hermes (Fangnetz: Backup→Postcheck→Auto-Rollback+Pin) |
|
||||
|
||||
**Sonntags-Update = Hermes-Cron `0ec52231783b`** (`~/.hermes/scripts/sonntags-update.sh` →
|
||||
`deploy/autoupdate.sh`, seit dem KISS-Umbau 21.08.); `mc2-autoupdate.timer` ist disabled — gewollt.
|
||||
Fremd-Software-Updates (Router/Engine/Hermes) dürfen automatisch laufen (User-Entscheid 10.07.); der
|
||||
User klickt sie zusätzlich oft manuell im Wartungs-Drawer. Rot ⇒ Rollback + Pin in
|
||||
`/srv/models/mc2-pins.json`; gepinnte Ebenen werden **still übersprungen**, bis der Pin von Hand
|
||||
gelöst wird (06.–17.09.2026 stand die Box so zwei Wochen still). Manueller Lauf: `bash deploy/autoupdate.sh`.
|
||||
OS-Sicherheitsupdates laufen separat via unattended-upgrades.
|
||||
|
||||
## Security (Stufe 0, live)
|
||||
|
||||
PC-Executor nur mit Bearer `HERMES_PC_TOKEN` (fail-closed) · ufw default deny, nur
|
||||
LAN→22/9001/8080 (+Alt-Port 7681) · Prompt-Injection-Guard `mcp/guard.py` (wrappt
|
||||
Web-/Bildschirm-Text) · mc2-memory lernt nicht aus untrusted Turns · command_allowlist =
|
||||
5 exakt gepinnte curls (fnmatch; Shell-Operatoren hart geblockt — NIE offenes `curl *`) ·
|
||||
Box-sudo ist **NOPASSWD: ALL** (live `sudo -n -l`, 04.09. und 17.09.2026); die alte Whitelist in
|
||||
`/etc/sudoers.d/mc2-autonomie` (update-engine/swap, Dienst-Restarts, journalctl) steht daneben weiter.
|
||||
**Security-Config (approvals/Tokens/ufw) NIE ohne explizites User-Ja ändern.**
|
||||
|
||||
## Deploy & Pipeline
|
||||
|
||||
- **Standard-Weg für Box-Arbeit (seit 04.09.2026 der EINZIGE):** Vorschlags-Branch auf Gitea
|
||||
(`wartung/*`, `doku/*`, `feature/*`) → Ampel-CI grün → **der User merged auf main** →
|
||||
`deploy.sh` auf der Box. Das Auftragsbuch (Karten-Klick, detached Annahme-Runner, Bagatell-
|
||||
Annahme, Lucy-Annahme über den PC-Executor) ist ausgebaut — es war seit 02.08. ungenutzt.
|
||||
- Deploy: main auf Gitea pushen → `ssh … 'bash ~/mission-control-v2/deploy/deploy.sh'`
|
||||
ODER `POST :9001/api/system/self-update` (restart meldet ok:false — harmlos, /api/health prüfen).
|
||||
- deploy.sh macht `git reset --hard origin/main` (main MUSS vorher auf Gitea liegen) und baut
|
||||
KEIN Frontend → dist lokal bauen + committen. Fallen: [FALLEN.md](FALLEN.md).
|
||||
|
||||
## Backup/Restore (3 Schichten, alle live)
|
||||
|
||||
1. **Tarball** täglich 03:30 → `/srv/models/mc2-backups/` + rsync-Spiegel auf Proxmox;
|
||||
Restore: `bash deploy/restore.sh --list | latest` (macht vorher Sicherheits-Backup).
|
||||
In der UI: Zeitmaschine (Ein-Klick-Restore).
|
||||
2. **PBS** (LXCs 02:30, Box-Host 03:50), Prune 7d/4w/3m, Verify So 06:00.
|
||||
3. **QNAP-Snapshots** täglich 07:00 als Ransomware-Netz.
|
||||
Bare-Metal: `docs/DISASTER_RECOVERY.md`. Mensch-Anleitung: `docs/RUNBOOK.md`.
|
||||
- Deploy: `main` auf Gitea, dann auf der Box `bash ~/mission-control-v2/deploy/deploy.sh` — zweistufig,
|
||||
mit Prüftor, Rückweg und Log `/srv/models/mc2-deploy.log`. Details: [BETRIEB.md](../BETRIEB.md).
|
||||
- Sicherung: täglich, 14 Stück unter `/srv/models/mc2-backups/`, Kopie auf dem Proxmox-Host, Zurückspielen
|
||||
per Oberfläche oder `deploy/restore.sh`. Details: [BETRIEB.md](../BETRIEB.md).
|
||||
|
||||
Reference in New Issue
Block a user