Accès à distance et clients
Une machine (un espace de travail, dans l'éditeur de réglages) vit sur un seul Mac, mais la personne qui veut la piloter n'est pas toujours assise devant ce Mac. Bromure Agentic Coding peut être atteinte à distance, et chaque chemin distant emprunte une unique porte d'entrée SSH, optionnelle et désactivée par défaut. Activez-la et vous obtenez trois façons d'entrer : une personne peut se connecter en ssh depuis n'importe quel terminal et atterrir dans un menu ; vous pouvez gérer la porte d'entrée elle-même depuis la ligne de commande ; et un client riche — un autre Mac exécutant l'application, ou Bromure Remote sur iPhone, iPad ou Apple Vision Pro — peut se connecter et refléter l'instance entière — ses sessions, ses salles et son Standard, ses machines, ses terminaux et ses tableaux — dans une fenêtre en direct.
Le client riche atteint un serveur de deux façons. Sur le même réseau, vous l'ajoutez directement par adresse. De n'importe où ailleurs, vous vous connectez à un compte bromure.io et choisissez le serveur dans un annuaire : les deux appareils sont mis en relation par bromure.io puis communiquent en pair-à-pair, sans redirection de port, sans VPN et sans adresse à retenir — et une fois connecté, vos propres appareils s'autorisent mutuellement, de sorte que la connexion est sans mot de passe, sans configuration manuelle de clé.
Ce chapitre couvre l'activation de l'accès à distance sur l'hôte, chacun des points d'entrée, la façon dont le client riche reflète un hôte distant (par adresse et via bromure.io), la modification des Préférences d'un hôte distant, les clients iPhone, iPad et Vision Pro, l'accès aux services au sein des VM distantes, l'exposition d'un serveur de développement sur internet, et le modèle de sécurité qui garde tout cela sûr. L'inscription à l'échelle du parc et la télémétrie cloud constituent un système entièrement différent — voir Enterprise. La référence complète des commandes se trouve dans CLI, API et MCP.
Les trois façons d'entrer
Tout ce qui suit dépend de l'activation de la porte d'entrée SSH (elle est désactivée par défaut). Une fois en fonctionnement, le même serveur dessert les trois publics :
| Façon d'entrer | Qui l'utilise | Ce que vous obtenez |
|---|---|---|
| SSH simple | Une personne à n'importe quel terminal (ssh -p 2222 you@mac) | Le menu distant — une interface TUI de style curses. Un shell brut n'est jamais accessible. |
La CLI bromure-cli remote | Vous, sur l'hôte lui-même | Gérer la porte d'entrée : activer/désactiver, clés, statut. Voir Activer l'accès à distance sur l'hôte. |
| Le client riche | Un autre Mac exécutant l'application, ou Bromure Remote sur iOS / iPadOS / visionOS | Un miroir en direct de l'instance distante, avec des modifications bidirectionnelles — atteint par adresse sur un LAN ou via un compte bromure.io depuis n'importe où. |
Le serveur est embarqué — c'est la bibliothèque swift-nio-ssh d'Apple intégrée à l'application, et non le sshd propre à macOS. Cette distinction importe : parce que l'application exécute son propre serveur, elle peut vérifier le mot de passe de votre compte macOS via OpenDirectory sans que vous ayez jamais à activer la Connexion à distance dans les Réglages Système et sans droits d'administrateur. Il n'écoute que pour l'utilisateur macOS exact qui exécute l'application, et il force chaque connexion interactive dans le menu distant. Les seules exceptions orientées machine sont quatre commandes autorisées que le client riche utilise (bromure-fatclient/1 control, forward <ip> <port>, forward-udp <ip> et browser-mcp <vm>) ; tout ce qu'un humain tape par ailleurs se comporte comme une connexion et bascule dans le menu.
Remarque : La fenêtre Accès à distance décrit le serveur comme « une instance du serveur SSH système appartenant à l'application ». Il s'agit plus précisément d'un serveur swift-nio-ssh embarqué, délibérément pas le
sshdde macOS — c'est exactement ce qui lui permet de fonctionner sans Connexion à distance ni droits d'administrateur.
Activer l'accès à distance sur l'hôte
L'accès à distance est désactivé jusqu'à ce que vous l'activiez, et il peut être géré de deux façons équivalentes : la fenêtre Accès à distance ou la CLI bromure-cli remote. Les deux écrivent au même endroit, si bien qu'une modification effectuée dans l'une est reflétée dans l'autre et s'applique en direct.
La fenêtre Accès à distance
Ouvrez Bromure Agentic Coding (le menu au nom de l'application) → Accès à distance…. Le titre de la fenêtre est Accès à distance. Un point vert ou gris indique sshd running ou sshd stopped ; lorsque le serveur est actif, une chaîne de connexion copiable de la forme ssh -p <port> <user>@<host> apparaît sous l'en-tête.
| Section | Champ | Rôle | Valeur par défaut |
|---|---|---|---|
| En-tête | Activer l'accès à distance via SSH | Démarre et arrête le serveur. | Désactivé |
| Écouteur | IP de liaison | Sur quelle interface écouter. 0.0.0.0 = toutes les interfaces ; 127.0.0.1 = ce Mac uniquement. | 0.0.0.0 |
| Écouteur | Port | Port TCP d'écoute ; doit être ≥ 1024 (un processus non root ne peut pas se lier aux ports privilégiés). | 2222 |
| Authentification | Mot de passe du compte macOS | Accepter le mot de passe de connexion macOS de l'utilisateur exécutant l'application (vérifié via OpenDirectory). | Activé |
| Authentification | Clé publique | Accepter les clés de la liste des clés autorisées ci-dessous. | Activé |
| Clé d'hôte du serveur | empreinte | L'empreinte de la clé d'hôte ed25519 propre au serveur, pour une vérification hors bande. Affiche (générée à la première activation) jusqu'à la première utilisation. | — |
| Clés publiques autorisées | liste | Clés publiques ssh-ed25519 / ecdsa inscrites. Ajoutez-en une en collant une ligne de clé ; supprimez avec l'icône corbeille. Affiche Aucune clé inscrite. lorsque vide. | vide |
Modifiez IP de liaison ou Port et appuyez sur Retour pour appliquer la modification en direct. La section Authentification indique Vérifié avec <user> — l'utilisateur exécutant bromure-ac. afin qu'il soit clair quel mot de passe déverrouille la porte.
Avertissement : Au moins une méthode d'authentification doit rester activée — vous ne pouvez pas désactiver à la fois l'authentification par mot de passe et par clé publique. Coller une clé non valide est rejeté avec Clé publique non valide. L'ajout ou la suppression d'une clé autorisée redémarre l'écouteur, ce qui interrompt toutes les connexions en cours.
La CLI bromure-cli remote
La CLI communique avec l'application en cours d'exécution via son socket de contrôle réservé au propriétaire, de sorte que l'application demeure la source unique de vérité. C'est le moyen le plus rapide d'activer l'accès sur un Mac sans écran que vous avez atteint via un shell existant.
| Commande | Ce qu'elle fait |
|---|---|
bromure-cli remote (ou remote status) | Affiche l'état activé/en cours d'exécution, la liaison et le port, les méthodes d'authentification, l'empreinte de la clé d'hôte, l'utilisateur de connexion, une chaîne de connexion prête à l'emploi et la liste numérotée des clés autorisées. |
bromure-cli remote enable [--port N] [--bind IP] [--password|--no-password] [--pubkey|--no-pubkey] | Démarre le serveur (en lançant automatiquement l'agent de l'application si nécessaire). Valeurs par défaut : port 2222, liaison 0.0.0.0, les deux méthodes d'authentification activées. |
bromure-cli remote disable | Arrête le serveur et persiste l'état désactivé. |
bromure-cli remote key add <path-or-key-text> | Inscrit une clé publique à partir d'un chemin de fichier ou d'une ligne de clé collée ; affiche son empreinte. |
bromure-cli remote key ls | Liste les clés autorisées avec un index à base 1, l'empreinte et le commentaire. |
bromure-cli remote key rm <index|fingerprint> | Supprime une clé par index ou par une sous-chaîne d'empreinte. |
remote enable refuse si vous passez à la fois --no-password et --no-pubkey, et il échoue tant qu'une image de base est absente ou en cours d'installation. Lorsque l'application n'est pas en cours d'exécution, status, disable et key ls affichent Aucun agent bromure-ac en cours d'exécution.
Remarque : Le serveur ne démarrera pas tant que l'image de base est absente ou toujours en cours d'installation — l'activation renvoie alors une erreur exploitable plutôt qu'une inaction silencieuse. C'est vrai à la fois au lancement et lorsque vous basculez le commutateur. Installez d'abord l'image de base ou terminez son installation.
Clés d'hôte, empreintes et confiance
À la première activation, le serveur génère une clé d'hôte ed25519. Son empreinte — affichée dans la ligne Clé d'hôte du serveur et par bromure-cli remote status, sous la forme 256 SHA256:… bromure-ac-remote (ED25519) — est ce qu'un client qui se connecte vérifie pour s'assurer qu'il a atteint le bon Mac. Donnez cette empreinte à quiconque se connecte (ou vérifiez-la vous-même dans la feuille de premier contact du client riche) afin qu'un intermédiaire malveillant ne puisse pas usurper l'identité de l'hôte. Voir confiance à la première utilisation pour la façon dont le client riche l'épingle.
Limitation de débit
Les tentatives de mot de passe sont limitées par IP source par un seau à jetons : cinq tentatives à pleine vitesse, puis un réapprovisionnement d'environ une tentative toutes les deux secondes, avec un délai imposé plafonné à huit secondes. Les tentatives sont retardées, jamais refusées, et personne n'est jamais verrouillé ; une IP bruyante ne peut pas ralentir une autre. L'authentification par clé publique n'est jamais limitée.
Se connecter en SSH simple
N'importe quel terminal peut atteindre l'hôte avec ssh -p 2222 <user>@<mac>. Au lieu d'un shell, la connexion atterrit dans le menu distant — une interface TUI de style curses (en interne bromure-ac __remote-menu) forcée sur chaque connexion humaine. Un shell brut n'est jamais accessible à travers lui.
Le menu est antérieur à la refonte centrée sur les sessions et s'organise autour des machines : une liste des Espaces de travail avec des glyphes d'état en direct (● en cours, ◌ en démarrage, ⏸ suspendu, ○ arrêté), plus des sections Modèles (les modèles installés et le catalogue sur l'appareil) et Trace (résumés, noms d'hôte, fuites). De là, vous pouvez :
- Créer un espace de travail avec un formulaire sur un seul écran, doté d'une porte Full settings… vers des formulaires de réglages par volet.
- Démarrer, suspendre, arrêter, redémarrer ou supprimer n'importe quel espace de travail.
- Modifier les réglages. Les secrets s'affichent comme
•••• (set); laisser un secret vide conserve la valeur stockée. - Gérer les worktrees — créer, fusionner, attacher un terminal ou abandonner.
- Générer des clés SSH, activer Fusion et le routage de modèles, et parcourir les résumés de traces.
- S'attacher à n'importe quel onglet tmux ou à un conteneur Docker en cours d'exécution.
Remarque : Les formulaires de réglages du menu ne peuvent pas modifier le tableau Modèles. Leur formulaire Modèles est en lecture seule : il liste les fournisseurs du serveur (clé d'API ou abonnement) et indique si l'espace de travail remplace les réglages globaux. Choisissez les fournisseurs et les modèles depuis un Mac, dans les Préférences ou dans les Préférences distantes d'un miroir.
Naviguez avec les touches fléchées, Entrée pour sélectionner, et q ou Échap pour revenir en arrière ; Quitter (déconnexion) met fin à la session. Sélectionner S'attacher confie le terminal au tmux de l'invité ; Ctrl-b d détache et revient au menu. Pendant que vous êtes attaché, un raccourci clavier de superposition (par défaut Ctrl-]) fait apparaître un contrôleur côté hôte — changer d'onglet, ouvrir un nouvel onglet, gérer les worktrees, activer Fusion ou le routage, modifier les réglages, redémarrer, suspendre ou se déconnecter — sans que la frappe n'atteigne jamais l'invité. S'attacher à un conteneur demande le shell (Entrée = sh).
Remarque : Le menu a besoin d'un vrai terminal. Se connecter sans TTY affiche un conseil pour se reconnecter avec
ssh -t. Le démarrage d'un espace de travail à froid attend jusqu'à environ 20 secondes la session tmux de l'invité avant de s'attacher.
Le raccourci de superposition est configurable sur le Mac hôte (la machine à laquelle on se connecte) via le fichier ~/Library/Application Support/BromureAC/remote/overlay-key — les formes acceptées sont C-], ^], 0x1d ou 29 — ou la variable d'environnement BROMURE_OVERLAY_KEY.
Refléter un hôte distant avec le client riche
Le client riche transforme la copie de Bromure Agentic Coding de ce Mac — ou Bromure Remote sur iPhone, iPad ou Apple Vision Pro — en miroir en direct d'une instance distante. Sur un Mac, vous obtenez une fenêtre complète intitulée Remote — <name>, qui ressemble et fonctionne comme la fenêtre principale locale : l'accueil des sessions, les salles et le Standard, les machines, les tableaux des tâches et des automatisations. Tout ce que vous faites s'exécute sur l'hôte distant et vous revient en écho.
Connexion
Ouvrez Espaces de travail › Se connecter à un Bromure distant… (⇧⌘K). La fenêtre résume le choix : « Mettez en miroir un autre Mac exécutant Bromure — sa grille, ses espaces de travail, ses onglets et ses automatisations. Connectez-vous pour atteindre vos serveurs de n’importe où, ou ajoutez-en un directement par son adresse sur votre réseau local. » Les deux chemins aboutissent à la même fenêtre miroir ; ils ne diffèrent que par la façon dont les deux appareils se trouvent et s'autorisent.
Remarque : La poignée de main SSH s'adapte au lien : les budgets de connexion et de poignée de main évoluent avec le temps d'aller-retour mesuré, si bien qu'un lien à forte latence (Wi-Fi d'hôtel, cellulaire, un continent de distance) se connecte lentement au lieu d'expirer.
Par adresse (même réseau)
Utilisez ceci sur un LAN où vous connaissez l'adresse du Mac et n'avez pas besoin d'un compte bromure.io.
- Sur le Mac distant, activez l'accès à distance (la fenêtre Accès à distance ou
bromure-cli remote enable). - Sur ce Mac, cliquez sur +, saisissez un Nom (par exemple,
rack mini), une Adresse, un Port (par défaut2222) et un Utilisateur distant, puis cliquez sur Se connecter. Les lignes enregistrées affichentuser@address:portet l'heure de la dernière connexion. - Au premier contact, une feuille affiche l'empreinte de la clé d'hôte SSH de l'hôte distant. Vérifiez-la par rapport à la fenêtre Accès à distance de l'hôte distant, puis cliquez sur Faire confiance et continuer. L'épingle est mémorisée pour ce point de terminaison ; les connexions ultérieures sont silencieuses sauf si la clé change, auquel cas le bouton devient rouge et affiche Faire confiance à la nouvelle clé et continuer — un possible intermédiaire malveillant.
- Le client tente l'authentification par clé publique avec la clé dédiée de cet appareil. Si celle-ci n'est pas encore autorisée, il se rabat sur le mot de passe de connexion macOS de l'utilisateur distant (bouton : Se connecter) ; une connexion par mot de passe réussie inscrit la clé de cet appareil sur l'hôte distant via le tunnel, de sorte que chaque connexion ultérieure se fait sans mot de passe. Pour préautoriser sans jamais taper de mot de passe, cliquez sur Afficher la clé de ce Mac et exécutez
bromure-cli remote key add '<this Mac's key>'sur l'hôte distant.
Après la première connexion, double-cliquez sur un serveur enregistré pour des reconnexions en un clic ; le menu contextuel de chaque ligne propose Se connecter, Modifier… et Supprimer. Bromure Remote sur iPhone et iPad propose le même parcours sous Ajouter un serveur par adresse.
Via un compte bromure.io (depuis n'importe où)
Se connecter à bromure.io permet à un client d'atteindre vos serveurs à travers les réseaux — d'un Wi-Fi de café à un Mac à la maison — sans redirection de port, sans VPN et sans adresse à retenir. bromure.io se contente de mettre en relation les deux appareils et de relayer des octets lorsqu'un chemin direct est impossible ; la session SSH elle-même reste chiffrée de bout en bout entre eux.
- Connectez-vous. Sur un Mac, choisissez Se connecter à bromure.io… dans le menu portant le nom de l'application et connectez-vous via votre navigateur (ou dépliez la section du code et saisissez un code d'inscription de six mots ainsi qu'un Nom de l’appareil). Dans Bromure Remote, connectez-vous depuis son écran d'accueil. Chaque appareil que vous inscrivez partage le même compte.
- Sur le Mac distant, activez l'Accès à distance. Un serveur n'apparaît dans l'annuaire que tant que sa porte d'entrée est active et qu'il envoie des battements de cœur à bromure.io.
- Sur le client, ouvrez Se connecter à un Bromure distant…. Vos serveurs sont listés sous Mes serveurs · bromure.io avec un point en ligne en direct et l'heure de dernière apparition. Double-cliquez sur l'un d'eux (ou sélectionnez-le et cliquez sur Se connecter). Le statut indique « Connecting to
<name>via bromure.io… » pendant qu'un chemin pair-à-pair est établi — direct, via mappage de port du routeur ou relayé — puis le miroir s'ouvre.
Dans ce chemin, il n'y a aucune adresse à taper, aucune feuille de clé d'hôte et aucun mot de passe : vos propres appareils se font mutuellement confiance via votre compte (ci-dessous), et la clé d'hôte est épinglée automatiquement.
Sans mot de passe entre vos propres appareils
Une fois connecté, chaque appareil que vous inscrivez partage son identité SSH via votre compte, de sorte que n'importe lequel de vos appareils atteint n'importe lequel de vos serveurs sans mot de passe et sans bromure-cli remote key add manuel :
- Chaque appareil publie sa clé publique SSH sur bromure.io au démarrage. Chacun de vos serveurs (Accès à distance activé) récupère les clés de vos appareils et les installe dans son
authorized_keysen quelques secondes, de sorte qu'un appareil que vous venez d'inscrire est autorisé presque immédiatement. - Un serveur publie aussi le compte de connexion macOS sous lequel il s'exécute, de sorte que le client le contacte automatiquement en tant qu'utilisateur correct (le champ même que le chemin par adresse vous demande de remplir).
- Les clés sont limitées à vos propres appareils — jamais à ceux d'un autre utilisateur, même au sein de la même organisation.
- Se déconnecter sur un appareil le met à la retraite : sa clé est retirée de vos serveurs et il disparaît de l'annuaire, de sorte que se reconnecter ne laisse jamais de doublon obsolète. Un appareil inutilisé pendant 90 jours cesse aussi d'être autorisé jusqu'à sa prochaine reprise de contact. Et depuis la console web de bromure.io, vous pouvez déconnecter n'importe lequel de vos appareils à la demande.
Remarque : Le client riche génère sa propre paire de clés ed25519 dédiée (commentaire
bromure-ac-fatclient) la première fois que vous l'utilisez — c'est la clé publiée sur votre compte. Pour une connexion par adresse, l'épingle de clé d'hôte appartient au point de terminaison (address:port), et non à l'utilisateur, si bien que modifier l'adresse ou le port d'un serveur enregistré abandonne l'épingle et redéclenche la feuille d'empreinte ; une connexion bromure.io épingle plutôt la clé du pair via le compte.
La fenêtre miroir
La fenêtre miroir s'ouvre automatiquement après une connexion réussie. C'est l'accueil des sessions du Mac distant : la même barre latérale (sessions, salles, le Standard, tâches, automatisations, Machines virtuelles avec les éventuels clusters Kubernetes et registres), la même scène et le même en-tête. Démarrez une session avec Nouvelle session (⌘N), discutez avec elle, répondez à ses questions, ouvrez une salle avec sa grille de conversations, ou parlez au Standard de l'hôte distant — tout se passe sur l'hôte distant, et la palette ⌘K fonctionne aussi.
L'en-tête a les mêmes commandes que la fenêtre locale : la pastille Linux pour le terminal d'une session, le menu de la machine portant le nom de la machine (Réglages…, Détails de la machine, Copier l’adresse IP, Inspecter la trace, Détacher dans sa propre fenêtre, Redémarrer), l'éclair Fusion, Afficher ou masquer le navigateur agentique (⌃⌘B) et Afficher ou masquer le panneau Fichiers (⌃⌘E). Une fenêtre miroir ajoute une commande qui lui est propre, le commutateur de tunnel réseau (voir Le tunnel réseau à l'échelle du système). Les terminaux s'affichent avec l'apparence propre à la machine.
Quelques éléments se comportent de façon particulière via le miroir :
- Réglages… ouvre le même éditeur de réglages qu'en local, adossé à une lecture aux secrets masqués et à un enregistrement qui préserve les secrets (voir Les secrets restent sur l'hôte). Son volet Modèles modifie le remplacement, propre à cette machine distante, des réglages de modèles du Mac distant. Generate new SSH key fonctionne et vous montre la nouvelle clé publique.
- Le panneau Fichiers (⌃⌘E) parcourt les fichiers de la machine via le tunnel. Il remplace la fenêtre de navigation de fichiers séparée des versions précédentes. Voir Machines.
- Redémarrer fonctionne comme dans la propre fenêtre du serveur : un redémarrage propre après Redémarrer « … » ?, ou un redémarrage forcé si vous maintenez ⌥ en le choisissant (voir Redémarrer une machine) ; l'ordre est ensuite envoyé au serveur.
- Détacher dans sa propre fenêtre ouvre une fenêtre de terminal supplémentaire en direct qui se ferme d'elle-même si la machine s'arrête.
Si l'hôte distant exécute un ancien Bromure sans l'API des sessions, le miroir revient à l'ancienne disposition centrée sur les machines.
Les menus agissent sur le miroir au premier plan
Lorsqu'une fenêtre miroir est la fenêtre active, ces éléments de menu agissent sur le Mac distant plutôt que sur celui-ci :
| Élément | Effet sur le Mac reflété |
|---|---|
| Nouvelle session… (⌘N) | Ouvre l'écran de nouvelle session du miroir. |
| Espaces de travail › Nouvelle salle… | Crée la salle sur l'hôte distant. |
| Salle suivante (⌃⌘R) | Parcourt les salles de l'hôte distant (les salles archivées sont ignorées). |
| Espaces de travail › Infrastructure › Créer un cluster Kubernetes… / Créer un registre… | Ouvre la feuille de création dans le miroir, de sorte que le cluster ou le registre est construit sur l'hôte distant. |
| Préférences… (⌘,) | Ouvre les Préférences en ciblant l'hôte distant (ci-dessous). |
Préférences distantes
Appuyez sur ⌘, avec une fenêtre miroir au premier plan et les Préférences s'ouvrent sur les valeurs par défaut de ce Mac-là, avec le titre Préférences — <host>. Dès qu'une fenêtre miroir est ouverte, un sélecteur Réglages pour : en haut des Préférences bascule entre Ce Mac et chaque hôte distant connecté ; chaque cible a son propre éditeur, si bien que les brouillons ne passent jamais d'une machine à l'autre. Pendant le chargement des réglages distants, la fenêtre indique « Chargement des préférences depuis <host>… » ; en cas d'échec, elle affiche Impossible de charger les préférences du serveur distant avec Réessayer.
Tout fait l'aller-retour par l'hôte distant : les secrets arrivent masqués et sont conservés sauf si vous en saisissez un nouveau. Le volet Modèles modifie les réglages de modèles globaux de l'hôte distant — les clés d'API sont affichées expurgées — et les modifications sont enregistrées quand vous cliquez sur Enregistrer, contrairement aux Préférences locales, où le tableau Modèles s'enregistre au fil de vos modifications (voir Modèles et fournisseurs). Les réglages propres à l'application sur ce Mac — le volet Automatisation et les sections Sous-réseau de l’espace de travail et Transport distant de Ressources — ne sont pas affichés pour un hôte distant, ni dans l'éditeur d'une machine distante.
Se connecter aux fournisseurs à distance
Les connexions par abonnement fonctionnent de bout en bout depuis le client. Sign in with fournisseur exécute la capture sur l'hôte distant, mais la page de connexion du fournisseur (ou l'URL du code d'appareil) s'ouvre dans votre navigateur ; pour un fournisseur qui n'affiche jamais d'URL, le client montre le terminal de la VM de connexion afin que vous puissiez terminer de façon interactive. Une connexion lancée depuis les réglages d'une machine distante pose la question de portée — Tous les espaces de travail ou Cet espace de travail uniquement — sur votre écran ; si personne ne répond, elle reste sur Cet espace de travail uniquement. Une connexion lancée depuis les Préférences distantes est toujours partagée par toutes les machines de l'hôte distant. Se déconnecter… fonctionne aussi à distance.
Branches et revue à distance
Nouvelle branche…, Examiner les modifications et Fusionner dans branche fonctionnent depuis le miroir pour une session disposant de son propre dossier, exactement comme sur l'écran de l'hôte distant (voir Branches et revue). Dans Bromure Remote, le menu d'une session propose Nouveau worktree….
Solliciter une session sur le Mac reflété
Pendant que ce Mac reflète un hôte distant, une session d'ici peut solliciter une session sur l'hôte distant par son @surnom : les sessions distantes apparaissent dans la liste @ du compositeur et auprès des agents avec le nom de leur hôte, et les fichiers joints à une demande transitent par le tunnel jusqu'à la boîte de réception du pair. Les réponses, les réorientations et la clôture repassent toutes par le même chemin. Le sens inverse — les agents de l'hôte distant sollicitant une session sur ce Mac — n'est pas disponible, car l'hôte distant n'a aucun canal de retour vers le client.
Ce qui est reflété
Le miroir affiche chaque machine avec son état d'exécution en direct, les sessions et les salles, les onglets et les branches, la Grille, les automatisations, le tableau des tâches de codage, les détails et les signes vitaux des machines, le tableau de bord Docker, les clusters Kubernetes et les registres, les terminaux interactifs en direct, ainsi que les événements de sécurité de l'hôte distant, qui apparaissent dans la Chronologie de sécurité à côté de ceux de ce Mac — son filtre de machines propose Toutes les machines, Ce Mac et chaque hôte reflété. Les modèles sur l'appareil et leurs téléchargements s'exécutent sur l'hôte distant, jamais sur le client. Les modifications convergent sur chaque client connecté : démarrage, arrêt et redémarrage des machines, opérations sur les sessions et les salles, opérations sur les onglets, modifications de la Grille (disposition entière, le dernier qui écrit l'emporte), modifications d'automatisations, le commutateur Fusion, les actions Docker, les enregistrements de réglages et les transferts de fichiers.
Le miroir suit l'hôte distant grâce à un canal push (GET /state/subscribe) sur une passerelle tunnelisée en SSH vers le socket de contrôle de l'hôte distant ; tant que le canal push est actif, le client ne relit l'état complet que toutes les 5 secondes en guise de pulsation, et se rabat sur une lecture toutes les 0,75 seconde si le canal tombe. Les appels de contrôle courts sont multiplexés sur une seule connexion SSH par hôte ; les attaches de terminal interactives utilisent leurs propres connexions SSH dédiées, car un canal multiplexé mettrait en tampon la sortie immédiate dont un terminal a besoin. Sur une connexion bromure.io, la même passerelle et les mêmes flux de terminal empruntent le chemin pair-à-pair, et le miroir se comporte de façon identique.
Les conversations ménagent aussi le lien. La première fois que vous ouvrez la conversation d'une session distante, elle ne charge que les ~1,5 Mo les plus récents de l'échange ; remonter jusqu'à Charger la conversation précédente récupère les parties plus anciennes. Une conversation que vous rouvrez — en revenant sur une session, ou une salle affichée à nouveau — repart de l'historique déjà téléchargé et ne récupère que les nouveaux messages.
Quelques opérations ne sont pas disponibles depuis le client riche :
- Les modifications de disposition de la Grille nécessitent une fenêtre graphique ouverte sur l'hôte distant. Un hôte distant entièrement sans interface (application en cours d'exécution, aucune fenêtre principale) reflète tout le reste mais ne peut pas accepter de changement de disposition.
- L'importation d'une clé SSH depuis un fichier est masquée dans les éditeurs de réglages distants.
Bromure Remote sur iPhone, iPad et Apple Vision Pro
Bromure Remote est un miroir uniquement client, atteint exactement de la même façon (connectez-vous et choisissez un serveur, ou ajoutez-en un par adresse). Il est centré sur les sessions, comme sur le Mac :
- iPhone — une liste Sessions avec le nombre de sessions qui ont besoin de vous, un écran de nouvelle session (« Que puis-je faire pour vous ? ») et un écran par session : sa conversation, un bouton Linux pour son terminal, et un menu avec Reprendre, Renommer…, Nouveau worktree…, les réglages de la machine, Archiver (ou Terminer et archiver), Terminer la session et Supprimer la session. Une salle s'ouvre avec un onglet par session, entre lesquels on glisse, avec le Standard de la salle.
- iPad — une barre latérale permanente avec les sessions, les salles et les machines ; une salle affiche sa grille de conversations comme sur le Mac.
Sur les deux, la liste suit l'ordre de la barre latérale du Mac : Nouvelle session d'abord, Tâches de code et Automatisations juste en dessous, puis les sessions. Les machines sont réparties entre Machines virtuelles (avec la Grille) et Native Machines — les Mac Sidecar que le Mac distant a rattachés, affichés seulement s'il y en a un ; une machine native propose Nouveau terminal. Sur iPad, Nouvelle session reste visible au-dessus de la section Sessions repliable.
Quand un Mac distant refuse de démarrer une session (sur un Mac Sidecar qui n'a pas cet agent, par exemple), le client affiche la raison donnée par le Mac distant au lieu de ne rien faire.
- Apple Vision Pro — la disposition de l'iPad, plus des fenêtres spatiales : épinglez n'importe quel terminal comme sa propre fenêtre n'importe où dans la pièce, ouvrez la Grille comme fenêtre de scène dédiée, ou transformez toute la grille en fenêtres flottantes avec Pin All as Windows.
Dans une salle, un compositeur unique en bas propose un sélecteur À — le Standard de la salle ou n'importe laquelle de ses sessions — et un menu de pièces jointes (Photothèque, Choisir des fichiers, Coller l’image) ; les pièces jointes sont téléversées dans la machine de la cible à l'envoi. Sur iPhone et iPad, une session qui a besoin de votre intervention peut vous joindre par une notification push pendant que l'app est en arrière-plan ; la toucher ouvre cette session. Le tableau Modèles n'est pas disponible sur ces appareils ; changez de modèle depuis un Mac.
Invites de décision en attente
Certaines actions soulèvent une décision sur l'hôte distant — une mise à niveau du stockage Home, une réinitialisation de dérive d'image de base, l'effacement d'une VM compromise, une question d'action de fermeture, la question de portée d'une connexion à un fournisseur, ou une alerte d'exfiltration d'identifiant (le détecteur de compromission mettant en pause une VM qui a tenté de divulguer un identifiant). Elles apparaissent comme des alertes dans votre fenêtre miroir, et votre réponse repart via le tunnel. Si une invite reste sans réponse, elle expire vers le choix sûr. Une invite en attente ne bloque jamais le plan de contrôle de l'hôte distant : le reste du miroir reste actif tant que l'alerte est affichée. Les invites de consentement qu'un agent en cours d'exécution peut déclencher (utilisation d'identifiant, transmission de chaîne d'approvisionnement, écritures de garde-fous, injection de prompt) sont gérées par un chemin séparé et infalsifiable par l'invité, documenté dans Gestion du consentement à distance.
Les secrets restent sur l'hôte
Les secrets ne traversent jamais le lien. Lorsque le client riche lit les réglages d'une machine distante ou les Préférences de l'hôte distant, chaque champ de secret arrive masqué (les clés d'API des fournisseurs de modèles arrivent sous forme de substitut expurgé). À l'enregistrement, un champ vide ou expurgé signifie « conserver la valeur stockée » et un champ saisi la remplace. Les clés d'API, les jetons, les connexions par abonnement et les secrets d'environnement MCP restent sur le Mac distant. Le client riche s'authentifie uniquement par clé SSH une fois apparié — il n'y a aucune invite de mot de passe pendant la mise en miroir.
Accéder aux services des VM de l'hôte distant
Le serveur de développement d'un espace de travail distant réside à une adresse privée comme http://192.168.64.5:3000 sur le réseau de l'hôte distant. Bromure vous en donne deux niveaux d'accès — l'un automatique et limité au navigateur, l'autre optionnel et à l'échelle du système.
Le volet de navigateur (automatique, limité par PAC)
Le volet de navigateur repliable de la fenêtre miroir (le bouton globe de l'en-tête, ou ⌃⌘B) est une VM Chromium locale dont le trafic de pages vers le sous-réseau de l'espace de travail distant est tunnelisé via SSH. Un script PAC (proxy auto-config) généré ne route que le sous-réseau distant à travers un redirecteur SOCKS par hôte et tout le reste en DIRECT, et les destinations sont résolues du côté distant — de sorte que naviguer vers le http://192.168.64.x:port littéral d'un serveur de développement distant fonctionne tout simplement. Le propre flux MCP de contrôle du navigateur de l'agent distant est relayé vers ce volet, de sorte que l'agent de codage distant pilote le navigateur que vous regardez.
Sélectionnez une session ou une machine sur une machine distante en cours d'exécution et appuyez sur ⌃⌘B. Le volet ne fait rien tant que la première mise à jour d'état n'a pas livré le sous-réseau de l'hôte distant et que le redirecteur SOCKS n'est pas actif (une ligne de journal note « tunnel not ready » jusque-là). Sa VM de navigateur locale est épinglée au sous-réseau 192.168.127.0/24 (passerelle 192.168.127.1) afin qu'elle ne puisse jamais entrer en collision avec un sous-réseau d'espace de travail. Les profils de navigateur persistants vivent sur ce Mac, indexés par l'ID de la machine distante.
Remarque : Le volet de navigateur nécessite que ce Mac soit un Apple Silicon avec l'image de base du navigateur installée localement. Le redirecteur SOCKS se lie à
0.0.0.0(afin que la VM de navigateur puisse l'atteindre à la passerelle vmnet) mais n'accepte les connexions que depuis la boucle locale et le sous-réseau de navigateur épinglé192.168.127.x— ce n'est jamais un relais ouvert.
Redirection SOCKS et redirections de port fixes
Chaque hôte distant connecté obtient automatiquement un redirecteur SOCKS5 local sur un port éphémère lié à 0.0.0.0 (filtré par pair vers la boucle locale et le sous-réseau de navigateur 192.168.127.x). Chaque CONNECT ouvre un canal SSH forward <ip> <port> que l'hôte distant relie — via le relais de boucle locale toujours actif de l'invité sur vsock 5010 — au propre 127.0.0.1:<port> de cet invité. Ainsi, depuis ce Mac, curl --socks5 127.0.0.1:<port> http://192.168.64.5:3000 atteint l'invité distant octet pour octet.
Pour les redirections fixes, il existe une tuyauterie CLI cachée : bromure-cli __forward <hostID> <localPort> <remoteIP> <remotePort> pour une redirection de style ssh -L, et bromure-cli __forward-socks <hostID> <localPort> pour un proxy SOCKS autonome. Les deux se lient à la boucle locale par défaut et acceptent --bind-all.
Avertissement : L'hôte distant refuse toute redirection dont la cible n'est pas un invité sur son propre sous-réseau vmnet. Vous ne pouvez pas utiliser une redirection pour atteindre le Mac distant lui-même, sa passerelle ou internet — seulement les VM d'espace de travail.
Le tunnel réseau à l'échelle du système
Lorsque vous voulez que n'importe quelle application locale — pas seulement le volet de navigateur — atteigne les VM distantes à leurs adresses littérales, activez le tunnel par hôte avec le commutateur réseau de la fenêtre miroir (l'icône de points reliés, la première des commandes de l'en-tête). Son info-bulle indique Activer l'accès réseau direct aux VM du système distant (192.168.x.x depuis n'importe quelle application locale).
Un assistant privilégié à usage unique — un démon launchd installé via SMAppService, sans sudo — crée une interface utun et y route le sous-réseau distant, puis rend le descripteur de fichier de l'interface à l'application. Une pile TCP/UDP en espace utilisateur dans l'application termine chaque flux et le raccorde sur les mêmes canaux de redirection SSH, en utilisant votre identité SSH. Il n'y a pas de règles pf ni de transfert du noyau.
La première fois que vous l'activez, une alerte intitulée Autoriser l'assistant réseau de Bromure explique l'approbation macOS à usage unique :
- Cliquez sur le commutateur de la barre d'outils.
- Dans l'alerte, ouvrez Réglages Système → Général → Ouverture et autorisez Bromure Agentic Coding (macOS demande une fois les identifiants d'administrateur).
- L'application sonde l'approbation (toutes les 2 secondes, jusqu'à 5 minutes) et se connecte automatiquement dès qu'elle est accordée. Pendant qu'elle attend, l'info-bulle du commutateur indique En attente d'approbation dans Réglages Système › Ouverture….
Si l'hôte distant n'a pas encore signalé le sous-réseau de ses machines (aucune machine n'a démarré), l'info-bulle indique En attente du sous-réseau des espaces de travail de l'instance distante (démarrez un espace de travail) — cliquez pour annuler. Lorsque le tunnel est actif, l'info-bulle indique L'accès réseau direct aux VM du système distant est ACTIVÉ — cliquez pour le désactiver ; en cas d'échec, Échec du tunnel réseau — cliquez pour réessayer. Le désactiver arrête le tunnel, et lorsque le dernier hôte le désactive, le démon est désenregistré. Le réglage est mémorisé par hôte.
Remarque : Le tunnel a besoin d'un compte administrateur pour l'approbation à usage unique. Sans lui, Bromure continue de fonctionner via le chemin SOCKS intégré — l'assistant n'est nécessaire que pour atteindre les VM distantes depuis d'autres applications. Si macOS refuse purement et simplement l'enregistrement, une alerte intitulée Impossible d'installer l'assistant réseau l'explique, et le commutateur réessaie au clic suivant. Un
pingvers un invité distant est répondu localement par le tunnel : il confirme que le routage est actif, pas que l'invité est vivant.
Plusieurs hôtes distants (sous-réseaux par installation + routage de parc)
Vous pouvez refléter plusieurs hôtes distants à la fois ; chacun ouvre sa propre fenêtre, son redirecteur SOCKS et (facultativement) son tunnel. Le piège dans lequel cela tombait auparavant : chaque installation utilisait historiquement le même réseau 192.168.64.0/24 pour ses VM d'espace de travail, de sorte que deux hôtes distants reflétés annonçaient des sous-réseaux identiques et le VPN à l'échelle du système ne pouvait pas les distinguer.
Les sous-réseaux par installation corrigent cela à la source. Chaque Mac choisit désormais un /24 aléatoire au sein de 172.16.0.0/12 — en évitant la plage 172.17–172.20 de Docker et tout /24 sur lequel l'hôte se trouve déjà — et l'utilise pour toutes ses VM d'espace de travail, de sorte que deux installations indépendantes n'entrent presque jamais en collision (172.16/12 est aussi la plage privée la moins susceptible d'entrer en conflit avec un LAN ou un VPN d'entreprise). Les nouvelles installations démarrent sur un tel sous-réseau ; vous pouvez le consulter, le modifier ou le re-randomiser à tout moment sous Préférences › Ressources › Sous-réseau de l’espace de travail. L'adressage des invités est du pur DHCP depuis le propre commutateur de Bromure, donc c'est entièrement côté hôte (aucune reconstruction d'image), et l'hôte distant annonce le sous-réseau qu'il a choisi dans son état afin que le client riche et le tunnel le suivent automatiquement.
Pour le cas rare où deux hôtes distants partagent encore un sous-réseau, le premier est routé littéralement et le second reçoit un alias dans l'espace CGNAT 100.64.<n>.0/24, avec un remappage 1:1 préservant l'octet d'hôte afin que les deux puissent être atteints en même temps.
Avertissement : Le routage par alias multi-hôtes est implémenté et testé unitairement, mais le câblage d'exécution qui assemble un PAC conscient des alias et un remappage browser-MCP entre les hôtes est encore en attente. Un seul hôte distant est la configuration entièrement prise en charge aujourd'hui. Une limitation connue de l'aliasing, une fois câblé, est qu'une page de développement émettant un lien littéral absolu
http://192.168.64.xau sein d'un hôte distant avec alias peut être mal routée ; les hôtes distants littéraux (sans alias) ne sont pas affectés.
Exposer un serveur de développement sur internet
Indépendamment de tout ce qui précède, un service HTTP individuel s'exécutant à l'intérieur d'un espace de travail peut être exposé à l'internet public avec un tunnel rapide Cloudflare par port. Ouvrez les détails d'une machine en cours d'exécution (le menu de la machine › Détails de la machine), trouvez le service sous la carte des ports et cliquez sur le globe (info-bulle : Exposer sur Internet (tunnel rapide Cloudflare)). Bromure exécute un processus cloudflared pour cette origine et vous donne une URL aléatoire https://<name>.trycloudflare.com — aucun compte Cloudflare nécessaire. Un tunnel et une URL par service ; exposer ou retirer l'exposition de l'un ne perturbe jamais les autres.
La couleur du globe suit l'état : gris = désactivé, orange = installation ou démarrage, vert = en cours d'exécution, rouge = échec. Une ligne d'état sous le port affiche la progression (Téléchargement et vérification de cloudflared (~18 MB, une seule fois)…, puis Démarrage du tunnel…) ou le nom d'hôte public cliquable avec un bouton de copie.
La première fois que vous exposez quoi que ce soit, une boîte de dialogue de consentement à usage unique intitulée Exposer des services sur Internet via Cloudflare Tunnel ? couvre le téléchargement, la vérification, les processus du tunnel (consignés dans la Chronologie de sécurité), les conditions d'utilisation de Cloudflare et le fait que quiconque possède l'URL aléatoire peut atteindre le service. Cliquez à nouveau sur le globe pour arrêter.
Le binaire cloudflared est une version épinglée, vérifiée deux fois avant même de s'exécuter : le SHA-256 de l'archive téléchargée est comparé à un hachage intégré à l'application, et une vérification de signature de code Developer ID confirme l'ID d'équipe de Cloudflare. Il s'exécute avec --no-autoupdate.
Avertissement : Les URL de tunnel rapide sont publiques pour quiconque les possède, et le nom d'hôte change chaque fois que le tunnel redémarre (un redémarrage, un retrait/rétablissement d'exposition ou un plantage). Seules les origines HTTP(S) obtiennent un globe — SSH et les ports raw-TCP ou de base de données bien connus (22, 1433, 3306, 3389, 5432, 5672, 5900, 6379, 9092, 11211, 27017) et UDP n'en obtiennent jamais, parce qu'un navigateur ne pourrait pas les atteindre à travers la périphérie de Cloudflare. Tous les tunnels d'un espace de travail sont démantelés lorsque sa VM se suspend ou s'arrête. Une non-concordance de hachage au téléchargement refuse l'installation jusqu'à ce que l'épingle soit mise à jour dans une version de l'application.
Redirection des rappels OAuth
Une CLI s'exécutant à l'intérieur d'une VM d'espace de travail — gh, gcloud, une connexion par abonnement — complète souvent un flux OAuth en ouvrant un navigateur sur votre Mac hôte et en attendant une redirection vers http://127.0.0.1:<port>/callback. Bromure fait le pont automatiquement : l'hôte lie le port de boucle locale à la fois en IPv4 et en IPv6, et à la première requête réelle le raccorde via vsock 5010 au propre 127.0.0.1:<port> de l'invité. Le redirect_uri n'est jamais réécrit, si bien que PKCE et la validation de la redirection réussissent toujours. Il n'y a rien à configurer — lancez la connexion à l'intérieur de l'espace de travail et la redirection est livrée dans l'invité.
Le redirecteur se démantèle après 300 secondes afin que le port de boucle locale ne soit jamais retenu indéfiniment. Si le port de l'hôte est déjà utilisé, le flux se poursuit nativement sans le pont, et les préconnexions de navigateur spéculatives (sockets qui s'ouvrent mais n'envoient jamais rien) sont ignorées afin qu'elles ne puissent pas bloquer un serveur de rappel à usage unique.
Modèle de sécurité
L'accès à distance est puissant, il vaut donc la peine d'être précis sur ses limites.
- Désactivé par défaut, une seule porte. Aucun chemin distant n'existe tant que vous n'avez pas activé le serveur SSH. Chaque chemin — menu humain, CLI, client riche, redirections de port, browser MCP — emprunte ce seul serveur et aucun autre.
- Chiffrement et transport. Tout le trafic est SSH. Le flux d'état et les appels de contrôle du client riche, les attaches de terminal, les transferts de fichiers, les redirections de port et le relais browser-MCP voyagent tous à l'intérieur de la connexion SSH. Parce que swift-nio-ssh n'a pas d'échange de clés post-quantique, un client OpenSSH moderne affichera un avertissement « not using a post-quantum key exchange » ; c'est attendu et n'indique pas une attaque par rétrogradation.
- bromure.io est un intermédiaire de mise en relation, pas un homme du milieu. Dans le chemin par compte, bromure.io se contente d'introduire vos deux appareils et — lorsqu'aucun chemin pair-à-pair direct ne peut être établi — relaie des octets opaques via un relais TURN (sur TLS). Il ne termine jamais la session SSH : le tunnel chiffré s'exécute de bout en bout entre vos deux Mac. Les clés SSH ne sont partagées qu'entre les appareils de votre propre compte (jamais ceux d'un autre utilisateur), chaque serveur récupère lui-même les clés d'appareil de son propriétaire, et l'inscription / la déconnexion est la façon dont la confiance d'un appareil est accordée et révoquée. Un appareil déconnecté ou inactif depuis 90 jours cesse d'être autorisé.
- Qui peut se connecter. Seul l'utilisateur macOS exact qui a lancé l'application. L'authentification par mot de passe est vérifiée par rapport à OpenDirectory (pas de Connexion à distance, pas de modifications PAM, pas de droits d'administrateur), et l'authentification par clé publique n'accepte que les clés que vous avez inscrites. Les tentatives de mot de passe sont limitées en débit par IP source ; les clés ne le sont pas.
- Ce qu'une session peut faire. Une connexion humaine ne peut atteindre que le menu distant — jamais un shell — elle peut donc créer, configurer et piloter des espaces de travail, mais elle ne peut pas exécuter de commandes hôtes arbitraires. Les quatre verbes machine du client riche sont tout aussi étroits : un pont de socket de contrôle, une redirection vers un invité sur le sous-réseau vmnet et un relais browser-MCP. Les redirections vers l'hôte lui-même, la passerelle ou internet sont refusées.
- Les secrets ne quittent jamais l'hôte. Les lectures de réglages distants ont les secrets masqués (clés des fournisseurs de modèles expurgées) et les enregistrements préservent les secrets ; les clés d'API, les jetons, les connexions par abonnement et les secrets d'environnement MCP restent sur le Mac distant.
- Confiance à la première utilisation. Le client riche épingle la clé d'hôte de l'hôte distant par point de terminaison au premier contact et avertit bruyamment de tout changement ultérieur.
- Consentement infalsifiable par l'invité. Les invites de consentement MITM soulevées par un agent en cours d'exécution sont rendues du côté hôte de la pompe de terminal, où un invité compromis ne peut ni les voir ni les falsifier ; tout délai d'expiration ou détachement se résout en refus. Voir Gestion du consentement à distance.
Dépannage
| Symptôme | Cause probable | Que faire |
|---|---|---|
| L'activation renvoie une erreur | L'image de base est absente ou toujours en cours d'installation | Le serveur ne peut pas démarrer tant que l'image de base n'est pas présente. Terminez l'installation, puis activez à nouveau. |
ssh se connecte mais indique de se reconnecter avec ssh -t | Aucun TTY n'a été demandé | Le menu distant a besoin d'un terminal ; ajoutez -t (ou utilisez ssh -t -p 2222 <user>@<mac>). |
| OpenSSH affiche « not using a post-quantum key exchange » | swift-nio-ssh n'a pas d'échange de clés PQ | Attendu et sans danger — la connexion est toujours chiffrée. |
| Une connexion par adresse continue de demander un mot de passe | La clé de ce Mac n'est pas inscrite sur l'hôte distant | Laissez une connexion par mot de passe l'inscrire automatiquement, ou exécutez bromure-cli remote key add '<this Mac's key>' sur l'hôte distant (Afficher la clé de ce Mac la copie). |
| Une connexion bromure.io demande encore un mot de passe | Le registre de clés n'a pas encore autorisé cet appareil sur ce serveur | Le sans-mot-de-passe est automatique ici — vérifiez que vous êtes connecté à bromure.io sur les deux Mac, que le serveur a l'Accès à distance activé et que les deux exécutent une version à jour (le serveur publie son compte de connexion et récupère vos clés). Laissez quelques secondes après l'activation de l'Accès à distance. |
| Mes serveurs · bromure.io est vide | Non connecté, ou le serveur ne s'annonce pas | Connectez-vous (menu portant le nom de l'application → Se connecter à bromure.io…) ; sur l'hôte distant, activez l'Accès à distance pour qu'il envoie des battements de cœur et apparaisse. Une ligne grisée signifie qu'il a cessé d'envoyer des battements de cœur. |
| « Impossible d'établir une connexion … via bromure.io » | Aucun chemin réseau direct ou relayé entre les deux Mac | Confirmez que les deux peuvent atteindre bromure.io ; le relais nécessite que turns:5349 soit accessible. Réessayez — un chemin est retenté à la tentative suivante. |
| « Contact établi avec … via bromure.io, mais sa porte d'entrée SSH n'a pas répondu » | L'Accès à distance a été désactivé sur l'hôte distant | Réactivez l'Accès à distance sur le Mac distant. |
| « L'appareil bromure.io de ce Mac a été révoqué. Reconnectez-vous. » | Cet appareil a été déconnecté / révoqué (par vous, la console web, ou après 90 jours d'inactivité) | Réinscrivez-vous : menu portant le nom de l'application → Se connecter à bromure.io…. |
| Feuille rouge Faire confiance à la nouvelle clé et continuer | La clé d'hôte de l'hôte distant a changé depuis son épinglage | Vérifiez hors bande ; ne continuez que si vous savez pourquoi la clé a changé (réinstallation, nouveau Mac) — sinon il peut s'agir d'un intermédiaire malveillant. |
| Les connexions en cours tombent après la modification des clés | L'ajout ou la suppression d'une clé autorisée redémarre l'écouteur | Attendu ; reconnectez-vous. |
| Le volet de navigateur reste vide | Le redirecteur SOCKS ou le sous-réseau n'est pas encore prêt | Attendez la première mise à jour d'état du miroir ; assurez-vous que la machine est en cours d'exécution et que ce Mac a l'image du navigateur installée. |
| Une redirection est refusée | La cible n'est pas un invité sur le sous-réseau vmnet de l'hôte distant | Les redirections ne peuvent atteindre que les VM d'espace de travail, jamais l'hôte, la passerelle ou internet. |
| Le commutateur de tunnel reste bloqué sur En attente d'approbation… | L'assistant privilégié n'est pas encore approuvé | Approuvez Bromure Agentic Coding dans Réglages Système → Général → Ouverture (nécessite un administrateur). Sans cela, SOCKS fonctionne toujours. |
| Les modifications de disposition de grille ne prennent pas sur l'hôte distant | L'hôte distant est sans écran | Les modifications de grille nécessitent une fenêtre graphique ouverte sur l'hôte distant ; tout le reste est toujours reflété. |
Fichiers, ports et variables d'environnement
L'état côté serveur réside sous ~/Library/Application Support/BromureAC/remote/ : hostkey_ed25519 (0600) et son .pub, authorized_keys (0600) et le remplacement facultatif overlay-key. L'identité et l'état du client riche résident sous ~/Library/Application Support/BromureAC/remote-client/ : id_ed25519(.pub) (commentaire bromure-ac-fatclient), known_hosts (épingles TOFU), hosts.json (serveurs enregistrés) et la persistance du miroir par hôte sous hosts/<host-UUID>/. L'ensemble du répertoire de support se relocalise sous CFFIXED_USER_HOME.
| Port / interface | Rôle |
|---|---|
TCP 2222 (configurable, ≥ 1024) | Le serveur SSH embarqué, liaison 0.0.0.0 par défaut. |
TCP 443 sortant + turns:5349 | Chemin par compte bromure.io uniquement. Atteindre votre compte (annuaire d'appareils, rendez-vous) et, lorsqu'aucun chemin pair-à-pair direct ne peut être établi, le relais TURN sur TLS. Les deux doivent être accessibles depuis chaque appareil pour le chemin par compte ; sans rapport avec le chemin par adresse. |
| vsock invité 5010 | Relais de boucle locale toujours actif dans chaque VM — le chemin des redirections de port et de la livraison des rappels OAuth. |
| vsock invité 5830 | Le flux browser-MCP de l'agent d'espace de travail, relayé vers le volet de navigateur du client riche. |
Port éphémère, lié à 0.0.0.0 | Redirecteur SOCKS5 par hôte (filtré par pair vers la boucle locale et le sous-réseau de navigateur 192.168.127.x). |
192.168.127.0/24 | Le sous-réseau de VM de navigateur locale épinglé du client riche. |
100.64.<n>.0/24 | Sous-réseaux d'alias CGNAT attribués lors d'une collision de sous-réseau de parc. |
Les clés UserDefaults pertinentes (domaine io.bromure.agentic-coding) sont remoteAccess.enabled, remoteAccess.port, remoteAccess.bindAddress, remoteAccess.passwordAuth, remoteAccess.pubkeyAuth, fatclient.tunnel.<host-UUID> et cloudflareTunnel.consented. Les variables d'environnement de diagnostic incluent BROMURE_OVERLAY_KEY (raccourci du menu distant), BROMURE_FATCLIENT_LOG (journalisation détaillée du client riche) et BROMURE_FATCLIENT_UTUN (forcer l'activation de l'option de tunnel à l'échelle du système — le commutateur de la barre d'outils est le chemin produit). La référence complète de la CLI, y compris la tuyauterie cachée __forward, __forward-socks, __dial et __attach-window, se trouve dans CLI, API et MCP.