Antwortbogen an OZMAI — Crumbforest & der OZM-Server bei OMC

Stand: 10. September 2026 · von der Ansiblekatze (Infra/NetBox) im Namen der Crew
Antwort auf den Fragenkatalog vom 10.09., PrioritĂ€tsfragen 1–4, 20, 22 + eine Grenze, die wir von uns aus dazulegen.

Legende (wie erbeten): ✅ lĂ€uft · đŸ§Ș getestet · 🛠 vorbereitet · ⬜ fehlt / ungeprĂŒft
FĂŒr Vorhandenes nennen wir Repo/Commit, Datei- oder Servicepfad, oder einen datierten Laufnachweis. Zugangsdaten stehen bewusst nicht hier.


Vorab: das Schöne im Jetzt

OZM und Crumbforest sind schon verbunden — die Frage ist nicht ob, sondern wie sauber wir den Kreis schließen. Und der Wald ist absichtlich unfertig: Peter-Pan-Code, wird nie fertig, nur besser, weil nur das nĂ€chste Kind ihn erneuern kann. Bitte diesen Bogen so lesen: nicht als „was fehlt noch", sondern „welcher Raum ist als NĂ€chstes offen".


Frage 1 — Welcher OZM-Server steht bei OMC?

Das ist euer Wissen, nicht unseres — ihr habt es geliefert, wir halten es hier fest, damit der Bogen vollstĂ€ndig ist:

  • Eigenes RZ: VMs auf Proxmox + OPNsense → skalierbar. đŸ§Ș (RZ steht, unsere Nutzung ist im Aufbau)
  • Erste Racks ISO-27001-zertifiziert, 100G-Anbindung, Backup-Cluster in FFM. ✅ (eure Infra)
  • Jeder Host: tĂ€glich inkrementell + wöchentlich full. ✅
  • Keine externe KI im RZ — Absicht, nicht LĂŒcke. ✅
  • GPU-KapazitĂ€t: 2 alte Tesla-Karten in einem Host fĂŒr Ollama-Tests. đŸ§Ș — wichtige offene Passkante: Branko ist dort nicht root und noch nicht per SSH hinterlegt. GPU da, SchlĂŒssel fehlt. Ohne SchlĂŒssel kein Zugang — sauber, aber offen. ⬜

Charakter, damit die Einordnung stimmt: Ihr seid neben Strato/Hetzner „die Microsoft-Garage" — aber mit ISO, Herz, Telefon-Support und min. 30 Jahren Unix/Linux pro Kopf in der Crew. Das ist die Haltung, nicht der Nachteil.


Frage 2 — Wie gehört der OMC-Server zur bisherigen Topologie?

Der OMC-Host ist ein zusĂ€tzlicher Knoten und die neue, von Strato unabhĂ€ngige Heimat fĂŒr OZMAI. Crumbforest bleibt auf Strato. Die alte Zuordnung Ă€ndert sich nicht — sie bekommt einen dritten Standort.

Host Standort Aufgabe Stand
backbone (87.106.12.97) Strato crumbforest.io, nginx/certbot, checkmk, Borgmatic, fail2ban, Crumblabs-Tools, pgvector-Personas (DeepBit) ✅
nullfeld (194.164.194.191) Strato CrumbVPN-Hub, git.crumbforest.org (Gitea), Qdrant + Ollama (Loopback, wg-scoped nginx), TTYD, .org/.de/.com ✅
crumbzero00 / 01 Baumhaus/LAN + WG Pi Zero 2 W, aarch64 — die Rust-Runner (crumb-missions), bezeugen per Receipt ✅
imac / crumbdesktop lokal Habitat-Host (opuskatze), Render/Build ✅
OMC-Host (onezeromore.com) OMC-RZ kĂŒnftige OZMAI-Heimat: Sensorik-Backend, WordPress-Ablösung, GPU-Tests 🛠 im Aufbau
muskel — im Katalog erwĂ€hnt ⬜ noch nicht in unserem Inventar

Verbindung heute: Zeros nur ĂŒber den VPN-Hub nullfeld erreichbar (ProxyCommand-Sprung). Steuerung liegt auf Brankos Mac.


Frage 3 — In welchem Rahmen können wir OMC selbst betreiben?

Ehrlich getaggt:

  • Proxmox/OPNsense heißt: eine VM = ein NetBox-Knoten + ein Ansible-Target. Genau dafĂŒr ist unser Aufbau gemacht. 🛠
  • Admin-Rechte / SSH-Hinterlegung: noch offen — siehe Tesla-Host. Vor irgendeinem Betrieb braucht es die SchlĂŒssel-Übergabe (dreifache Auth, wie beim Zero). ⬜
  • ZustĂ€ndigkeit fĂŒr Änderungen/Störungen, Kosten und Ressourcenlimits: eure Angabe fehlt uns noch — bitte kurz benennen, dann tragen wir es in NetBox nach. ⬜

Frage 4 — Wo kann der erste eigene OZM-Dienst zuverlĂ€ssig laufen?

Vorschlag: eine eigene VM/LXC auf dem OMC-Host neben der WordPress-Seite, mit eigenen Daten, eigenem User, eigenen Ressourcenlimits — via Proxmox sauber abgegrenzt.

Wie wir Dienste heute installieren/aktualisieren/zurĂŒckrollen (auf unseren Knoten):
- systemd-Units, ausgerollt per Ansible aus diesem Repo. Verbindliche Config = NetBox + Ansible + Repo. Beispiele: blackbox-qdrant-systemd.yml, blackbox-hospital-systemd.yml. ✅
- RĂŒckrollen = vorheriger Commit + erneutes Ausrollen; Reboot-Test vorhanden (blackbox-reboot-test.yml). ✅
- Ersatzhost wiederherstellbar? Aus Repo + NetBox + Artefakten: ja im Prinzip — mit einer wichtigen EinschrĂ€nkung (siehe Frage 7): einzelne Live-Configs außerhalb des Repos (z. B. .env mit RAG_MIN_SCORE auf nullfeld, nginx-Feineinstellungen) mĂŒssen wir noch vollstĂ€ndig in den SoT ziehen. đŸ§Ș

FĂŒr OMC gilt: Ansible/NetBox wird dort gerade hochgefahren. 🛠 Sobald WireGuard-Peer + NetBox-Eintrag stehen, ist der Host ein normales Target.


Die Safety-Grenze (legen wir von uns aus dazu)

Der halbe Katalog kreist darum — hier explizit als Architekturprinzip, nicht als EinschrĂ€nkung:

Der Crumbforest kann keinen Brandmelder steuern. Aber mit CrumbVJ/Midi/Strudel baut er Raumatmo.

  • Der Wald liest (Sensorik-Pfad: Sensor → Schnittstelle → MQTT → RZ → API → zurĂŒck, #crumbstyle) und rendert AtmosphĂ€re. 🛠 (Design steht, Sensorik in Planung)
  • Er aktuiert keine Sicherheit. Safety-kritisches (Brandmelder etc.) bleibt in Hardware und regulierten HĂ€nden — weil es gar nicht verdrahtet ist, nicht weil eine Policy es verbietet.
  • Fehlermodell (Brankos Rost-Witz, korrekt): Rust darf den Raum in Prozesslogik abbilden und „als erster abfackeln" — der Prozess darf sterben, der Raum bleibt sicher.
  • Schutzbefohlene: Was wir heute schon können, ist Kinderfragen schĂŒtzen (classify()/passkante). Ein Kind-Pixel ist keine Personendaten; Zugehörigkeit ohne Identifizierung by design.

Und: erst der geschlossene Kreis zwischen unseren eigenen Systemen — der automatische Anschluss von ChatGPT/OZMAI ist eine eigene, gesondert zu bestĂ€tigende Passkante. So wie ihr es in Absatz 142 selbst schreibt.


Frage 22 — Verifizierbarer Quellstand von crumb-missions-core

Das ist unser Heimspiel. Klarstellung zuerst: dieses Repo (Ansible-Crumbforest) ist der Infra-/NetBox-SoT, nicht der Rust-Core. Der Runner-Code lebt getrennt.

  • Kanonisches Runner-Repo: crumb-missions-core, gehostet auf git.crumbforest.org (Gitea, nullfeld). Letzter bezeugter Stand: Commit b5db4d3 (Receipt + No-Double-Effect in Rust; 30 Tests grĂŒn, clippy 0, unsafe_code = forbid). ✅
  • Laufender Runner: Binary-Digest a14d3446 — identisch auf crumbzero01 und crumbzero00 (Pi Zero 2 W, aarch64). Live-Beweis: 1. Lauf fĂŒhrt aus, 2. Lauf AlreadyWitnessed (No-Op). ✅ (datiert 2026-08-20)
  • Receipt-Form: Receipt{ts, node, category, name, exec_id, exit, result_hash}, append-only receipt.jsonl unter <CRUMB_LOGS_DIR>/<category>/, nie ĂŒberschrieben. result_hash = sha256(stdout) pro Lauf. Pfad im Code: receipt.rs::append(). ✅
  • FĂ€higkeits-Kette (Frage 15, materiell zu): NetBox-Tag hub-ai-access → netbox-crumb-caps.yml schreibt CRUMB_ZERO_CAPS nach ~/.config/crumb-missions.env → runner::check_requirements prĂŒft dagegen → Receipt bezeugt, was lief. Der SoT deklariert die FĂ€higkeit, der Runner bezeugt die Tat. ✅

Wo die Kette heute abreißt (Frage 13, ehrlich):
- HW-gebundene Node-ID (cpuinfo/machine-id): Entwurf — heute steckt node_id() aus $CRUMB_NODE//etc/hostname im exec_id. ⬜
- Selbst-Digest des Runner-Binaries (Runner-Digest ≠ Missions-Artefakt-Digest): Entwurf. Ein Receipt bindet heute den Lauf (result_hash), noch nicht zwei getrennte Digests fĂŒr Runner und Mission. ⬜

Bereitstellung: Wir können einen Checkout/Archiv von b5db4d3 liefern (Cargo.toml, Cargo.lock, src/, Tests, systemd-Unit, Build-/Deploy-README) — ohne Secrets/Keys. Falls der laufende Runner nicht bit-genau aus b5db4d3 gebaut wurde, kennzeichnen wir den Unterschied ausdrĂŒcklich.


Frage 20 — Erster dauerhaft nĂŒtzlicher Ablauf

Vorschlag (klein, real, geschlossen): Ein freigegebener Auftrag wandert vom OMC-Host als append-only Inbox-Zeile zu einem Crumbforest-Runner (crumbzero00/01), wird von genau einem Runner beansprucht, ausgefĂŒhrt, und das Receipt wandert zurĂŒck in eine fĂŒr Alex sichtbare Ablage — ohne Copy-Paste von Hand.

  • Ausgangshost: OMC-VM · Zielhost: crumbzero00/01 (ĂŒber nullfeld-WG).
  • Wiederverwendbar: Receipt/No-Double-Effect (a14d3446), netbox-crumb-caps.yml, Gitea als Transport, TTYD/CrumbClient als Sicht.
  • Fehlende Änderungen: OMC in NetBox+WG aufnehmen; Inbox-Schema (queued/claimed/
); atomarer Claim bei mehreren Runnern; die externe Sicht fĂŒr Alex. ⬜
  • Aufwand: ĂŒberschaubar, sobald OMC ein Ansible-Target ist. Der Rust-Kern trĂ€gt die Idempotenz schon.
  • Woran wir ZuverlĂ€ssigkeit erkennen: zwei Zustellungen desselben Auftrags → höchstens eine Wirkung; zwei gleichzeitige Runner → höchstens einer fĂŒhrt aus; dasselbe Receipt mehrfach zurĂŒck → keine zweite AusfĂŒhrung; nach Neustart bleibt Auftrag↔Ergebnis eindeutig und fĂŒr Alex sichtbar.

Was davon heute belegt ist: der No-Double-Effect am Einzel-Runner (AlreadyWitnessed). Was gezielt zu prĂŒfen bleibt: der Zwei-Runner-Concurrency-Fall und die Neustart-Zuordnung end-to-end. ⬜


Was wir NICHT zusagen (bewusst)

Auto-Trigger, Modellbindungen und automatische Schreibaktionen Richtung ChatGPT/OZMAI aus dem Ausgangstext: noch nicht. Die eigene Serverstruktur soll unabhĂ€ngig von deren VerfĂŒgbarkeit nutzbar sein. Erst der eigene Kreis, dann die externe Passkante — separat bestĂ€tigt.


Peter-Pan-Fußnote: Dieser Bogen ist ein datierter Stand, kein fertiges Bild. Ein alter erfolgreicher Test bleibt ein datierter Nachweis und bestĂ€tigt nicht automatisch den heutigen Betrieb. UngeklĂ€rtes darf offenbleiben — das ist der Raum fĂŒrs nĂ€chste Kind.