Konzept · 01.11.2026 · noch nichts gebaut, Bau erst nach deinem Go

NEXUS bekommt drei Räume

Spaces zum Gestalten, Chat für die Leitstelle, Maschinenraum für die Worker. Die gute Nachricht vorweg: Etwa die Hälfte steckt schon in NEXUS, nur verstreut als Kacheln. Etappe 1 macht daraus Räume und braucht dafür kein neues Backend.

⌃1 ⌃2 ⌃3
Moodboard · 12 Bilder
Video-Vorschau · v003
Notiz · Hook-Idee
Terminal · Worker
Projektzone „Leonhardt“ · live von Agenten aktualisiert
Zeig mir den neuen Hook für Michele.
Hier ist v2, 9:16, 6 s. Ton ist von Omni mitgeneriert.
▶ hook_v2.mp4+ auf Space legen
Soll ich gleich die 4:5-Fassung bauen lassen?
● pult-auto-leo-v5 · Mini
● pult-auto-michele · MacBook
○ codex-dws-site · Mini
○ pult-leitstelle-r12 · Mini
$ film.py pruefen --probe
✓ 933 Bilder · −14,9 LUFS
> Nachricht an diese Session …

Klickbares Modell. ⌘1 bis ⌘9 sind in NEXUS schon mit dem Seitenwechsel belegt, deshalb liegt der Umschalter auf ⌃1 bis ⌃3.

1 · Bestandsaufnahme: was schon da ist

NEXUS (MacBook)

Native App, Swift mit AppKit und SwiftUI. Läuft als NEXUS Morgen.app, Build 91. Repo ~/Studio/labor/2026-10-27_nexus-app-bauer/worktree, Branch build91-scroll-fix.

Leitstellen-Chat-KachelMaschinenraum-KachelBrowser (WKWebView)Medien-Vorschau + VollbildAgenten-Socket + nexus-CLIMehrnutzer
  • Chat: eine native Kachel mit Text und Sprachmemo. Sie läuft über einen SSH-Tunnel 127.0.0.1:18857 zum Mini-Dienst medien-pruef-server :8857 /api/chat und landet per pult-send bei pult-leitstelle-rN. Medien zeigt sie bisher nur als Text.
  • Maschinenraum: eine native Kachel. Sie listet Sessions auf Mini und MacBook (über lage.py), liest den Verlauf und schreibt in Sessions (über pult-talk bzw. die Codex-Warteschlange). Der Adapter ist scripts/nexus-pult.py.
  • Der Befehl openLeitstelle legt eine eigene Seite „Leitstelle · Pult“ an und legt beide Kacheln darauf.
  • Die Canvas liegt nur lokal als JSON. Für Kollegen gibt es noch nichts. Pocket hat ein verschlüsseltes Relay, aber nur zum eigenen iPhone.

Pult (Mini und MacBook)

Web-App: dirigent/server.py (1.893 Zeilen, rund 40 /api-Routen) plus panel.html (eine Datei, 898 KB). Läuft auf jedem Rechner lokal auf :8791. Pult.app ist ein Chrome-Klon mit --app=http://[::1]:8791.

LagebildKunden & ZuständigkeitenWorker starten und anschreibenNova-Stimme
  • Fertig und täglich im Einsatz. Ein nativer Nachbau wäre Wochenarbeit, und danach müssten zwei Oberflächen gepflegt werden.
  • Achtung, Stand auseinander: Der Mini steht auf e47fe05, das MacBook auf e430164. Das sind zwei getrennte Zweige. Die Falle „Fix nur am Mini wirkt nicht“ ist schon bekannt.
  • Die gemeinsame Datenquelle gibt es also schon: dirigent mit lage.py, pult-talk und der Inbox. NEXUS und Pult lesen beide dort.

2 · Architektur

NEXUS-Fenster ├─ Umschalter (Titelleiste, ⌃1/⌃2/⌃3, Voice: „zeig Chat“) ├─ SPACES = heutige Canvas (unverändert) ── Socket/MCP ← Agenten schreiben live hinein ├─ CHAT = Leitstellen-Chat, vollflächig ── :8857 /api/chat (Mini) ── pult-leitstelle-rN │ Medien-Links im Text → Player/Bild/Web-Karte · „auf Space legen“ └─ MASCHINENRAUM = WKWebView auf Pult :8791 ────── dirigent/server.py ── lage.py · pult-talk · Inbox (Pult-Links öffnen IN NEXUS statt in Chrome)

Grundsatz: NEXUS baut kein zweites Backend. Alle drei Räume hängen an Quellen, die heute schon laufen. NEXUS ist die eine Hülle darum.

3 · Drei Richtungen

Empfehlung

A · Hülle mit Web-Pult

Der Umschalter kommt neu dazu. Chat ist die vorhandene native Kachel, nur vollflächig. Der Maschinenraum zeigt die fertige Pult-App als Web-View. Die native Maschinenraum-Kachel bleibt für Spaces.

+ heute bzw. morgen sichtbar, Pult bleibt eine einzige Wahrheit
− der Maschinenraum sieht aus wie Pult, nicht wie NEXUS

B · Alles nativ

Der Pult wird Raum für Raum in SwiftUI nachgebaut. Die Datenquelle bleibt dirigent.

+ ein durchgehender Look, schnell, Liquid Glass
− Wochen Arbeit, zwei UIs, jede Pult-Neuerung muss doppelt gebaut werden

C · Pult als Hauptfenster

Umgekehrt: Der Pult wird zur Haupt-App und die NEXUS-Canvas läuft als Web-Ansicht darin.

+ läuft auch im Browser und auf dem iPhone
− die Canvas verliert ihre native Stärke (Terminals, Voice, 120 Hz)

A führt später organisch zu B: Was du im Maschinenraum täglich brauchst, wird nach und nach nativ. Alles andere bleibt Web.

4 · Chat mit Medien: warum das besser wird als Claude oder ChatGPT

Was der Chat können muss

  • Links auf mp4/mov, jpg/png und pages.dev/workers.dev werden direkt in der Nachricht abgespielt bzw. angezeigt (nativer Player, Bild, Web-Karte).
  • Kein Code-Explorer, keine Diffs. Die Leitstelle redet, die Worker arbeiten im Maschinenraum.
  • Sprachmemo und Talk-Taste sind schon drin und bleiben.

Der Kreativ-Vorteil

  • „Auf Space legen“: Ein Video aus dem Chat landet mit einem Klick auf der Canvas, neben den anderen Fassungen. Dort vergleichst du, und kein Chatverlauf schiebt es weg.
  • Umgekehrt: Eine Kachel auf der Canvas markieren und „an Leitstelle“ schicken. Die Leitstelle bekommt Pfad und Kontext mit.
  • Look „wie Claude/Codex“ gibt es als umschaltbares Thema: ruhige Spalte, Verlauf links, neutral hell oder dunkel.

5 · Spaces mit Kollegen: was das technisch heißt

StufeWas es kannTechnikAufwand
0 · heuteAgenten schreiben live in deine CanvasSocket/MCP, schon vorhanden–
1 · LeselinkKollege oder Kunde sieht einen Space im Browser, nur zum Ansehen, live aktualisiertNEXUS spiegelt die Space-JSON und die Medien zu einem Cloudflare Worker (R2), die Web-Ansicht zeichnet die Kacheln2–3 Tage
2 · GemeinsamMehrere bearbeiten denselben Space, mit Cursor und PräsenzDie Canvas wird auf ein CRDT umgestellt (Yjs oder Automerge), Sync über Cloudflare Durable Objects, dazu Konten und Rechte pro Space. Kollege braucht NEXUS (macOS) oder den Web-Client.2–4 Wochen

Stufe 2 ist ein Umbau der Kern-Datenstruktur. Ich würde sie erst angehen, wenn Stufe 1 zeigt, dass Kollegen wirklich mitarbeiten wollen und nicht nur zuschauen.

6 · Etappen

EtappeInhaltDauerBeweis
E1 · heute/morgenUmschalter in der Titelleiste plus ⌃1–3. Chat = die vorhandene Leitstellen-Chat-Ansicht vollflächig. Maschinenraum = Pult als Web-View. Spaces bleibt unverändert. Kein Backend.2–4 hFilm des eigenen Fensters: alle drei Räume umschalten, Nachricht senden, Session öffnen
E2Medien inline im Chat, „auf Space legen“ und „an Leitstelle“, Chat-Thema „Claude-Look“1–2 TageVideo aus dem Chat abspielen und auf der Canvas ablegen
E3Maschinenraum mit nativem Rahmen: Pult-Links bleiben in NEXUS, Session per Klick als Terminal-Kachel. Vorher den Pult-Stand Mini/MacBook zusammenführen.2–3 Tageein Worker wird komplett aus NEXUS gestartet und angeschrieben
E4Spaces Stufe 1 (Leselink), danach eine Entscheidung über Stufe 22–3 Tage, dann offenKollege öffnet den Link auf dem Handy und sieht ein Live-Update

7 · Fünf Fragen an dich

F1 · Maschinenraum: wie einbetten?
  1. Fertige Pult-App als Web-View (empfohlen), sofort komplett
  2. Nativ neu bauen, dauert Wochen
  3. Nur die vorhandene native Kachel vergrößern, ist aber deutlich weniger als der Pult
F2 · Welcher Pult läuft im Maschinenraum am MacBook?
  1. Immer der Mini-Pult über Tailscale (empfohlen): eine Wahrheit, keine Divergenz mehr
  2. Der lokale MacBook-Pult
  3. Umschaltbar Mini/MacBook
F3 · Wo sitzt der Umschalter?
  1. Segment oben mittig in der Titelleiste plus ⌃1/2/3 und Voice (empfohlen)
  2. Seitenleiste links wie bei Claude-Desktop
  3. Unten im Befehlsfeld neben den Seiten
F4 · Spaces mit Kollegen: was zuerst?
  1. Leselink im Browser für Kollegen und Kunden (empfohlen)
  2. Gleich echtes gemeinsames Bearbeiten
  3. Vorerst nur Agenten live, Kollegen später
F5 · Look „wie Codex/Claude“: wo?
  1. Nur als umschaltbares Thema im Chat-Raum (empfohlen)
  2. Für die ganze App umschaltbar
  3. Nicht nötig, der NEXUS-Look bleibt überall