Fernzugriff & der Rich Client
Eine Arbeitsbereich-VM lebt auf einem Mac, aber die Person, die sie bedienen möchte, sitzt nicht immer an diesem Mac. Bromure Agentic Coding lässt sich aus der Ferne erreichen, und jeder Fernzugriffspfad läuft über eine einzige, optionale, standardmäßig deaktivierte SSH-Eingangstür. Aktivieren Sie sie, und Sie erhalten drei Zugangswege: eine Person kann sich von jedem Terminal aus per ssh anmelden und landet in einem Menü; Sie können die Eingangstür selbst über die Befehlszeile verwalten; und ein Rich Client — ein anderer Mac, auf dem die App läuft, oder die iOS-/iPadOS-App — kann sich verbinden und die gesamte Instanz spiegeln (ihr Grid, ihre Arbeitsbereiche, Terminals und Dashboards) in einem Live-Fenster.
Der Rich Client erreicht einen Server auf zwei Arten. Im selben Netzwerk fügen Sie ihn direkt per Adresse hinzu. Von überall sonst melden Sie sich bei einem bromure.io-Konto an und wählen den Server aus einem Verzeichnis: Die beiden Geräte werden von bromure.io zusammengeführt und sprechen dann Peer-to-Peer — ohne Port-Weiterleitung, ohne VPN und ohne zu merkende Adresse — und sobald Sie angemeldet sind, autorisieren sich Ihre eigenen Geräte gegenseitig, sodass die Verbindung passwortlos ist, ohne manuelle Schlüsseleinrichtung.
Dieses Kapitel behandelt die Aktivierung des Fernzugriffs auf dem Host, jeden der Einstiegspunkte, wie der Rich Client ein Remote 1:1 spiegelt (per Adresse und über bromure.io), das Erreichen von Diensten innerhalb von Remote-VMs, das Bereitstellen eines Dev-Servers im Internet und das Sicherheitsmodell, das alles davon schützt. Registrierung im Flottenmaßstab und Cloud-Telemetrie sind ein völlig anderes System — siehe Enterprise. Die vollständige Befehlsreferenz finden Sie unter Automatisierung & die CLI.
Die drei Zugangswege
Alles Folgende setzt voraus, dass die SSH-Eingangstür aktiviert ist (sie ist standardmäßig deaktiviert). Sobald sie läuft, bedient derselbe Server alle drei Zielgruppen:
| Zugangsweg | Wer ihn nutzt | Was Sie erhalten |
|---|---|---|
| Einfaches SSH | Eine Person an einem beliebigen Terminal (ssh -p 2222 you@mac) | Das Remote-Menü — eine curses-artige TUI. Eine reine Shell ist nie erreichbar. |
Die bromure-cli remote CLI | Sie, auf dem Host selbst | Verwaltung der Eingangstür: aktivieren/deaktivieren, Schlüssel, Status. Siehe Fernzugriff auf dem Host aktivieren. |
| Der Rich Client | Ein anderer Mac, auf dem die App läuft, oder die iOS-/iPadOS-App | Ein Live-Spiegelungsfenster der Remote-Instanz im Verhältnis 1:1, mit bidirektionalen Bearbeitungen — erreicht per Adresse in einem LAN oder über ein bromure.io-Konto von überall. |
Der Server ist eingebettet — er ist Apples swift-nio-ssh-Bibliothek, die in die App integriert ist, nicht macOS' eigener sshd. Diese Unterscheidung ist wichtig: Weil die App ihren eigenen Server betreibt, kann sie Ihr macOS-Kontopasswort über OpenDirectory verifizieren, ohne dass Sie jemals Entfernte Anmeldung in den Systemeinstellungen aktivieren müssen und ohne Administratorrechte. Sie lauscht nur auf den exakten macOS-Benutzer, der bromure-cli gestartet hat, und zwingt jede interaktive Anmeldung in das Remote-Menü. Die einzigen maschinenseitigen Ausnahmen sind vier auf die Whitelist gesetzte Befehle, die der Rich Client verwendet (bromure-fatclient/1 control, forward <ip> <port>, forward-udp <ip> und browser-mcp <vm>); alles andere, was ein Mensch eingibt, verhält sich wie eine Anmeldung und landet im Menü.
Hinweis: Das Fernzugriff-Fenster beschreibt den Server als „eine app-eigene Instanz des System-SSH-Servers". Genauer gesagt handelt es sich um einen eingebetteten swift-nio-ssh-Server, bewusst nicht um macOS'
sshd— genau das ermöglicht es ihm, ohne Entfernte Anmeldung oder Administratorrechte zu funktionieren.
Fernzugriff auf dem Host aktivieren
Der Fernzugriff ist deaktiviert, bis Sie ihn einschalten, und er lässt sich auf zwei gleichwertige Arten verwalten: über das Fenster Fernzugriff oder die bromure-cli remote CLI. Beide schreiben an denselben Ort, sodass eine in einem vorgenommene Änderung im anderen widergespiegelt wird und live wirksam ist.
Das Fernzugriff-Fenster
Öffnen Sie Bromure Agentic Coding (das App-Namen-Menü) → Fernzugriff…. Der Fenstertitel lautet Fernzugriff. Ein grüner oder grauer Punkt zeigt sshd läuft oder sshd gestoppt an; wenn der Server läuft, erscheint unter der Kopfzeile eine kopierbare Verbindungszeichenfolge der Form ssh -p <port> <user>@<host>.
| Abschnitt | Feld | Zweck | Standard |
|---|---|---|---|
| Kopfzeile | Fernzugriff über SSH aktivieren | Startet und stoppt den Server. | Aus |
| Listener | Bind-IP | Auf welcher Schnittstelle gelauscht wird. 0.0.0.0 = jede Schnittstelle; 127.0.0.1 = nur dieser Mac. | 0.0.0.0 |
| Listener | Port | TCP-Port des Listeners; muss ≥ 1024 sein (ein Nicht-Root-Prozess kann keine privilegierten Ports binden). | 2222 |
| Authentifizierung | macOS-Kontopasswort | Akzeptiert das macOS-Anmeldepasswort des Benutzers, der die App ausführt (verifiziert über OpenDirectory). | Ein |
| Authentifizierung | Öffentlicher Schlüssel | Akzeptiert Schlüssel aus der untenstehenden Liste autorisierter Schlüssel. | Ein |
| Server-Hostschlüssel | Fingerabdruck | Der ed25519-Hostschlüssel-Fingerabdruck des Servers, zur Out-of-Band-Verifizierung. Zeigt (bei erster Aktivierung generiert) bis zur ersten Nutzung. | — |
| Autorisierte öffentliche Schlüssel | Liste | Registrierte ssh-ed25519- / ecdsa-Public-Keys. Fügen Sie sie durch Einfügen einer Schlüsselzeile hinzu; entfernen Sie sie mit dem Papierkorb-Symbol. Zeigt Keine Schlüssel registriert. wenn leer. | leer |
Bearbeiten Sie Bind-IP oder Port und drücken Sie die Eingabetaste, um die Änderung live anzuwenden. Der Abschnitt Authentifizierung vermerkt Verifiziert gegen <user> — den Benutzer, der bromure-cli ausführt. damit klar ist, wessen Passwort die Tür entsperrt.
Warnung: Mindestens eine Authentifizierungsmethode muss aktiviert bleiben — Sie können nicht sowohl Passwort- als auch Public-Key-Authentifizierung ausschalten. Das Einfügen eines ungültigen Schlüssels wird mit Kein gültiger öffentlicher Schlüssel abgelehnt. Das Hinzufügen oder Entfernen eines autorisierten Schlüssels startet den Listener neu, wodurch alle aktiven Verbindungen abbrechen.
Die bromure-cli remote CLI
Die CLI kommuniziert mit der laufenden App über deren Steuerungssocket, der nur dem Eigentümer zugänglich ist, sodass die App die einzige Quelle der Wahrheit bleibt. Sie ist der schnellste Weg, den Zugriff auf einem headless Mac zu aktivieren, den Sie über eine bestehende Shell erreicht haben.
| Befehl | Was er tut |
|---|---|
bromure-cli remote (oder remote status) | Gibt aktivierten/laufenden Zustand, Bind und Port, Authentifizierungsmethoden, Hostschlüssel-Fingerabdruck, Anmeldebenutzer, eine fertige Verbindungszeichenfolge und die nummerierte Liste autorisierter Schlüssel aus. |
bromure-cli remote enable [--port N] [--bind IP] [--password|--no-password] [--pubkey|--no-pubkey] | Startet den Server (startet bei Bedarf den App-Agenten automatisch). Standardwerte: Port 2222, Bind 0.0.0.0, beide Authentifizierungsmethoden ein. |
bromure-cli remote disable | Stoppt den Server und speichert den Aus-Zustand dauerhaft. |
bromure-cli remote key add <path-or-key-text> | Registriert einen öffentlichen Schlüssel aus einem Dateipfad oder einer eingefügten Schlüsselzeile; gibt dessen Fingerabdruck aus. |
bromure-cli remote key ls | Listet autorisierte Schlüssel mit einem 1-basierten Index, Fingerabdruck und Kommentar auf. |
bromure-cli remote key rm <index|fingerprint> | Entfernt einen Schlüssel nach Index oder nach einer Teilzeichenfolge des Fingerabdrucks. |
remote enable verweigert die Ausführung, wenn Sie sowohl --no-password als auch --no-pubkey übergeben, und meldet einen Fehler, solange ein Base-Image fehlt oder installiert wird. Wenn die App nicht läuft, geben status, disable und key ls Kein bromure-cli-Agent läuft. aus.
Hinweis: Der Server startet nicht, solange das Base-Image fehlt oder noch installiert wird — die Aktivierung gibt dann einen umsetzbaren Fehler zurück statt einer stillen Nichtaktion. Das gilt sowohl beim Start als auch beim Umlegen des Schalters. Installieren Sie das Base-Image zuerst oder schließen Sie dessen Installation ab.
Hostschlüssel, Fingerabdrücke und Vertrauen
Bei der ersten Aktivierung generiert der Server einen ed25519-Hostschlüssel. Dessen Fingerabdruck — angezeigt in der Zeile Server-Hostschlüssel und von bromure-cli remote status, in der Form 256 SHA256:… bromure-ac-remote (ED25519) — ist das, was ein sich verbindender Client verifiziert, um sicherzugehen, dass er den richtigen Mac erreicht hat. Geben Sie diesen Fingerabdruck an denjenigen weiter, der sich verbindet (oder überprüfen Sie ihn selbst im Erstkontakt-Blatt des Rich Clients), damit ein Man-in-the-Middle den Host nicht imitieren kann. Siehe Trust on First Use, wie der Rich Client ihn pinnt.
Ratenbegrenzung
Passwortversuche werden pro Quell-IP durch einen Token-Bucket gedrosselt: fünf Versuche mit voller Geschwindigkeit, dann eine Nachfüllung von etwa einem Versuch alle zwei Sekunden, wobei die auferlegte Verzögerung auf acht Sekunden begrenzt ist. Versuche werden verzögert, nie verweigert, und niemand wird jemals ausgesperrt; eine störende IP kann keine andere verlangsamen. Public-Key-Authentifizierung wird nie gedrosselt.
Anmeldung über einfaches SSH
Jedes Terminal kann den Host mit ssh -p 2222 <user>@<mac> erreichen. Statt einer Shell landet die Verbindung im Remote-Menü — einer curses-artigen TUI (intern bromure-cli __remote-menu), die jeder menschlichen Anmeldung aufgezwungen wird. Eine reine Shell ist dadurch nie erreichbar.
Das Menü spiegelt die App: eine einheitliche Arbeitsbereiche-Liste mit Live-Statusglyphen (● läuft, ◌ bootet, ⏸ ausgesetzt, ○ aus), plus die Abschnitte Modelle und Trace. Davon aus können Sie:
- Einen Arbeitsbereich erstellen mit einem Einzelbildschirm-Formular, mit einer Vollständige Einstellungen…-Tür zu allen vierzehn Konfigurationsbereichen (Allgemein, Agenten, Lokale Modelle, Fusion, Ordner, Zugangsdaten, Umgebung, MCP, Tracing, Schutzmechanismen, Lieferkette, Prompt-Injection, Darstellung, Ressourcen).
- Starten, aussetzen, beenden, neu starten oder löschen eines beliebigen Arbeitsbereichs.
- Jede Einstellung bearbeiten. Geheimnisse werden als
•••• (set)angezeigt; ein Geheimnis leer zu lassen behält den gespeicherten Wert. - Worktrees verwalten — erstellen, zusammenführen, ein Terminal anhängen oder verwerfen — mit derselben Verschachtelung wie in der GUI.
- SSH-Schlüssel generieren, Fusion und Modell-Routing umschalten und Trace-Zusammenfassungen durchsuchen.
- Anhängen an einen beliebigen tmux-Tab oder einen laufenden Docker-Container.
Navigieren Sie mit den Pfeiltasten, Enter zum Auswählen und q oder Esc, um zurückzugehen; Beenden (Verbindung trennen) beendet die Sitzung. Die Auswahl von Anhängen übergibt das Terminal an das tmux des Gasts; Ctrl-b d löst zurück zum Menü. Während Sie angehängt sind, öffnet ein Overlay-Tastenkürzel (Standard Ctrl-]) einen hostseitigen Controller — Tabs wechseln, einen neuen Tab öffnen, Worktrees verwalten, Fusion oder Routing umschalten, Einstellungen bearbeiten, neu starten, aussetzen oder trennen — ohne dass der Tastenanschlag jemals den Gast erreicht. Das Anhängen an einen Container fragt nach der Shell (Enter = sh).
Hinweis: Das Menü benötigt ein echtes Terminal. Eine Verbindung ohne TTY gibt einen Hinweis aus, sich mit
ssh -terneut zu verbinden. Das Starten eines kalten Arbeitsbereichs wartet bis zu etwa 20 Sekunden auf die tmux-Sitzung des Gasts, bevor es anhängt. Wenn ein Arbeitsbereich Abonnement-Authentifizierung verwendet, erinnert das Menü Sie daran, die Anmeldung des Tools (zum Beispielclaude login) innerhalb der VM auszuführen, nachdem sie gebootet ist.
Das Overlay-Tastenkürzel ist auf dem Host-Mac (der Maschine, mit der eine Verbindung hergestellt wird) über die Datei ~/Library/Application Support/BromureAC/remote/overlay-key konfigurierbar — akzeptierte Formen sind C-], ^], 0x1d oder 29 — oder über die Umgebungsvariable BROMURE_OVERLAY_KEY.
Ein Remote mit dem Rich Client spiegeln
Der Rich Client verwandelt die Kopie von Bromure Agentic Coding auf diesem Mac in eine Live-Spiegelung einer Remote-Kopie. Sie erhalten ein vollständiges Fenster, das das Remote mit genau derselben Seitenleiste, demselben Grid und denselben Terminal-Ansichten rendert, die Sie bereits kennen — dasselbe Layout, das unten für eine lokale Instanz gezeigt wird — jedoch mit dem Titel Remote — <name>, und jede Bearbeitung, die Sie vornehmen, läuft auf dem Remote und wird zurückgespiegelt.
Verbinden
Öffnen Sie Arbeitsbereiche → Mit Remote-Bromure verbinden… (⇧⌘K). Das Fenster fasst die Wahl zusammen: „Spiegeln Sie einen anderen Mac, auf dem Bromure läuft — sein Grid, seine Arbeitsbereiche, Tabs und Automatisierungen. Melden Sie sich an, um Ihre Server von überall zu erreichen, oder fügen Sie einen direkt per Adresse in Ihrem LAN hinzu." Beide Pfade führen zum selben Spiegelungsfenster; sie unterscheiden sich nur darin, wie die beiden Macs einander finden und autorisieren.
Per Adresse (gleiches Netzwerk)
Verwenden Sie dies in einem LAN, in dem Sie die Adresse des Macs kennen und kein bromure.io-Konto benötigen.
- Auf dem Remote-Mac aktivieren Sie den Fernzugriff (das Fenster Fernzugriff oder
bromure-cli remote enable). - Auf diesem Mac klicken Sie auf +, geben einen Namen ein (zum Beispiel
rack mini), Adresse, Port (Standard2222) und Remote-Benutzer, und klicken dann auf Verbinden. Gespeicherte Zeilen zeigenuser@address:portund den Zeitpunkt der letzten Verbindung. - Beim Erstkontakt zeigt ein Blatt den SSH-Hostschlüssel-Fingerabdruck des Remotes. Verifizieren Sie ihn gegen das Fenster Fernzugriff des Remotes und klicken Sie dann auf Vertrauen & Fortfahren. Der Pin wird für diesen Endpunkt gespeichert; spätere Verbindungen sind stillschweigend, es sei denn, der Schlüssel ändert sich, in welchem Fall die Schaltfläche rot wird und Neuem Schlüssel vertrauen & Fortfahren anzeigt — ein möglicher Man-in-the-Middle.
- Der Client versucht die Public-Key-Authentifizierung mit dem dedizierten Schlüssel dieses Macs. Wenn dieser Mac noch nicht autorisiert ist, weicht er auf das macOS-Anmeldepasswort des Remote-Benutzers aus (Schaltfläche: Anmelden); eine erfolgreiche Passwortanmeldung registriert den Schlüssel dieses Macs über den Tunnel auf dem Remote, sodass jede spätere Verbindung passwortlos ist. Um ohne jemals ein Passwort einzugeben vorab zu autorisieren, klicken Sie auf Schlüssel dieses Macs anzeigen und führen
bromure-cli remote key add '<this Mac's key>'auf dem Remote aus.
Nach der ersten Verbindung doppelklicken Sie einen gespeicherten Server für Ein-Klick-Wiederverbindungen; das Kontextmenü jeder Zeile bietet Verbinden, Bearbeiten… und Entfernen.
Über ein bromure.io-Konto (von überall)
Die Anmeldung bei bromure.io ermöglicht es einem Client, Ihre Server über Netzwerke hinweg zu erreichen — vom Café-WLAN zu einem Mac zu Hause — ohne Port-Weiterleitung, ohne VPN und ohne zu merkende Adresse. bromure.io führt nur die beiden Macs zusammen und leitet Bytes weiter, wenn ein direkter Pfad unmöglich ist; die SSH-Sitzung selbst bleibt Ende-zu-Ende-verschlüsselt zwischen den beiden Macs.
- Melden Sie sich an. Wählen Sie Fenster → Bei bromure.io registrieren… und geben Sie den Registrierungscode ein, den Ihr bromure.io-Konto bereitstellt (eine Sechs-Wort-Phrase, die Ihr Administrator oder — für ein persönliches Konto — die Web-Konsole erzeugt), plus einen Gerätenamen. Jedes Gerät, das Sie registrieren, teilt dasselbe Konto.
- Auf dem Remote-Mac aktivieren Sie Fernzugriff. Ein Server erscheint im Verzeichnis nur, solange seine Eingangstür an ist und er Herzschläge an bromure.io sendet.
- Auf diesem Mac öffnen Sie Mit Remote-Bromure verbinden…. Ihre Server sind unter Meine Server · bromure.io mit einem Live-Online-Punkt und der Zuletzt-gesehen-Zeit aufgelistet. Doppelklicken Sie einen (oder wählen Sie ihn aus und klicken Sie auf Verbinden). Der Status liest „Verbinde mit
<name>über bromure.io…", während ein Peer-to-Peer-Pfad aufgebaut wird — direkt, per Router-Port-Mapping oder relayed —, dann öffnet sich das Spiegelungsfenster.
In diesem Pfad gibt es keine Adresse einzugeben, kein Hostschlüssel-Blatt und kein Passwort: Ihre eigenen Geräte vertrauen einander über Ihr Konto (unten), und der Hostschlüssel wird automatisch gepinnt.
Passwortlos zwischen Ihren eigenen Geräten
Sobald Sie angemeldet sind, teilt jedes Gerät, das Sie registrieren, seine SSH-Identität über Ihr Konto, sodass jedes Ihrer Geräte jeden Ihrer Server ohne Passwort und ohne manuelles bromure-cli remote key add erreicht:
- Jedes Gerät veröffentlicht seinen öffentlichen SSH-Schlüssel beim Start an bromure.io. Jeder Ihrer Server (Fernzugriff an) holt die Schlüssel Ihrer Geräte und installiert sie innerhalb von Sekunden in seine
authorized_keys— über denselben Gerätekanal, sodass ein soeben registriertes Gerät fast sofort autorisiert ist, ohne von Hand kopierten Schlüssel. - Ein Server veröffentlicht außerdem den macOS-Login, unter dem er läuft, sodass der Client ihn automatisch als korrekten Benutzer anwählt (genau das Feld, das der Per-Adresse-Pfad Sie ausfüllen lässt).
- Schlüssel sind auf Ihre eigenen Geräte beschränkt — nie auf die eines anderen Benutzers, selbst innerhalb derselben Organisation.
- Abmelden auf einem Gerät setzt es außer Dienst: Sein Schlüssel wird von Ihren Servern entfernt und es verschwindet aus dem Verzeichnis, sodass eine erneute Anmeldung nie ein veraltetes Duplikat hinterlässt. Ein 90 Tage lang ungenutztes Gerät wird ebenfalls nicht mehr autorisiert, bis es sich das nächste Mal meldet. Und aus der Web-Konsole von bromure.io können Sie jedes Ihrer Geräte auf Anforderung abmelden.
Hinweis: Der Rich Client generiert bei der ersten Nutzung sein eigenes dediziertes ed25519-Schlüsselpaar (Kommentar
bromure-ac-fatclient), gespeichert unter dem Remote-Client-Verzeichnis — dies ist der an Ihr Konto veröffentlichte Schlüssel. Für eine Per-Adresse-Verbindung gehört der Hostschlüssel-Pin zum Endpunkt (address:port), nicht zum Benutzer, sodass das Bearbeiten der Adresse oder des Ports eines gespeicherten Servers den Pin verwirft und das Fingerabdruck-Blatt erneut auslöst; eine bromure.io-Verbindung pinnt stattdessen den Schlüssel des Peers über das Konto. Die macOS-App und die iOS-/iPadOS-App („Bromure Client") verwenden beide dieses Kontomodell — die mobile App ist ein reiner Client-Spiegel, der genau auf dieselbe Weise erreicht wird (anmelden, Server auswählen, verbinden). Der Per-Adresse-Pfad ist nur für macOS.
Das Spiegelungsfenster
Das Spiegelungsfenster öffnet sich automatisch nach einer erfolgreichen Verbindung. Klicken Sie auf eine Arbeitsbereich-Zeile, um dessen Live-Terminal einzubinden (falls laufend) oder dessen VM-Dashboard mit Starten / Fortsetzen (falls aus oder ausgesetzt); die Bühne folgt Zustandsübergängen live. Tab-Klicks wechseln optimistisch und werden durch die nächste Zustandsabfrage bestätigt.
Die Symbolleiste in der Titelleiste spiegelt die lokale VM-spezifische Pille, von links nach rechts: den Netzwerk-Tunnel-Schalter (nur Remote-Fenster), die IP-Pille, den Fusion-Blitz, Dateien durchsuchen (Ordner), VM neu starten, Arbeitsbereich bearbeiten (Zahnrad), In eigenes Fenster ausklappen, Agentischen Browser ein-/ausblenden (⌃⌘B) (Globus) und Repo-Dateien ein-/ausblenden (⌃⌘E). Das Docker-Dashboard öffnet sich aus der Seitenleiste, genau wie lokal.
Einige Bedienelemente verhalten sich über die Spiegelung besonders:
- Arbeitsbereich bearbeiten öffnet denselben Profileditor wie lokal, jedoch gestützt auf ein Lesen mit ausgeblendeten Geheimnissen und ein geheimnisbewahrendes Sichern (siehe Geheimnisse bleiben auf dem Host). Neuen SSH-Schlüssel generieren funktioniert und zeigt Ihnen den neuen öffentlichen Schlüssel.
- Dateien durchsuchen öffnet ein Finder-ähnliches VM-spezifisches Fenster mit dem Titel Dateien —
<workspace>(<host>) über dem Gast-Dateisystem — Home plus bis zu acht freigegebene Ordner — mit Drag-in- und Drag-out-Übertragung über den Tunnel. - VM neu starten fragt lokal Soft vs. Hart und sendet dann das Verb.
- Ausklappen öffnet ein zusätzliches Live-Terminalfenster, das sich automatisch schließt, wenn der Arbeitsbereich stoppt.
Unter der Haube fragt die Spiegelung den /state-Schnappschuss des Remotes alle 0,75 Sekunden über eine SSH-getunnelte Steuerungssocket-Brücke ab und rendert ihn durch dieselben Ansichten wie ein lokales Fenster. Kurze Steuerungsaufrufe werden über eine SSH-ControlMaster-Verbindung pro Host gemultiplext; interaktive Terminal-Anhänge verwenden bewusst ihre eigenen dedizierten SSH-Verbindungen, weil ein gemultiplexter Kanal die spontane Ausgabe (tmux-Neuzeichnungen) puffert, die ein Terminal sofort benötigt. Über eine bromure.io-Verbindung nehmen dieselbe Brücke und dieselben Terminal-Streams den Peer-to-Peer-SSH-Pfad (erreicht über einen lokalen Loopback-Shim), und die Spiegelung verhält sich identisch.
Was gespiegelt wird und was aus der Ferne funktioniert
Die Spiegelung ist umfassend. Sie rendert jeden Arbeitsbereich mit seinem Live-Laufzustand, alle Tabs und Worktrees (vollständig verschachtelt), das Grid-Layout, Automatisierungen, VM-Dashboards für ausgeschaltete und ausgesetzte Arbeitsbereiche, das Docker-Dashboard, Vitalwerte (CPU, Speicher, Auslastung, Festplatte, Betriebszeit, IP, Ports) und interaktive Live-Terminals. Bearbeitungen sind bidirektional und konvergieren bei jedem verbundenen Client bei der nächsten Abfrage: Starten/Stoppen/Aussetzen/Neustart, Tab-Operationen, Grid-Bearbeitungen (Gesamtlayout, letzter-Schreiber-gewinnt), Automatisierungsbearbeitungen, der Fusion-Schalter, Docker-Aktionen, Einstellungs-Sicherungen und Dateiübertragungen.
Einige Operationen sind vom Rich Client in dieser Version nicht verfügbar:
- Prompt-gesteuerte Worktree-Operationen — das Erstellen eines neuen Worktrees, das Zusammenführen, das Auflösen eines Konflikts oder das Seeden einer Automatisierung — werden in v1 nicht ferngesteuert. Führen Sie diese auf der eigenen GUI des Hosts oder über das Remote-Menü aus (das Erstellen, Zusammenführen und Auflösen unterstützt). Die Spiegelung zeigt weiterhin jeden Worktree an, und entfernen sowie Terminal anhängen funktionieren aus der Ferne.
- Grid-Layout-Bearbeitungen erfordern ein geöffnetes GUI-Fenster auf dem Remote. Ein vollständig headless Remote (App läuft, kein einheitliches Fenster) spiegelt alles andere, kann aber keine Layout-Änderung annehmen.
- Nur hostseitige Bedienelemente — das Importieren eines SSH-Schlüssels aus einer Datei und die Abonnement-Registrierung — sind im Remote-Einstellungseditor ausgeblendet.
Ausstehende Entscheidungs-Prompts
Einige Aktionen, die Sie aus der Ferne initiieren, lösen eine Entscheidung auf dem Remote aus — ein Home-Speicher-Upgrade, ein Base-Image-Drift-Reset oder das Löschen einer kompromittierten VM. Diese erscheinen im /state-Schnappschuss als ausstehende Prompts und tauchen als lokale Warnungen in Ihrem Spiegelungsfenster auf; Ihre Antwort läuft über den Tunnel zurück. Wenn ein Prompt unbeantwortet bleibt, läuft er in die sichere, nicht-destruktive Wahl ab. Die MITM-Zustimmungs-Prompts, die ein laufender Agent auslösen kann (Nutzung von Zugangsdaten, Lieferketten-Durchleitung, Schutzmechanismus-Schreibvorgänge, Prompt-Injection), werden über einen separaten, vom Gast nicht fälschbaren Pfad gehandhabt, der unter Umgang mit Remote-Zustimmung dokumentiert ist.
Geheimnisse bleiben auf dem Host
Geheimnisse überqueren nie die Verbindung. Wenn der Rich Client ein Remote-Profil liest, um den Editor zu befüllen, kommt jedes Geheimnisfeld ausgeblendet an. Beim Sichern bedeutet ein leeres Feld „behalte den gespeicherten Wert" und ein eingegebenes ersetzt ihn. API-Schlüssel, Token und MCP-Umgebungsgeheimnisse bleiben auf dem Remote-Mac. Der Rich Client authentifiziert sich nach dem Pairing allein per SSH-Schlüssel — es gibt keine Passwortabfragen während der Spiegelung.
Dienste auf den VMs des Remotes erreichen
Der Dev-Server eines Remote-Arbeitsbereichs lebt unter einer privaten Adresse wie http://192.168.64.5:3000 im Netzwerk des Remotes. Bromure gibt Ihnen zwei Zugriffsstufen darauf — eine automatische und browser-beschränkte, eine optionale und systemweite.
Der Browser-Bereich (automatisch, PAC-beschränkt)
Der einklappbare Browser-Bereich auf der rechten Seite des Spiegelungsfensters (die Globus-Symbolleisten-Schaltfläche oder ⌃⌘B) ist eine lokale Chromium-VM, deren Seitenverkehr zum Remote-Arbeitsbereich-Subnetz über SSH getunnelt wird. Ein generiertes PAC-Skript (Proxy-Auto-Config) routet nur das Remote-Subnetz über einen hostspezifischen SOCKS-Forwarder und alles andere DIRECT, und Ziele werden auf der Remote-Seite aufgelöst — sodass die Navigation zum wörtlichen http://192.168.64.x:port eines Remote-Dev-Servers einfach funktioniert. Der eigene Browser-Steuerungs-MCP-Stream des Remote-Agenten wird an diesen Bereich weitergeleitet, sodass der Remote-Coding-Agent den Browser bedient, den Sie betrachten.
Wählen Sie einen laufenden Remote-Arbeitsbereich und drücken Sie ⌃⌘B. Der Bereich tut nichts, bis der erste /state-Schnappschuss das Subnetz des Remotes geliefert hat und der SOCKS-Forwarder läuft (eine Log-Zeile vermerkt „tunnel not ready" bis dahin). Seine lokale Browser-VM ist an das Subnetz 192.168.127.0/24 (Gateway 192.168.127.1) gepinnt, sodass sie niemals mit einem Arbeitsbereich-Subnetz kollidieren kann. Persistente Browser-Profile leben auf diesem Mac, indiziert nach der Remote-Arbeitsbereich-ID.
Hinweis: Der Browser-Bereich erfordert, dass dieser Mac Apple Silicon ist und das Browser-Base-Image lokal installiert hat. Der SOCKS-Forwarder bindet
0.0.0.0(damit die Browser-VM ihn am vmnet-Gateway erreichen kann), akzeptiert aber Verbindungen nur von Loopback und dem gepinnten192.168.127.x-Browser-Subnetz — er ist niemals ein offenes Relay.
SOCKS-Weiterleitung und feste Port-Weiterleitungen
Jeder verbundene Remote-Host erhält automatisch einen lokalen SOCKS5-Forwarder auf einem ephemeren Port, der an 0.0.0.0 gebunden ist (peer-gefiltert auf Loopback und das 192.168.127.x-Browser-Subnetz). Jedes CONNECT öffnet einen forward <ip> <port>-SSH-Kanal, den das Remote — über das immer aktive Loopback-Relay des Gasts auf vsock 5010 — zum eigenen 127.0.0.1:<port> dieses Gasts überbrückt. Von diesem Mac aus erreicht also curl --socks5 127.0.0.1:<port> http://192.168.64.5:3000 den Remote-Gast Byte für Byte.
Für feste Weiterleitungen gibt es versteckte CLI-Verkabelung: bromure-cli __forward <hostID> <localPort> <remoteIP> <remotePort> für eine ssh -L-artige Weiterleitung und bromure-cli __forward-socks <hostID> <localPort> für einen eigenständigen SOCKS-Proxy. Beide binden standardmäßig Loopback und akzeptieren --bind-all.
Warnung: Das Remote verweigert jede Weiterleitung, deren Ziel kein Gast in seinem eigenen vmnet-Subnetz ist. Sie können eine Weiterleitung nicht nutzen, um den Remote-Mac selbst, sein Gateway oder das Internet zu erreichen — nur die Arbeitsbereich-VMs.
Der systemweite Netzwerk-Tunnel
Wenn Sie möchten, dass irgendeine lokale App — nicht nur der Browser-Bereich — Remote-VMs unter ihren wörtlichen Adressen erreicht, aktivieren Sie den hostspezifischen Tunnel mit dem Netzwerk-Schalter der Spiegelungs-Symbolleiste (dem Dreieck-Pfad-Symbol, dem ersten in der Symbolleiste). Sein Tooltip lautet Direkten Netzwerkzugriff auf die VMs des Remotes aktivieren (192.168.x.x von jeder lokalen App).
Ein einmaliger privilegierter Helfer — ein über SMAppService installierter launchd-Daemon, kein sudo — erstellt eine utun-Schnittstelle und routet das Remote-Subnetz zu ihr, dann gibt er den Dateideskriptor der Schnittstelle an die App zurück. Ein Userspace-TCP/UDP-Stack in der App terminiert jeden Fluss und spleißt ihn über dieselben SSH-Weiterleitungskanäle unter Verwendung Ihrer SSH-Identität. Es gibt keine pf-Regeln und keine Kernel-Weiterleitung.
Wenn Sie ihn zum ersten Mal aktivieren, erklärt eine Warnung mit dem Titel Bromures Netzwerkhelfer erlauben die einmalige macOS-Genehmigung:
- Klicken Sie auf den Symbolleisten-Schalter.
- Öffnen Sie in der Warnung Systemeinstellungen → Allgemein → Anmeldeobjekte und erlauben Sie Bromure Agentic Coding (macOS fragt einmalig nach Administrator-Zugangsdaten).
- Die App fragt nach der Genehmigung (alle 2 Sekunden, bis zu 5 Minuten) und verbindet sich automatisch in dem Moment, in dem sie eintrifft. Während sie wartet, lautet der Schalter-Tooltip Warte auf Genehmigung in Systemeinstellungen › Anmeldeobjekte….
Wenn der Tunnel läuft, lautet der Tooltip Direkter Netzwerkzugriff auf die VMs des Remotes ist EIN — klicken zum Ausschalten; wenn er fehlschlägt, Netzwerk-Tunnel fehlgeschlagen — klicken zum erneuten Versuch. Das Ausschalten stoppt den Tunnel, und wenn der letzte Host ihn deaktiviert, wird der Daemon abgemeldet. Die Einstellung wird pro Host gespeichert.
Hinweis: Der Tunnel benötigt ein Administratorkonto für die einmalige Genehmigung. Ohne ein solches funktioniert Bromure weiterhin über den integrierten SOCKS-Pfad — der Helfer wird nur benötigt, um Remote-VMs von anderen Apps zu erreichen. Wenn macOS die Registrierung direkt verweigert, erklärt eine Warnung mit dem Titel Netzwerkhelfer konnte nicht installiert werden dies, und der Schalter versucht es beim nächsten Klick erneut. Ein
pingan einen Remote-Gast wird lokal vom Tunnel beantwortet: Es bestätigt, dass das Routing funktioniert, nicht dass der Gast lebt.
Mehrere Remotes (Subnetze pro Installation + Flotten-Routing)
Sie können mehrere Remotes gleichzeitig spiegeln; jedes öffnet sein eigenes Fenster, seinen eigenen SOCKS-Forwarder und (optional) Tunnel. Die Falle, in die dies früher tappte: Jede Installation verwendete historisch dasselbe 192.168.64.0/24-Netzwerk für ihre Arbeitsbereich-VMs, sodass zwei gespiegelte Remotes identische Subnetze bewarben und das systemweite VPN sie nicht unterscheiden konnte.
Subnetze pro Installation beheben dies an der Quelle. Jeder Mac wählt nun ein zufälliges /24 innerhalb von 172.16.0.0/12 — überspringt dabei Dockers 172.17–172.20-Bereich und jedes /24, auf dem der Host bereits ist — und verwendet es für alle seine Arbeitsbereich-VMs, sodass zwei unabhängige Installationen fast nie kollidieren (172.16/12 ist auch der private Bereich, der am unwahrscheinlichsten mit einem Firmen-LAN oder VPN kollidiert). Beim ersten Start nach einem Update bietet Bromure an, diesen Mac auf ein privates Subnetz zu migrieren — Jetzt migrieren, Später oder Nicht mehr fragen — und Sie können es jederzeit unter Einstellungen → Ressourcen → Arbeitsbereich-Subnetz ändern oder neu randomisieren. Die Gast-Adressierung ist reines DHCP von Bromures eigenem Switch, sodass dies vollständig hostseitig ist (kein Image-Rebuild), und das Remote bewirbt sein gewähltes Subnetz in /state, sodass der Rich Client und der Tunnel ihm automatisch folgen.
Für den seltenen Fall, dass zwei Remotes dennoch ein Subnetz teilen, wird das erste wörtlich geroutet und dem zweiten ein 100.64.<n>.0/24-CGNAT-Bereich-Alias gegeben, mit einer 1:1-host-oktett-bewahrenden Neuzuordnung, sodass beide gleichzeitig erreicht werden können.
Warnung: Das Multi-Host-Alias-Routing ist implementiert und unit-getestet, aber die Laufzeit-Verkabelung, die ein alias-fähiges PAC und eine Browser-MCP-Neuzuordnung über Hosts hinweg zusammenfügt, steht noch aus. Ein einzelner Remote-Host ist heute die vollständig unterstützte Konfiguration. Eine bekannte Einschränkung des Aliasing ist, sobald es verkabelt ist, dass eine Dev-Seite, die einen absoluten wörtlichen
http://192.168.64.x-Link innerhalb eines aliasierten Remotes ausgibt, fehlgeleitet werden kann; wörtliche (nicht aliasierte) Remotes sind nicht betroffen.
Einen Dev-Server im Internet bereitstellen
Getrennt von allem Obigen kann ein einzelner HTTP-Dienst, der innerhalb eines Arbeitsbereichs läuft, mit einem portspezifischen Cloudflare-Quick-Tunnel für das öffentliche Internet bereitgestellt werden. Öffnen Sie das Dashboard eines laufenden Arbeitsbereichs, suchen Sie den Dienst unter der Ports-Karte und klicken Sie auf den Globus (Tooltip: Im Internet bereitstellen (Cloudflare-Quick-Tunnel)). Bromure führt einen cloudflared-Prozess für diesen Ursprung aus und gibt Ihnen eine zufällige https://<name>.trycloudflare.com-URL — kein Cloudflare-Konto erforderlich. Ein Tunnel und eine URL pro Dienst; das Bereitstellen oder Zurücknehmen eines Dienstes stört nie die anderen.
Die Farbe des Globus verfolgt den Zustand: grau = aus, orange = wird installiert oder gestartet, grün = läuft, rot = fehlgeschlagen. Eine Statuszeile unter dem Port zeigt den Fortschritt (cloudflared wird heruntergeladen & verifiziert (~18 MB, einmalig)…, dann Tunnel wird gestartet…) oder den anklickbaren öffentlichen Hostnamen mit einer Kopieren-Schaltfläche.
Wenn Sie zum ersten Mal etwas bereitstellen, deckt ein einmaliger Zustimmungsdialog mit dem Titel Dienste über Cloudflare Tunnel im Internet bereitstellen? den Download, die Verifizierung, Cloudflares Nutzungsbedingungen und die Tatsache ab, dass jeder mit der zufälligen URL den Dienst erreichen kann. Klicken Sie erneut auf den Globus, um zu stoppen.
Die cloudflared-Binärdatei ist ein gepinntes Release, das zweimal verifiziert wird, bevor es jemals läuft: Der SHA-256 des heruntergeladenen Archivs wird gegen einen in die App eingebackenen Hash geprüft, und eine Developer-ID-Codesignaturprüfung bestätigt Cloudflares Team-ID. Jeder Schritt wird im Lieferketten-Log aufgezeichnet (siehe Lieferketten-Schutz). Es läuft mit --no-autoupdate.
Warnung: Quick-Tunnel-URLs sind öffentlich für jeden, der sie hat, und der Hostname rotiert, wann immer der Tunnel neu startet (ein Neustart, ein Zurücknehmen/erneutes Bereitstellen oder ein Absturz). Nur HTTP(S)-Ursprünge erhalten einen Globus — SSH und bekannte Raw-TCP- oder Datenbank-Ports (22, 1433, 3306, 3389, 5432, 5672, 5900, 6379, 9092, 11211, 27017) sowie UDP nie, weil ein Browser sie nicht über Cloudflares Edge erreichen könnte. Alle Tunnel eines Arbeitsbereichs werden abgebaut, wenn seine VM ausgesetzt oder heruntergefahren wird. Eine Hash-Diskrepanz beim Download verweigert die Installation, bis der Pin in einem App-Release aktualisiert wird.
OAuth-Callback-Weiterleitung
Eine CLI, die innerhalb einer Arbeitsbereich-VM läuft — gh, gcloud, eine Abonnement-Anmeldung — schließt einen OAuth-Flow oft ab, indem sie einen Browser auf Ihrem Host-Mac öffnet und auf eine Weiterleitung zu http://127.0.0.1:<port>/callback wartet. Bromure überbrückt das automatisch: Der Host bindet den Loopback-Port sowohl auf IPv4 als auch IPv6 und spleißt ihn bei der ersten echten Anfrage über vsock 5010 zum eigenen 127.0.0.1:<port> des Gasts. Die redirect_uri wird nie umgeschrieben, sodass PKCE- und Weiterleitungsvalidierung weiterhin bestehen. Es gibt nichts zu konfigurieren — starten Sie die Anmeldung innerhalb des Arbeitsbereichs, und die Weiterleitung wird in den Gast geliefert.
Der Forwarder baut sich nach 300 Sekunden selbst ab, sodass der Loopback-Port nie unbegrenzt gehalten wird. Wenn der Host-Port bereits belegt ist, verläuft der Flow nativ ohne die Brücke, und spekulative Browser-Preconnects (Sockets, die sich öffnen, aber nie senden) werden ignoriert, sodass sie einen Einmal-Callback-Server nicht blockieren können.
Sicherheitsmodell
Fernzugriff ist mächtig, daher lohnt es sich, bei seinen Grenzen präzise zu sein.
- Standardmäßig aus, eine Tür. Kein Fernzugriffspfad existiert, bis Sie den SSH-Server aktivieren. Jeder Pfad — menschliches Menü, CLI, Rich Client, Port-Weiterleitungen, Browser-MCP — läuft über diesen einen Server und keinen anderen.
- Verschlüsselung und Transport. Der gesamte Verkehr ist SSH. Die Steuerungsabfrage des Rich Clients, Terminal-Anhänge, Dateiübertragungen, Port-Weiterleitungen und das Browser-MCP-Relay reisen alle innerhalb der SSH-Verbindung. Da swift-nio-ssh keinen Post-Quantum-Schlüsselaustausch hat, gibt ein moderner OpenSSH-Client eine Warnung „not using a post-quantum key exchange" aus; dies ist zu erwarten und deutet nicht auf einen Downgrade-Angriff hin.
- bromure.io ist ein Vermittler, kein Mittelsmann. Im Kontopfad führt bromure.io nur Ihre beiden Geräte zusammen und — wenn kein direkter Peer-to-Peer-Pfad aufgebaut werden kann — leitet undurchsichtige Bytes über ein TURN-Relay (über TLS) weiter. Es terminiert nie die SSH-Sitzung: Der verschlüsselte Tunnel läuft Ende-zu-Ende zwischen Ihren beiden Macs. SSH-Schlüssel werden nur unter den Geräten Ihres eigenen Kontos geteilt (nie mit denen eines anderen Benutzers), jeder Server holt die Geräteschlüssel seines Eigentümers selbst, und Registrieren / Abmelden ist die Art, wie das Vertrauen eines Geräts gewährt und entzogen wird. Ein abgemeldetes oder 90 Tage lang inaktives Gerät wird nicht mehr autorisiert.
- Wer sich anmelden kann. Nur der exakte macOS-Benutzer, der die App gestartet hat. Die Passwort-Authentifizierung wird gegen OpenDirectory verifiziert (keine Entfernte Anmeldung, keine PAM-Änderungen, keine Administratorrechte), und die Public-Key-Authentifizierung akzeptiert nur Schlüssel, die Sie registriert haben. Passwortversuche werden pro Quell-IP ratenbegrenzt; Schlüssel nicht.
- Was eine Sitzung tun kann. Eine menschliche Anmeldung kann nur das Remote-Menü erreichen — nie eine Shell — sodass sie Arbeitsbereiche erstellen, konfigurieren und bedienen kann, aber keine beliebigen Host-Befehle ausführen kann. Die vier Maschinen-Verben des Rich Clients sind ähnlich eng gefasst: eine Steuerungssocket-Brücke, eine Weiterleitung zu einem Gast im vmnet-Subnetz und ein Browser-MCP-Relay. Weiterleitungen zum Host selbst, zum Gateway oder zum Internet werden verweigert.
- Geheimnisse verlassen nie den Host. Remote-Profil-Lesevorgänge sind geheimnis-ausgeblendet und Sicherungen geheimnisbewahrend; API-Schlüssel, Token und MCP-Umgebungsgeheimnisse bleiben auf dem Remote-Mac.
- Trust on First Use. Der Rich Client pinnt den Hostschlüssel des Remotes pro Endpunkt beim Erstkontakt und warnt lautstark bei jeder späteren Änderung.
- Vom Gast nicht fälschbare Zustimmung. MITM-Zustimmungs-Prompts, die von einem laufenden Agenten ausgelöst werden, werden auf der Host-Seite der Terminal-Pumpe gerendert, wo ein kompromittierter Gast sie weder sehen noch fälschen kann; jeder Timeout oder jedes Trennen löst sich zu Ablehnen auf. Siehe Umgang mit Remote-Zustimmung.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Was zu tun ist |
|---|---|---|
| Aktivierung gibt einen Fehler zurück | Base-Image fehlt oder wird noch installiert | Der Server kann nicht starten, bis das Base-Image vorhanden ist. Schließen Sie die Installation ab und aktivieren Sie erneut. |
ssh verbindet sich, sagt aber, mit ssh -t erneut zu verbinden | Kein TTY wurde angefordert | Das Remote-Menü benötigt ein Terminal; fügen Sie -t hinzu (oder verwenden Sie ssh -t -p 2222 <user>@<mac>). |
| OpenSSH gibt „not using a post-quantum key exchange" aus | swift-nio-ssh hat keinen PQ-Schlüsselaustausch | Zu erwarten und harmlos — die Verbindung ist weiterhin verschlüsselt. |
| Eine Per-Adresse-Verbindung fragt immer wieder nach einem Passwort | Der Schlüssel dieses Macs ist nicht auf dem Remote registriert | Lassen Sie eine Passwortanmeldung ihn automatisch registrieren oder führen Sie bromure-cli remote key add '<this Mac's key>' auf dem Remote aus (Schlüssel dieses Macs anzeigen kopiert ihn). |
| Eine bromure.io-Verbindung fragt noch nach einem Passwort | Die Schlüsselregistrierung hat dieses Gerät auf diesem Server noch nicht autorisiert | Passwortlos ist hier automatisch — prüfen Sie, dass Sie auf beiden Macs bei bromure.io angemeldet sind, der Server Fernzugriff an hat und beide einen aktuellen Build ausführen (der Server veröffentlicht seinen Login und holt Ihre Schlüssel). Geben Sie nach dem Aktivieren von Fernzugriff ein paar Sekunden. |
| Meine Server · bromure.io ist leer | Nicht angemeldet, oder der Server wirbt nicht | Melden Sie sich an (Fenster → Bei bromure.io registrieren…); aktivieren Sie auf dem Remote Fernzugriff, damit er Herzschläge sendet und erscheint. Eine ausgegraute Zeile bedeutet, dass er keine Herzschläge mehr sendet. |
| „Verbindung … über bromure.io konnte nicht hergestellt werden" | Kein direkter oder relayter Netzwerkpfad zwischen den beiden Macs | Bestätigen Sie, dass beide bromure.io erreichen können; das Relay benötigt erreichbares turns:5349. Versuchen Sie es erneut — ein Pfad wird beim nächsten Versuch neu probiert. |
| „… über bromure.io erreicht, aber seine SSH-Eingangstür antwortete nicht" | Fernzugriff wurde auf dem Remote ausgeschaltet | Aktivieren Sie Fernzugriff auf dem Remote-Mac erneut. |
| „Das bromure.io-Gerät dieses Macs wurde widerrufen. Melden Sie sich erneut an." | Dieses Gerät wurde abgemeldet / widerrufen (durch Sie, die Web-Konsole oder 90 Tage Inaktivität) | Erneut registrieren: Fenster → Bei bromure.io registrieren…. |
| Rotes Neuem Schlüssel vertrauen & Fortfahren-Blatt | Der Hostschlüssel des Remotes hat sich seit dem Pinnen geändert | Verifizieren Sie außerhalb des Bandes; fahren Sie nur fort, wenn Sie wissen, warum sich der Schlüssel geändert hat (Neuinstallation, neuer Mac) — andernfalls könnte es ein Man-in-the-Middle sein. |
| Aktive Verbindungen brechen nach dem Bearbeiten von Schlüsseln ab | Das Hinzufügen oder Entfernen eines autorisierten Schlüssels startet den Listener neu | Zu erwarten; verbinden Sie sich erneut. |
| Browser-Bereich bleibt leer | Der SOCKS-Forwarder oder das Subnetz ist noch nicht bereit | Warten Sie auf die erste /state-Abfrage; stellen Sie sicher, dass der Arbeitsbereich läuft und dieser Mac das Browser-Image installiert hat. |
| Eine Weiterleitung wird verweigert | Das Ziel ist kein Gast im vmnet-Subnetz des Remotes | Weiterleitungen können nur Arbeitsbereich-VMs erreichen, nie den Host, das Gateway oder das Internet. |
| Tunnel-Schalter hängt bei Warte auf Genehmigung… | Der privilegierte Helfer ist noch nicht genehmigt | Genehmigen Sie Bromure Agentic Coding in Systemeinstellungen → Allgemein → Anmeldeobjekte (benötigt Admin). Ohne ihn funktioniert SOCKS weiterhin. |
| Grid-Layout-Bearbeitungen greifen nicht auf dem Remote | Das Remote ist headless | Grid-Bearbeitungen benötigen ein geöffnetes GUI-Fenster auf dem Remote; alles andere wird weiterhin gespiegelt. |
Dateien, Ports und Umgebungsvariablen
Serverseitiger Zustand lebt unter ~/Library/Application Support/BromureAC/remote/: hostkey_ed25519 (0600) und dessen .pub, authorized_keys (0600) und die optionale overlay-key-Überschreibung. Die Identität und der Zustand des Rich Clients leben unter ~/Library/Application Support/BromureAC/remote-client/: id_ed25519(.pub) (Kommentar bromure-ac-fatclient), known_hosts (TOFU-Pins), hosts.json (gespeicherte Server) und pro-Host-Spiegelungspersistenz unter hosts/<host-UUID>/. Das gesamte Support-Verzeichnis wird unter CFFIXED_USER_HOME verlagert.
| Port / Schnittstelle | Rolle |
|---|---|
TCP 2222 (konfigurierbar, ≥ 1024) | Der eingebettete SSH-Server, Bind standardmäßig 0.0.0.0. |
Ausgehend TCP 443 + turns:5349 | Nur bromure.io-Kontopfad. Erreichen Ihres Kontos (Geräteverzeichnis, Rendezvous) und, wenn kein direkter Peer-to-Peer-Pfad aufgebaut werden kann, das TURN-Relay über TLS. Beide müssen von jedem Gerät für den Kontopfad erreichbar sein; ohne Bezug zum Per-Adresse-Pfad. |
| Gast-vsock 5010 | Immer aktives Loopback-Relay in jeder VM — der Pfad für Port-Weiterleitungen und OAuth-Callback-Auslieferung. |
| Gast-vsock 5830 | Der Browser-MCP-Stream des Arbeitsbereich-Agenten, weitergeleitet an den Browser-Bereich des Rich Clients. |
Ephemerer Port, gebunden an 0.0.0.0 | Hostspezifischer SOCKS5-Forwarder (peer-gefiltert auf Loopback und das 192.168.127.x-Browser-Subnetz). |
192.168.127.0/24 | Das gepinnte lokale Browser-VM-Subnetz des Rich Clients. |
100.64.<n>.0/24 | CGNAT-Alias-Subnetze, die bei einer Flotten-Subnetz-Kollision zugewiesen werden. |
Die relevanten UserDefaults-Schlüssel (Domäne io.bromure.agentic-coding) sind remoteAccess.enabled, remoteAccess.port, remoteAccess.bindAddress, remoteAccess.passwordAuth, remoteAccess.pubkeyAuth, fatclient.tunnel.<host-UUID> und cloudflareTunnel.consented. Zu den diagnostischen Umgebungsvariablen gehören BROMURE_OVERLAY_KEY (Remote-Menü-Tastenkürzel), BROMURE_FATCLIENT_LOG (ausführliches Rich-Client-Logging) und BROMURE_FATCLIENT_UTUN (erzwingt die Aktivierung des systemweiten Tunnel-Opt-ins — der Symbolleisten-Schalter ist der Produktpfad). Die vollständige CLI-Referenz, einschließlich der versteckten __forward-, __forward-socks-, __dial- und __attach-window-Verkabelung, findet sich in Automatisierung & die CLI.