Conceptos y arquitectura
Bromure Agentic Coding ejecuta agentes de programación con IA dentro de máquinas Linux virtualizadas por hardware en tu Mac, y aplica cada control de seguridad en un punto que el agente no puede esquivar. Este capítulo define las palabras en las que se apoya el resto del manual — sesión, máquina, sala, rama, anfitrión e invitado, el límite de red — y explica cómo encajan las piezas. Si solo lees un capítulo además del Inicio rápido, que sea este.
Sesiones, máquinas, salas y ramas
Cuatro objetos componen casi todo lo que haces en la app.
Sesión
Una sesión es una conversación con un agente, en una carpeta, en una máquina. La empiezas desde la pantalla de nueva sesión; tiene un título (el agente pone uno a partir de tu primer mensaje, y puedes cambiarlo), un agente (Claude Code, Codex, Grok, Kimi Code u Oh My Pi), una máquina y una carpeta de trabajo dentro de esa máquina. Las sesiones son lo que enumera la barra lateral y lo que muestra el chat.
Dentro de la máquina, una sesión es un agente que se ejecuta en su propia pestaña de terminal. Rara vez necesitas ver esa pestaña, pero puedes: la píldora Linux de la barra de herramientas (⌥⌘U) o Abrir en el terminal de Linux en el menú de la sesión cambia a ella, y la píldora (que entonces dice Sesión) vuelve atrás.
Una sesión sobrevive al proceso del agente. Cuando el agente termina, o su máquina se apaga, la sesión sigue en la barra lateral con su conversación, y tu siguiente mensaje vuelve a arrancar el agente sobre la misma conversación. Consulta El inicio de las sesiones.
Máquina
Una máquina es una VM Linux aislada junto con sus ajustes y su almacenamiento duradero. La ventana principal dice máquina; el editor de ajustes, varios menús (Nuevo espacio de trabajo…, Espacios de trabajo) y la línea de comandos dicen espacio de trabajo (internamente, y en nombres de archivo como profile.json, un perfil). Las tres palabras significan lo mismo.
Una máquina define las credenciales, las carpetas compartidas, el entorno, los servidores MCP, las salvaguardas, las sustituciones de modelos, la apariencia y el tamaño de VM que se aplican a cada sesión que se ejecuta en ella: todo lo que editas en el editor de ajustes. Todos los agentes están disponibles en todas las máquinas. Una máquina existe tanto si está en marcha como si no, y muchas sesiones pueden ejecutarse a la vez en una misma máquina, cada una en su carpeta y su pestaña de terminal.
Lo habitual es una máquina por proyecto o por frontera de credenciales: las sesiones de la misma máquina comparten su disco, sus credenciales y su identidad de red. Las máquinas se enumeran en Máquinas virtuales en la barra lateral; consulta Máquinas.
Una ejecución de máquina es un periodo continuo durante el que la VM de una máquina está encendida: empieza cuando la máquina arranca o se reanuda, y termina cuando se apaga o se suspende. Parte del estado pertenece a la ejecución y no a la máquina: las aprobaciones de credenciales que concedes viven en memoria y se revocan al terminar la ejecución, y los recursos compartidos de configuración de cada arranque se reconstruyen en cada inicio.
Sala
Una sala agrupa sesiones que trabajan en lo mismo. Al abrir una sala, sus sesiones se muestran una junto a otra como una cuadrícula de chats en directo, con un compositor que puede enviar a cualquiera de ellas o a todas a la vez. Una sala puede tener su propia Centralita, una sesión que sigue las sesiones de esa sala y solo esas. Las sesiones de una sala pueden ejecutarse en máquinas distintas. Consulta Salas.
Sesión de rama
Una sesión de rama es una sesión iniciada desde otra sesión en su propia rama de git, en una copia de trabajo separada (un worktree de git) del mismo repositorio en la misma máquina. Trabaja sin tocar la carpeta de la sesión original y, cuando el resultado te convence, lo revisas y lo fusionas de vuelta. Consulta Ramas y revisión.
Sesiones que inician otras sesiones
Hay dos tipos de sesión que se inician por ti en lugar de iniciarlas tú:
- Delegados. Un agente puede encargar un trabajo a una nueva sesión hija — en su propia rama o en otra máquina — y esperar el resultado. La hija aparece debajo de la sesión que la inició. Un agente también puede enviar una solicitud a una sesión existente por su @apodo. Consulta Agentes trabajando juntos.
- La Centralita. Una sesión de Claude Code que sigue a todas las demás. Aparece en la barra lateral en cuanto hay dos o más sesiones en curso, trabaja en la carpeta
~/.bromure/switchboardde la última máquina que usaste y puede leer, responder e iniciar sesiones por ti bajo reglas estrictas. La Centralita propia de una sala trabaja en~/.bromure/rooms/<room>y solo ve esa sala. Consulta Centralita y mensajería.
Las ejecuciones de automatizaciones y las tareas de código también se ejecutan como sesiones, que se archivan al terminar; consulta Automatizaciones y Tareas de código.
Estados de las sesiones
La barra lateral agrupa las sesiones según lo que necesitan de ti, nunca según la máquina en la que se ejecutan:
| Estado | Punto | Significado |
|---|---|---|
| Te necesita | Rojo | El agente te espera: una pregunta, una solicitud de permiso o un inicio de sesión («Hace falta iniciar sesión»). |
| Trabajando | Naranja | El agente está ocupado, o la sesión aún está arrancando. |
| Listas | Verde | El agente terminó su turno y espera tu siguiente mensaje. |
| En pausa | — | La máquina de la sesión está apagada o suspendida. Tu siguiente mensaje arranca la máquina y retoma la conversación. |
| Terminadas | — | El agente ha terminado, o tú terminaste la sesión. Tu siguiente mensaje vuelve a arrancar el agente sobre la misma conversación. |
Otros dos lugares contienen sesiones fuera de estos grupos:
- Archivadas es una sección plegada al final de la lista de sesiones para las conversaciones que guardas. Una sesión archivada sigue siendo legible, y un mensaje la trae de vuelta. Las sesiones que terminaron hace más de tres días se archivan automáticamente, salvo las de una sala y las Centralitas. Los delegados, las tareas de código y las ejecuciones de automatizaciones se archivan en cuanto terminan.
- Una sesión cuya máquina o carpeta ya no existe se muestra atenuada, como «Máquina eliminada» o «Carpeta eliminada». Las sesiones de máquinas eliminadas se agrupan en una línea al final de la lista con un botón Eliminar.
El anfitrión guarda una copia de la conversación de cada sesión (en ~/Library/Application Support/BromureAC/transcripts/), que se actualiza mientras el agente se ejecuta, para que una sesión en pausa, terminada o archivada pueda leerse sin arrancar su máquina.
El anfitrión y el invitado
Todo en Bromure Agentic Coding vive a un lado de una línea infranqueable:
- El anfitrión es tu Mac — macOS 14 o posterior en Apple Silicon — y la app Bromure Agentic Coding que se ejecuta en él. El anfitrión guarda todo lo sensible: tus credenciales reales (cifradas con una clave maestra en el llavero de macOS), tus inicios de sesión, el proxy MITM que habla con internet en nombre del agente, la clave privada de la CA raíz de Bromure, el trazado y la Cronología de seguridad, y las ventanas, chats y terminales de la app. El chat y los terminales en los que escribes se dibujan en el anfitrión, no dentro de la VM.
- El invitado es la VM Linux donde realmente se ejecuta el agente — Claude Code, Codex, Grok, Kimi Code, Oh My Pi o simples herramientas de shell, con todo lo que instalan y tocan: repositorios clonados, cachés de paquetes, contenedores Docker, virtualenvs. El invitado se considera no confiable por diseño. No guarda secretos reales, solo credenciales falsas deliberadamente inválidas, y su tráfico web saliente pasa por el proxy del anfitrión.
Los dos lados hablan por dos canales estrechos: vsock (sockets virtio, un canal anfitrión–invitado que no necesita red) para el control, los terminales, los servidores MCP y la ruta del proxy; y una red virtual privada para el tráfico IP ordinario. Ambos se describen más abajo.
Esta separación es lo que hace concreta la promesa de seguridad: un agente víctima de una inyección de prompts o que se porta mal puede hacer lo que quiera dentro del invitado, pero no puede leer una clave de API real, firmar con un secreto de AWS real ni extraer una clave privada SSH: nada de eso existe en su lado de la línea.
La arquitectura de un vistazo
Lee el diagrama de abajo arriba: el agente trabaja en la VM de la máquina; su HTTPS sale por vsock hacia el proxy del anfitrión, el único lugar donde las credenciales falsas se vuelven reales; la app se conecta a los terminales de la VM mediante puentes vsock separados; y una VM de navegador desechable opcional comparte la misma red privada para poder cargar los servidores de desarrollo del agente.
Además de las máquinas y las VM de navegador, la app puede ejecutar tres tipos de VM gestionadas propias, todas en la misma red privada: nodos de clúster de Kubernetes y un registro de contenedores (consulta Clústeres de Kubernetes y registros), y el conector de mensajería que une la Centralita con Signal, WhatsApp o Slack (consulta Centralita y mensajería). Aparecen en Máquinas virtuales en la barra lateral, pero no son máquinas: en ellas no se ejecuta ningún agente.
La VM de la máquina
La VM de cada máquina es un invitado Ubuntu 24.04 que se ejecuta sobre Virtualization.framework de Apple, que requiere Apple Silicon y solo admite invitados ARM64. Arranca con 4 vCPU y la cantidad de memoria fijada en el panel Recursos de la máquina, a partir de dos discos virtuales:
disk.img— el disco de sistema. En el primer arranque de la máquina se crea como un clon APFS copy-on-write de la imagen base Ubuntu compartida y firmada (consulta Instalación y primer arranque): el clon aparece al instante y no usa espacio nuevo en disco hasta que el invitado escribe en él. Los arranques posteriores reutilizan el mismo clon, así que los paquetes que instalas conapt install, las imágenes Docker que descargas y otros cambios a nivel de sistema sobreviven.home.img— un disco ext4 privado que contiene/home/ubuntu, conectado como segundo disco. Tiene 16 GiB de forma predeterminada, pero solo ocupa espacio a medida que se llena, y encoge en el anfitrión cuando se borran archivos en el invitado. La carpeta personal sobrevive a Restablecer el disco, y por eso tus repositorios, dotfiles, historial del shell y la carpeta de cada sesión sobreviven a un restablecimiento del disco de sistema.
El invitado también monta pequeños recursos compartidos por arranque: un recurso meta de solo lectura con la configuración de ese arranque (archivos de entorno con credenciales falsas, ajustes del proxy, el certificado de la CA de Bromure, agentes del invitado, configuración MCP) y una bandeja de salida con escritura que el invitado usa para informar al anfitrión (su dirección IP, sus pestañas de terminal, el estado de los agentes). Ambos se reconstruyen en cada arranque y no guardan estado duradero. También se pueden compartir con el invitado hasta 8 carpetas de tu Mac; aparecen en la carpeta personal.
Persistente por diseño — el contraste con Bromure (Web)
Bromure Agentic Coding comparte su base de código con su app hermana, Bromure, el navegador web, y ambas toman a propósito decisiones opuestas sobre la vida de las VM:
| Bromure (Web) | Bromure Agentic Coding | |
|---|---|---|
| Imagen del invitado | Ubuntu + Chromium | Ubuntu 24.04 |
| Vida de la VM | Una VM desechable por sesión de navegación, destruida al cerrar la ventana | Una VM persistente por máquina, reutilizada entre ejecuciones |
| Datos al cerrar | Se destruye todo | Se conservan el disco de sistema y la carpeta personal |
| Qué se controla | Todo el estado de la VM (se tira) | La superficie de secretos de la VM (credenciales falsas, límite de red) |
Programar necesita estado duradero — repositorios clonados, cachés de paquetes, virtualenvs, historial del shell — así que tirar la VM después de cada sesión dejaría inútiles a los agentes. En lugar de controlar el estado de la VM, Bromure Agentic Coding controla lo que la VM puede llegar a contener: ningún secreto real y ningún camino sin mediación hacia internet. Las máquinas desechables siguen existiendo como opción: Restablecer el disco vuelve a clonar el disco de sistema desde la imagen base, Rebobinar la carpeta personal… devuelve la carpeta personal a un punto de control anterior, bromure-cli vm run --rm crea una máquina desechable que se elimina al detenerse, y el flujo de compromiso borra un disco y una carpeta personal contaminados pero conserva tus ajustes y claves.
La VM del navegador
Un trozo de Bromure (Web) sigue vivo dentro de Bromure Agentic Coding: el navegador integrado junto a una sesión. Cuando tú (o el agente) lo abres, la máquina recibe una segunda VM, desechable, con Ubuntu y Chromium, clonada en una carpeta temporal y eliminada al cerrar el navegador. El estado de navegación se descarta de forma predeterminada, salvo que la máquina active Mantener la sesión iniciada en los sitios web, que conserva el perfil de Chromium en un disco cifrado por máquina. La VM del navegador está en la misma red privada que las máquinas, para poder cargar un servidor de desarrollo que el agente acaba de iniciar. Consulta El navegador integrado.
Estados de las máquinas: apagada, suspendida y en ejecución
Cada máquina está siempre en uno de tres estados duraderos. También verás brevemente Arrancando… mientras una máquina arranca.
Despliega Máquinas virtuales al final de la barra lateral para ver tus máquinas. Al hacer clic en una máquina se muestra su panel: CPU, memoria, disco y tiempo activo en directo mientras se ejecuta, o su especificación y configuración cuando está apagada, con un botón Iniciar o Reanudar. Iniciar una sesión en una máquina apagada la arranca por ti.
| Estado | La VM está… | Se conserva | Se pierde |
|---|---|---|---|
| Apagada | Sin ejecutarse en absoluto. | Disco de sistema (disk.img), carpeta personal (home.img), puntos de control, ajustes, claves SSH, identidad de red. | Procesos en ejecución, memoria, pestañas de terminal, cualquier instantánea de memoria guardada (un apagado limpio la borra, así que el siguiente inicio es un arranque desde cero). Las sesiones de la máquina aparecen En pausa. |
| Suspendida | Congelada. Su memoria se guarda en vm.state, en la carpeta de la máquina, y sus pestañas de terminal en tabs.json. | Todo lo que conserva Apagada, más cada proceso en ejecución y cada pestaña de terminal: al reanudarla continúa exactamente donde se quedó. Las sesiones aparecen En pausa hasta que se reanuda. | Nada, salvo que haya que descartar la instantánea (ver más abajo). |
| En ejecución | Activa. | Todo está activo. | — |
Algunas reglas que conviene conocer:
- Suspender es una instantánea de memoria, no un archivo guardado. Restaurarla exige que la configuración de la VM sea la misma que cuando se guardó. Si cambias algo de lo que depende la instantánea — por ejemplo, el tamaño de la memoria o las carpetas compartidas — la máquina arranca desde cero, y ningún archivo se ve afectado. El registro de la app indica qué cambió.
- Una instantánea nunca sobrevive a su disco. Restablecer o borrar el disco de sistema también descarta cualquier instantánea de memoria guardada, porque un disco nuevo con memoria antigua se corrompería al instante.
- Apagada no significa borrada. Una máquina apagada conserva su disco de sistema y su carpeta personal indefinidamente. El borrado real siempre es explícito (Restablecer el disco, Rebobinar la carpeta personal…, Eliminar espacio de trabajo) o lo impone el flujo de compromiso.
Acciones de cierre
Lo que ocurre al cerrar la ventana de una máquina es una elección por máquina (Al cerrar la ventana en el panel General): Ejecutar en segundo plano (la máquina sigue ejecutándose sin ventana), Suspender, Apagar o Preguntar, que es el valor predeterminado y pregunta cada vez. Consulta Máquinas.
El límite de red
El límite de red es la idea central del producto: todo el tráfico web saliente del invitado pasa por un proxy de intermediario (MITM) del lado del anfitrión, y cada protección — guardar secretos, limitar credenciales, analizar la cadena de suministro, detectar inyección de prompts, proteger datos personales, trazar — se aplica en ese único punto. El agente no puede esquivarlo, porque en su lado de la línea no hay nada útil.
El flujo, de principio a fin:
- El invitado solo tiene valores falsos. Cuando arranca una máquina, el anfitrión escribe en la VM credenciales de sustitución deliberadamente inválidas — variables de entorno como
ANTHROPIC_API_KEYy archivos como~/.git-credentials,~/.docker/config.jsony~/.kube/config. Los valores falsos mantienen la forma de los reales (sk-ant-api03-brm-…, con forma deghp_…,brm_…) para que las comprobaciones del lado del cliente los acepten, y son estables para una instalación dada, de modo que las herramientas nunca ven cambiar una clave entre ejecuciones. Los valores reales correspondientes se cargan en la memoria del proxy en el anfitrión, cada uno vinculado al host al que pertenece. - El TLS del invitado termina en el proxy. Cada shell del invitado exporta
HTTPS_PROXY=http://127.0.0.1:65534, un endpoint dentro de la VM que hace túnel por vsock (puerto 8443) hasta el proxy del anfitrión. Además, el conmutador de red virtual del anfitrión desvía al mismo proxy las conexiones salientes del invitado hacia los puertos 80 y 443, así que una herramienta que ignore las variables de proxy pasa igualmente por él. El proxy presenta un certificado por host firmado por la CA raíz de Bromure, inspecciona la solicitud y la vuelve a cifrar hacia el servidor real. - Los valores falsos solo se vuelven reales al salir. El proxy cambia cada valor falso por su valor real: sustitución de cabeceras para claves de API y tokens, las claves sustitutas tras los inicios de sesión de suscripciones, refirma SigV4 completa para AWS (el invitado firma con un secreto falso; el anfitrión quita esa firma y vuelve a firmar con el real) y firma ssh-agent por vsock para SSH. Las sustituciones solo se aplican al host registrado y a sus subdominios, nunca a uno parecido, de modo que una credencial registrada para
api.anthropic.comnunca se inyecta hacia otro dominio.
Una máquina puede desactivar el desvío transparente en su panel Salvaguardas; las variables de proxy, la sustitución de credenciales, el trazado y las salvaguardas siguen aplicándose. Consulta Credenciales y el límite de red.
La CA raíz de Bromure
El proxy solo puede leer el TLS del invitado porque el invitado confía en él. En el primer arranque, la app crea una autoridad de certificación propia de la instalación — la CA raíz de Bromure Agentic Coding — cuyo certificado público se instala en el almacén de confianza de cada VM al arrancar, a través del recurso meta. La clave privada nunca sale del anfitrión (vive en ~/Library/Application Support/BromureAC/ca/, legible solo por ti). Nada fuera de tus VM de Bromure confía en esta CA: no puede usarse para interceptar el tráfico propio de tu Mac, y borrar la carpeta ca/ simplemente crea una CA nueva en el siguiente arranque.
Fail-closed por construcción
El diseño falla de forma cerrada: si el tráfico del invitado llegara a esquivar el proxy — un socket en bruto en un puerto inusual, un intento deliberado de rodearlo — la única credencial que podría presentar es un valor falso que ningún servidor acepta. AWS devuelve InvalidSignatureException; los proveedores de API rechazan la clave sustituta. Rodear el límite no le sirve de nada a un atacante, porque el límite no es donde se comprueban los secretos: es el único lugar donde los secretos existen.
El detector de compromiso
El límite también vigila el abuso contrario: la exfiltración. El proxy analiza cada solicitud saliente en busca de cualquiera de los tokens falsos registrados para la máquina. Un valor falso tiene exactamente un destino legítimo — el host para el que se creó — así que un valor falso que va a cualquier otro sitio es la firma de un agente que intenta filtrar credenciales. El proxy detiene la solicitud, pausa la máquina y te avisa, con la opción de apagar la máquina, bloquear la solicitud o permitir ese destino durante el resto de la sesión. Como solo salió un valor falso, la credencial real nunca necesita rotarse. El modelo completo de credenciales, incluidas las solicitudes de aprobación por credencial y las autorizaciones con límite de tiempo, está en Credenciales y el límite de red.
Qué persiste y qué no
Bromure Agentic Coding es explícito sobre lo que perdura. Los archivos de cada máquina viven en ~/Library/Application Support/BromureAC/profiles/<uuid>/; tus sesiones viven al lado, en la carpeta de soporte.
Persistente — sobrevive a apagados y reinicios de la app:
| Elemento | Ubicación | Notas |
|---|---|---|
| Disco de sistema | disk.img | Clon APFS copy-on-write de la imagen base. Lo eliminan Restablecer el disco, Eliminar espacio de trabajo o un borrado por compromiso. |
| Carpeta personal | home.img | Contiene /home/ubuntu, incluida la carpeta de cada sesión. Sobrevive a Restablecer el disco; se rebobina con Rebobinar la carpeta personal…. |
| Puntos de control | checkpoints/, checkpoints/home/ | Instantáneas del disco y de la carpeta personal, usadas por Rebobinar la carpeta personal… y por las restauraciones. |
| Ajustes de la máquina | profile.json | Ajustes no secretos; los secretos se guardan aparte, cifrados en el anfitrión. |
| Claves SSH | ssh/ | El par de claves de la máquina (el invitado solo puede pedir firmas, por vsock). |
| Identidad de red | machine-identifier.bin y la dirección MAC en profile-macs.json | Mantiene estable la identidad de la VM — y normalmente su dirección IP; necesaria para restaurar una máquina suspendida. |
| Instantánea de suspensión | vm.state + tabs.json | Solo mientras la máquina está Suspendida. |
| Perfil del navegador (opcional) | browser-profiles/<uuid>/image/ | Solo con Mantener la sesión iniciada en los sitios web; cifrado por máquina. |
| Sesiones y salas | sessions.json, rooms.json, delegations.json (carpeta de soporte) | Títulos, agentes, carpetas, estados, pertenencia a salas y trabajo pasado entre agentes. |
| Copias de las conversaciones | transcripts/ (carpeta de soporte) | La copia que guarda el anfitrión de la conversación de cada sesión, para leerla con la máquina apagada. |
Temporal — se reconstruye o se elimina automáticamente:
| Elemento | Vida útil |
|---|---|
Recurso meta (meta-share/: archivos de credenciales falsas, ajustes del proxy, certificado de la CA, agentes del invitado) | Se reconstruye en cada arranque. |
Bandeja de salida (outbox/) | Una ejecución de la máquina. |
| Disco de la VM del navegador (un clon copy-on-write en la carpeta temporal) | Se elimina al cerrar el navegador. |
| Aprobaciones y denegaciones de credenciales | Solo en memoria; se revocan al terminar la ejecución de la máquina. |
| Memoria, procesos y pestañas de terminal del invitado | Se pierden al apagar, salvo que la máquina se suspenda. |
De aquí se siguen dos cosas. Primero, cerrar una ventana o terminar una sesión nunca borra nada por sí solo: las acciones destructivas son todas explícitas y requieren confirmación. Eliminar una sesión quita su conversación de la app, pero deja su carpeta en la máquina. Segundo, cuando quieres empezar de cero, tienes varias opciones: Rebobinar la carpeta personal…, Restablecer el disco (la carpeta personal sobrevive), eliminar la máquina o una máquina desechable con bromure-cli vm run --rm.
Nota: Las carpetas compartidas desde tu Mac son carpetas normales de tu disco, fuera del almacenamiento de Bromure. Ninguna acción de Bromure las elimina nunca — tampoco el borrado por compromiso — y el aviso de borrado lo indica.
Puentes anfitrión–invitado (vsock)
Todo lo interactivo entre el Mac y el invitado viaja por sockets virtio: canales directos anfitrión–invitado que existen con independencia de la red de la VM. Nunca los configuras, pero saber que existen ayuda al leer trazas o la Solución de problemas. Cada puente usa un puerto vsock numerado:
Puentes de la VM de la máquina:
| Puerto | Puente | Qué transporta |
|---|---|---|
| 8443 | Proxy MITM | Todo el tráfico web del invitado: el propio límite de red. |
| 8444 | Puente ssh-agent | Solicitudes de firma desde el SSH_AUTH_SOCK del invitado; las claves privadas nunca cruzan. |
| 8445 | Ayudante de credenciales de AWS | El feed de credential_process (ID de clave de acceso real, secreto falso). |
| 8446 | Inicio de sesión de Claude / inferencia local | Las claves sustitutas de las suscripciones de Claude y la ruta del invitado hacia los modelos en el dispositivo (ambos comparten el puerto). |
| 8447 | Inicio de sesión de Codex | Las claves sustitutas de las suscripciones de ChatGPT. |
| 5800 | Puente de shell | Conexión a los terminales, bromure-cli exec, el panel Archivos y la subida de archivos desde el chat y el terminal. |
| 5010 | Relé de retorno de inicio de sesión | Redirecciones de inicio de sesión por loopback (para gh, gcloud y herramientas similares) devueltas al invitado. |
| 5840 | Atestador de binarios | Con Enforce binaries: el atestador propiedad de root que nombra el programa detrás de cada conexión. Fijado por un secreto. Consulta Política de sandbox. |
| 5841 | Centinela del kernel | El flujo de eventos del centinela del kernel desde el kernel del invitado, autenticado, numerado y vigilado para detectar huecos. |
Servidores MCP integrados — herramientas que el anfitrión ofrece a cada agente de la máquina, cada una alcanzada a través de un pequeño shim en el invitado:
| Puerto | Servidor | Qué le da al agente |
|---|---|---|
| 5830 | browser | El control del navegador integrado. Consulta El navegador integrado. |
| 5831 | Tablero de tareas | Herramientas de tareas de código: fijar el plan, crear subtareas, pasar el trabajo a revisión. Consulta Tareas de código. |
| 5832 | Flujo del plan | El canal de plan en directo que se usa mientras se planifica una tarea de código. |
| 5833 | bromure-automations | Enumerar, crear, editar, eliminar y ejecutar las automatizaciones de esta máquina. Consulta Automatizaciones. |
| 5834 | bromure-infrastructure | Los clústeres de Kubernetes y registros que esta máquina puede usar. Consulta Clústeres de Kubernetes y registros. |
| 5835 | bromure-delegation | La delegación en otras sesiones y las solicitudes por @apodo. Consulta Agentes trabajando juntos. |
| 5836 | bromure-switchboard | Las herramientas de la Centralita; solo la sesión de la Centralita puede usarlas. Consulta Centralita y mensajería. |
Puentes de la VM del navegador: configuración (5000), transferencia de archivos (5100), Chrome DevTools Protocol (5200), relé de enlaces (5300), webcam (5400), barra de pestañas (5810) y traza de red (5900).
Portapapeles
Las pestañas de terminal no tienen un servicio de portapapeles aparte: el portapapeles viaja por el propio terminal. Copiar dentro del invitado (una selección de tmux, o cualquier programa que use OSC 52) llega al portapapeles de macOS; ⌘C copia la selección en un terminal; ⌘V pega en el invitado. En el navegador, un agente de portapapeles en el invitado permite copiar y pegar entre el Mac y Chromium.
Transferencia de archivos
Los archivos pasan entre el Mac y una máquina de tres formas, todas descritas en Máquinas: las carpetas compartidas (la vía normal para archivos de proyecto que viven en tu Mac), el panel Archivos (arrastrar hacia dentro y hacia fuera, por el puente de shell en el puerto 5800) y los adjuntos: cualquier archivo de hasta 512 MB que sueltes o pegues en un chat o un terminal se copia a la máquina y su ruta se pasa al agente.
Redes
Modo NAT (el valor por defecto)
Todas las máquinas en modo NAT se conectan a un único conmutador de red por software dentro de la app, que llega a internet a través de una única interfaz NAT vmnet de macOS. Como resultado:
- Una sola subred privada. Una instalación nueva elige al azar un /24 privado dentro de
172.16.0.0/12y lo conserva, evitando cualquier red172.xen la que ya esté tu Mac (como la de Docker). El interruptor de Preferencias › Recursos (Subred del espacio de trabajo — Usar una subred privada (evita conflictos entre remotos)) muestra la subred, y Aleatorio elige una nueva; los cambios se aplican la próxima vez que arranquen tus máquinas. Con el interruptor desactivado, la app usa192.168.64.0/24, u otro192.168.x.0/24libre si tu red local ya usa ese rango. - La app ejecuta su propio servidor DHCP en ese conmutador, y las concesiones se guardan en
dhcp-leases.sqlite. Cada máquina tiene una dirección MAC estable (enprofile-macs.json), así que normalmente conserva la misma dirección IP entre reinicios. Copiar dirección IP en el menú de la máquina y el panel de la máquina muestran la dirección actual. - Las VM pueden alcanzarse entre sí. Las máquinas, las VM de navegador, los nodos de clúster y el registro están en la misma red por diseño, así que el navegador puede cargar un servidor de desarrollo que se ejecuta en una máquina, y dos máquinas pueden usar los servicios de la otra. La lista de puertos en escucha del panel muestra cada servicio alcanzable como el
<IP>:<puerto>al que te conectarías desde el Mac. - Aisladas del exterior. Las VM son accesibles desde tu Mac, pero no desde tu red local física, y nada más puede conectarse a ellas salvo que publiques un servicio explícitamente (por ejemplo, mediante un túnel rápido de Cloudflare desde la lista de puertos en escucha).
- Solo IPv4. IPv6 está desactivado dentro del invitado, y
localhostse resuelve como127.0.0.1.
La MTU de red del invitado es 1280 de forma predeterminada — un valor seguro detrás de VPN y redes corporativas — y puede subirse con defaults write io.bromure.agentic-coding vm.mtu -int <valor>.
Recuerda que el tráfico IP ordinario no es la vía por la que viajan las credenciales: el tráfico web se dirige al proxy, y todo lo que lo esquive solo lleva credenciales falsas, la propiedad de fallo cerrado descrita más arriba.
Modo puente (por máquina)
Una máquina puede, en cambio, unirse a tu red local física: pon Red en modo puente en su panel Recursos y elige una interfaz, y la VM aparece en la red local con su propia dirección asignada por tu router (útil cuando otros dispositivos deben alcanzarla directamente). Si la interfaz elegida no está disponible al arrancar, la máquina vuelve al NAT. Consulta Ajustes › Recursos.
Arranques rápidos
Dos cosas hacen que las máquinas arranquen rápido:
- Discos copy-on-write. El disco de sistema de una máquina nueva es un clon instantáneo de la imagen base y no una copia, así que el primer arranque no espera a que se escriban gigabytes. Los arranques en frío posteriores son arranques de Linux normales.
- Suspender y reanudar. Una máquina Suspendida se salta por completo el arranque: se restaura su instantánea de memoria y continúa donde se quedó, incluidas las pestañas de terminal y los agentes.
Las máquinas no se agrupan ni se prearrancan: cada máquina es un ordenador persistente propio, así que no hay nada intercambiable que mantener caliente. La VM de navegador desechable es la excepción; procede del mismo mecanismo de pool que Bromure Web.