Sesiones
Una sesión es un espacio de trabajo en ejecución: su VM de Ubuntu arrancada, sus pestañas de terminal activas y su agente trabajando. Este capítulo abarca todo lo que ocurre entre hacer clic en Iniciar y cerrar la ventana: la disposición de la ventana de sesión, las pestañas y los worktrees de git, el navegador integrado y los paneles de archivos, el traslado de archivos y contenido del portapapeles entre tu Mac y la VM, los puntos de control y las opciones de las que dispones cuando termina una sesión.
A diferencia del navegador web hermano Bromure, cuyas sesiones se destruyen al cerrar la ventana, los espacios de trabajo de Bromure Agentic Coding son persistentes por diseño. El disco de sistema y el directorio home de la VM sobreviven entre sesiones; solo las acciones deliberadas (Restablecer a la base…, Borrar home…, Eliminar espacio de trabajo) o un borrado de seguridad destruyen datos. Cerrar una sesión simplemente decide qué hace la VM a continuación: seguir en ejecución, suspenderse o apagarse.
Cómo funcionan las sesiones
Cada espacio de trabajo se asigna a exactamente una VM. La VM arranca desde un disco de sistema por espacio de trabajo (disk.img), un clon copy-on-write de APFS de la imagen base compartida de Ubuntu, creado al instante en el primer arranque y reutilizado en cada arranque posterior. Todo lo que instales dentro de la VM (sudo apt install, cadenas de herramientas de lenguajes, configuración del sistema) persiste entre sesiones. El directorio home /home/ubuntu se almacena por separado —en una imagen de disco ext4 dispersa y privada para los espacios de trabajo modernos— y sobrevive incluso a un restablecimiento completo del disco de sistema. Consulta Conceptos para conocer en profundidad el modelo de almacenamiento.
Dentro de la VM, todas las terminales pertenecen a una única sesión de tmux. tmux es la fuente de verdad: cada pestaña de la interfaz es una ventana de tmux, y el anfitrión replica el listado de pestañas del invitado en la barra lateral. Este diseño hace que la interfaz pueda desacoplarse y reacoplarse libremente: una sesión puede seguir en ejecución sin interfaz en segundo plano, extraerse a su propia ventana o replicarse desde otro Mac (consulta Acceso remoto) sin perturbar el trabajo del agente.
Nota: Las VM de los espacios de trabajo no se precalientan desde un grupo. Cada una arranca en frío desde su propio disco (o se restaura desde una instantánea de suspensión). Solo la VM auxiliar detrás del panel del navegador agéntico usa el grupo precalentado.
Iniciar una sesión
Puedes iniciar un espacio de trabajo detenido desde varios lugares:
- Selecciona el espacio de trabajo en la barra lateral y haz clic en Iniciar (o Reanudar si está suspendido), ya sea en la tarjeta de inicio del escenario o en el panel de control de la VM.
- Haz clic en ⋯ en la fila del espacio de trabajo en la barra lateral y elige Iniciar.
- Haz clic en una celda de marcador de posición de la cuadrícula de terminales que pertenezca a un espacio de trabajo apagado.
Qué arranca
- Primer arranque: la app clona la imagen base en el
disk.imgdel espacio de trabajo mediante un clon copy-on-write de APFS. El clon es instantáneo y no consume espacio de disco por adelantado; los bloques se asignan solo a medida que el invitado escribe. Se crean la imagen del home y los recursos compartidos por arranque (el recurso compartido de metadatos y la bandeja de salida), y la VM arranca con 4 vCPU (fijas) y la RAM configurada en los ajustes del espacio de trabajo. - Arranques posteriores: se reutilizan el disco de sistema y el home existentes, de modo que todo lo instalado dentro de la VM sigue ahí.
- Espacio de trabajo suspendido: en lugar de un arranque en frío, se restaura la instantánea de RAM guardada (
vm.state) y la sesión se reanuda exactamente donde se dejó, con su barra de pestañas rehidratada a partir de la instantánea de pestañas guardada. La reanudación es casi instantánea.
De forma predeterminada, la VM se une al conmutador NAT compartido de Bromure: cada VM de espacio de trabajo (y la VM del navegador agéntico) comparte una subred privada, obtiene una dirección DHCP estable y puede alcanzar a las demás, de modo que el panel del navegador puede cargar un servidor de desarrollo que el agente haya iniciado, por la IP de la VM. Hay disponible un modo Puente por espacio de trabajo en los ajustes del espacio de trabajo. Consulta Ajustes — General para conocer las opciones de memoria y red.
La pantalla de arranque
Mientras la VM arranca, una superposición animada de "inmersión" cubre el área de la terminal: el nombre del espacio de trabajo sobre una barra de progreso de escaneo, con una línea de estado opcional. Solo aparece si el arranque tarda más de 0,4 segundos, y se desvanece en cuanto el invitado informa de su primer listado de pestañas. Durante una migración del almacenamiento del home, la superposición muestra en cambio un progreso determinado (por ejemplo, "MOVIENDO HOME — 42 % DE 7,9 GB").
Si no aparece ninguna terminal en un plazo de 30 segundos, la superposición cambia a un panel de INMERSIÓN FALLIDA —"«name» nunca devolvió una terminal tras 30 segundos. La VM puede estar bloqueada o la imagen base puede estar dañada."— con dos botones:
- Seguir esperando: rearma el watchdog y mantiene el arranque en marcha.
- Restablecer imagen base…: inicia una reconstrucción de la imagen base para los casos en que la propia imagen compartida esté dañada.
Consulta Solución de problemas si los arranques fallan repetidamente.
Prompts en el momento del arranque
Un arranque puede ir precedido de uno de estos prompts:
| Prompt | Cuándo aparece | Opciones |
|---|---|---|
| Desfase de la imagen base | La imagen base compartida se reconstruyó desde que se clonó el disco de este espacio de trabajo | Restablecer e iniciar (volver a clonar desde la nueva base; el home no se toca) / Iniciar tal cual / Cancelar |
| Espacio de trabajo comprometido | Una sesión anterior fue marcada por exfiltración de credenciales | Confirma un borrado del disco, el home, la instantánea de RAM y los recursos compartidos por arranque antes de arrancar; los ajustes, los tokens y las claves SSH se conservan. Consulta Credenciales. |
| Actualización del almacenamiento del home | El espacio de trabajo aún usa el home heredado basado en carpeta compartida | Actualizar ahora (migrar a una imagen de home ext4 durante este arranque) / Ahora no (se vuelve a preguntar en el siguiente inicio) |
| Modelo aún descargándose | Un modelo local requerido no ha terminado de descargarse | El arranque se rechaza con una explicación. Consulta Modelos locales. |
| Disco lleno | El volumen del anfitrión tiene menos de 1 GB libre | El arranque se rechaza con un error claro en lugar de atascarse a mitad de sesión. |
La ventana de sesión
Todas las sesiones residen en una única ventana compartida titulada Bromure (1320 × 860 puntos de forma predeterminada). Es una división al estilo de Mail.app: una barra lateral redimensionable a la izquierda que lista cada espacio de trabajo, y un único escenario a la derecha que muestra la terminal del espacio de trabajo seleccionado. La barra de título es transparente y unificada con la barra de herramientas; al hacer clic en un área vacía se arrastra la ventana, al estilo de un navegador.
La captura de pantalla anterior muestra la ventana con un espacio de trabajo apagado seleccionado: la barra lateral ESPACIOS DE TRABAJO a la izquierda (con el nodo Cuadrícula fijado, dos espacios de trabajo mostrando su estado Apagado, una sección AUTOMATIZACIONES y el botón negro + para crear un espacio de trabajo), y el escenario mostrando el panel de control de la VM de ese espacio de trabajo: tarjetas de estadísticas de CPU, Memoria, vCPU, Disco y Tiempo de actividad, un resumen de CONFIGURACIÓN y un botón Iniciar.
La barra lateral de espacios de trabajo
La barra lateral es una lista de origen con una fila por espacio de trabajo, esté en ejecución o no. Cada fila muestra el nombre del espacio de trabajo, su mosaico de color de acento y una insignia de estado de ejecución:
| Insignia | Etiqueta de estado | Significado |
|---|---|---|
| Punto verde | — | En ejecución |
| Naranja, pulsante | Iniciando… | Arrancando |
| Punto amarillo | Suspendido | Instantánea de RAM guardada en disco |
| Punto gris | Apagado | Apagado |
Un triángulo de exclamación rojo marca un espacio de trabajo comprometido. Los espacios de trabajo en ejecución muestran sus pestañas de terminal anidadas debajo (en orden de árbol de worktrees) más un nodo Docker siempre presente, y revelan controles al pasar el cursor: extraer, cerrar (×) y + para una nueva pestaña. El menú ⋯ de cada fila ofrece acciones de ciclo de vida según el estado: Iniciar / Reanudar / Apagar / Suspender / Reiniciar, Añadir worktrees a la cuadrícula (solo en ejecución), Editar…, Duplicar, Restablecer disco y Eliminar espacio de trabajo.
Nota: Apagar y Reiniciar piden confirmación porque detienen procesos en ejecución. Suspender no lo hace: es totalmente recuperable.
Arrastra el divisor entre la barra lateral y el escenario para redimensionarla (ancho predeterminado 220 puntos). Al arrastrar por debajo de unos 100 puntos, la barra lateral se ajusta a un riel de iconos de 44 puntos; arrástrala de vuelta para expandirla. ⌃⌘S alterna el estado colapsado de la barra lateral. En el riel colapsado, las pestañas de contenedor se ocultan y los tooltips llevan el contexto del espacio de trabajo y la pestaña.
El escenario
El escenario muestra la terminal de la pestaña seleccionada. También puede cubrirse con superficies de superposición a sangre completa:
- El panel de control de la VM: haz clic en el nombre de un espacio de trabajo en la barra lateral (ver más abajo).
- La cuadrícula de terminales: haz clic en el nodo Cuadrícula fijado (consulta La cuadrícula de terminales).
- El panel de control de Docker: haz clic en el nodo Docker bajo un espacio de trabajo en ejecución para gestionar contenedores e imágenes.
- El editor de automatizaciones: desde la sección AUTOMATIZACIONES (consulta Automatización y la CLI).
Dos divisiones adicionales residen dentro del escenario en su borde derecho: el panel del navegador agéntico (⌃⌘B) y el panel del explorador de archivos (⌃⌘E).
El panel de control de la VM
Al hacer clic en el nombre de un espacio de trabajo (en lugar de en una de sus pestañas) se superpone su panel de control sobre el escenario, para cualquier estado de ejecución. Para una VM en ejecución muestra constantes vitales en vivo: CPU con un minigráfico, memoria usada de la asignada, vCPU con carga promedio, uso de disco (tomado del propio df del invitado, que es más veraz que el tamaño del clon del lado del anfitrión), tiempo de actividad y una tarjeta de Puertos en escucha que lista los sockets del invitado accesibles externamente como puntos de conexión <VM-IP>:<port> con copia de un clic. Los servicios que probablemente sean HTTP también obtienen un botón de globo que puede exponer ese único servicio a internet a través de un túnel rápido de Cloudflare (un diálogo de consentimiento único explica la descarga y los términos). Para un espacio de trabajo suspendido o apagado, el panel de control muestra en cambio la especificación de la máquina y la configuración.
La barra de acciones ofrece Nueva terminal, Suspender, Reiniciar y Apagar mientras está en ejecución, o Iniciar / Reanudar en caso contrario. Una tarjeta de CONFIGURACIÓN resume el modo de autenticación por herramienta, las salvaguardas, el escaneo de inyección de prompts y las carpetas compartidas.
Nota: Las constantes vitales se actualizan aproximadamente cada 1,5 segundos desde el invitado. Los valores en cero justo después del arranque significan que el agente del invitado aún no ha informado.
Controles de la barra de título
Un grupo de controles por VM seleccionada se sitúa en el extremo final de la barra de herramientas mientras el espacio de trabajo seleccionado está en ejecución:
| Control | Qué hace |
|---|---|
| Píldora de IP | La dirección IP de la VM en monoespaciado. Haz clic para copiar: parpadea Copiado. Tooltip: IP de la VM — haz clic para copiar. |
| Punto de transmisión | Un punto rojo pulsante que se muestra cuando se envían metadatos de sesión a bromure.io (Mac inscritos, espacios de trabajo no privados). Consulta Empresa. |
| Insignia de motor | Estado de la inferencia local: un indicador giratorio mientras el motor se calienta, un icono de cpu verde cuando está listo, naranja en caso de fallo. Consulta Modelos locales. |
| Rayo de Fusion | Alterna Fusion para este espacio de trabajo. Amarillo cuando está activado (Fusion activado — haz clic para desactivar). Deshabilitado con el tooltip Habilita al menos dos modelos para usar Fusion hasta que al menos dos proveedores tengan credenciales utilizables. |
| Explorar archivos | Abre la ventana del explorador de archivos por espacio de trabajo (consulta Traslado de archivos y el portapapeles). |
| Reiniciar la VM | Reinicia el invitado. |
| Inspeccionar traza (⇧⌘I) | Abre el Inspector de trazas. |
| Editar espacio de trabajo | Abre el editor del espacio de trabajo. |
| Extraer a su propia ventana | Mueve el espacio de trabajo a su propia ventana (ver más abajo). |
| Mostrar u ocultar el navegador agéntico (⌃⌘B) | Alterna el panel del navegador (icono de globo). |
| Mostrar u ocultar archivos del repositorio (⌃⌘E) | Alterna el panel del explorador de archivos. |
Extraer y reacoplar
Cualquier espacio de trabajo en ejecución puede extraerse de la ventana unificada a su propia ventana de una sola VM: haz clic en el icono de extracción en su fila de la barra lateral o en la barra de herramientas. Sus pestañas se convierten en una tira de píldoras tipo cápsula en la barra de título de esa ventana, y el panel conserva el estado de su VM y sus pestañas: solo cambia la ventana que lo aloja. La ventana extraída lleva los mismos controles de barra de herramientas, más un botón de reacople (Devolver esta VM a la ventana principal) y un popover de carpetas compartidas que lista las carpetas del anfitrión montadas (haz clic en una fila para abrirla en el Finder). Haz clic en el botón de reacople para plegar el espacio de trabajo de vuelta en la ventana unificada.
Trabajar con pestañas
Cada pestaña es una ventana de tmux dentro de la única sesión de tmux de la VM del espacio de trabajo. tmux tiene autoridad: el invitado publica su listado de ventanas aproximadamente cada 0,7 segundos, y el anfitrión lo replica en las filas de la barra lateral (y en la tira de píldoras de una ventana extraída). Los cambios en las pestañas, como los renombramientos, se detectan en unos 40 milisegundos.
- Nueva pestaña: pulsa ⌘T o haz clic en + en la fila del espacio de trabajo en la barra lateral.
- Cerrar pestaña: pulsa ⌘W o pasa el cursor por una fila de pestaña y haz clic en su ×. Cerrar la última pestaña termina la sesión y se enruta por la misma canalización de acción de cierre que cerrar la ventana.
- Cambiar de pestaña: pulsa ⌘1 a ⌘9. Pequeñas etiquetas de acorde aparecen junto a las nueve primeras filas del espacio de trabajo seleccionado; la numeración sigue el orden de árbol visible de la barra lateral (excluyendo las pestañas de contenedor).
Las etiquetas de pestaña muestran el programa en primer plano (claude, codex, un shell, etc.); las pestañas de worktree muestran un nombre de visualización más amigable, como "Rediseño del sitio web (claude)". Las pestañas abiertas al conectar un shell a un contenedor de Docker se anidan bajo ese contenedor en el nodo Docker en lugar de en el nivel superior.
Nota: Los índices de ventana de tmux pueden tener huecos después de cerrar pestañas; la interfaz gestiona la correspondencia, y los acordes ⌘-número siempre siguen lo que ves en la barra lateral.
Puntos de estado del agente
El icono de cada pestaña lleva un punto de estado de color que rastrea el agente que se ejecuta en ella:
| Punto | Significado |
|---|---|
| Naranja, pulsante | El agente está trabajando |
| Verde | El agente terminó |
| Rojo | El agente necesita tu intervención |
El estado se rige por hooks por ventana para Claude Code y por el proxy de tráfico para otros agentes, de modo que los puntos funcionan sin ninguna configuración dentro de la VM.
Worktrees de Git
Un worktree de git es una segunda copia de trabajo de un repositorio: otra rama extraída en su propio directorio, que comparte el historial del repositorio pero con sus propios archivos y su propio índice. Git admite muchos a la vez, de modo que se puede trabajar en varias ramas en paralelo sin guardar cambios temporalmente, volver a clonar ni cambiar de rama en el sitio.
Bromure construye líneas de trabajo agénticas paralelas sobre esa base. Cualquier pestaña de terminal cuyo directorio de trabajo esté dentro de un repositorio de git puede generar un worktree con su propia pestaña de agente anidada: un agente rediseñando el sitio en wt/website-refactoring mientras otro persigue un error en wt/login-fix, cada uno en su propia extracción, sin que ninguno tropiece con los archivos sin confirmar del otro. Cuando una línea de trabajo está lista, fusionas su rama de vuelta (o abres una pull request desde ella) y descartas el worktree. Es la forma natural de repartir una tarea entre varios agentes a la vez y observarlos en la cuadrícula de terminales.
Crear un worktree
Haz clic derecho en cualquier fila de pestaña de la barra lateral para abrir su menú contextual. Dos elementos siempre están presentes:
- Nuevo worktree…: abre el diálogo descrito más abajo. Cuando el directorio de trabajo de la pestaña no es un repositorio de git, el elemento se muestra pero deshabilitado, etiquetado como Nuevo worktree… (No está en un repositorio de git), de modo que el menú nunca queda silenciosamente vacío. Una pestaña de worktree es en sí misma una extracción, por lo que también ofrece Nuevo worktree…: así es como se ramifica un worktree a partir de un worktree.
- Nueva automatización…: siembra el editor de automatizaciones con el directorio de la pestaña (consulta Automatizaciones).
El diálogo Nuevo worktree —"Crea un worktree de git ramificado desde el commit actual de esta pestaña y abre un agente anidado en él."— recopila tres cosas:
| Campo | Propósito |
|---|---|
| Nombre de la tarea | Una etiqueta humana breve, por ejemplo Website refactoring. Se convierte en slug para el nombre de la rama y se muestra en la pestaña. |
| Menú emergente de herramienta | El agente que se lanzará en la nueva extracción: claude, codex o grok. De forma predeterminada, el agente configurado del espacio de trabajo. |
| Prompt inicial (opcional) | El primer mensaje entregado al agente cuando arranca, para que un worktree pueda empezar a trabajar sin supervisión. Déjalo en blanco para abrir el agente inactivo. |
Haz clic en Crear (o Cancelar). Bromure añade un worktree de git ramificado desde el commit actual de la pestaña en una rama llamada wt/<slug>; el slug es el nombre de la tarea en minúsculas con las secuencias de otros caracteres colapsadas a guiones simples y limitado a 40 caracteres; un nombre cuya rama ya existe recibe un sufijo -2, -3, … Luego se abre una pestaña de agente anidada en la nueva extracción, etiquetada con el nombre de la tarea y la herramienta, como "Rediseño del sitio web (claude)".
Nota: Si no se puede determinar el directorio de trabajo de la pestaña, una alerta —"El directorio de trabajo de esta pestaña aún no está disponible"— explica que el espacio de trabajo probablemente esté ejecutando un agente en la VM más antiguo, y sugiere reiniciarlo (Apagar y luego Iniciar) para que reconozca la compatibilidad con worktrees.
Cómo se anidan las pestañas de worktree
Las pestañas de worktree se anidan bajo la pestaña de la que se ramificaron, sangradas y precedidas de un pequeño glifo de rama para que los subagentes anidados se lean como ramas en lugar de pestañas normales. Como un worktree puede a su vez ramificarse, la anidación es un árbol: se admiten worktrees a partir de worktrees, y la sangría se escalona hacia dentro en cada nivel, hasta 6 niveles de profundidad. Una pestaña Conectar terminal y una pestaña Fusionar → … en ejecución se anidan bajo su worktree del mismo modo. Esto es solo un orden de visualización: cada pestaña sigue siendo una ventana de tmux corriente, y los acordes ⌘-número siguen el orden de árbol visible.
Para observar varios agentes de worktree lado a lado, usa Añadir worktrees a la cuadrícula en el menú ⋯ del espacio de trabajo, que añade a la vez a la cuadrícula de terminales todas las pestañas de worktree de ese espacio de trabajo.
Acciones de worktree
Haz clic derecho en una pestaña de worktree para ver las acciones específicas de ella: Fusionar…, Conectar terminal y (bajo un divisor) Descartar worktree.
Fusionar… — fusionar la rama de vuelta. El diálogo ejecuta la fusión en una nueva pestaña extraída en el destino; solo se fusiona el trabajo confirmado en la rama del worktree. Su selector de destino recorre la cadena de ancestros: el worktree padre inmediato, luego el padre de ese worktree, y así sucesivamente hasta la raíz del repositorio ("«branch» (raíz del repositorio)"). El padre inmediato es el valor predeterminado seguro y se selecciona por ti; elegir algo más arriba se marca como «label» ⚠︎ omite intermedios, porque esos worktrees intermedios entonces nunca reciben el cambio. Elige un destino y haz clic en Fusionar.
- Los conflictos se resuelven solos. Si la fusión entra en conflicto, el agente de codificación se inicia allí mismo en la pestaña de fusión para resolverlo automáticamente. Si se detiene con el conflicto sin resolver, la pestaña de fusión ofrece Que el agente resuelva los conflictos en su propio menú contextual para intentarlo de nuevo.
- Crear Pull Request. Cuando el espacio de trabajo tiene una credencial de GitHub (que es lo que autentica
ghdentro de la VM), el diálogo de fusión gana un tercer botón, Crear Pull Request. En lugar de fusionar localmente, envía la rama y hace que el agente abra una pull request limpia de GitHub contra el destino seleccionado. Consulta Credenciales. - Fusionar no descarta el worktree: tú mismo lo limpias una vez que estés satisfecho con el resultado.
Conectar terminal abre una pestaña de terminal simple —sin agente, solo un shell ya posicionado con cd en la extracción del worktree— anidada bajo el worktree, para que puedas inspeccionar o probar sus cambios a mano.
Descartar worktree es el paso de limpieza, y es destructivo: elimina la extracción y borra la rama. Cualquier commit de esa rama que nunca se haya fusionado se pierde, por lo que pregunta primero —"¿Descartar worktree «name»?"— y cierra la pestaña junto con la extracción.
Nota: Solo el trabajo confirmado cruza una fusión o una pull request. Los cambios sin confirmar en un worktree permanecen en ese worktree, y se pierden para siempre una vez que lo descartas.
Worktrees a partir de automatizaciones programadas
Las automatizaciones programadas también crean worktrees. Cada ejecución sin supervisión crea un worktree de git nuevo en su propia rama wt/<slug> y lanza el agente allí, de modo que una ejecución aterriza como una pestaña de worktree corriente —sangrada, conectable y fusionable exactamente como una que hayas creado a mano. Consulta Automatizaciones.
La terminal
La pestaña activa se renderiza en una superficie de terminal nativa del lado del anfitrión (libghostty, renderizada con Metal) conectada a su ventana de tmux a través de un socket virtio. El proceso hijo de la superficie es solo un bombeador de bytes, de modo que un hijo muerto —un reinicio de la VM, un socket caído— nunca pierde el estado de la terminal: la superficie simplemente vuelve a generarse y a conectarse con retroceso. Si la terminal nativa no puede arrancar, la app recurre silenciosamente al framebuffer gráfico de la VM; ambos son vistas de la misma sesión de tmux.
La apariencia —familia y tamaño de fuente, colores de fondo y primer plano, forma y parpadeo del cursor— proviene de los ajustes de Apariencia del espacio de trabajo y se aplica en vivo al guardar el perfil. Los nuevos espacios de trabajo se siembran con JetBrains Mono 12 sobre un fondo pizarra oscuro (#212734), con el primer plano tomado de tu tema de Terminal.app. Solo se renderizan fuentes de paso fijo; las familias irresolubles o proporcionales recurren a Menlo.
El zoom de fuente está disponible por superficie: ⌘+ / ⌘− / ⌘0, un pellizco en el trackpad (cada ±0,25 pasos de magnificación cambia un tamaño de fuente) y un doble toque con dos dedos para restablecer.
Los espacios de trabajo con una opacidad de ventana inferior a 1.0 obtienen una terminal de cristal esmerilado: el área de la terminal se compone contra el escritorio con un desenfoque de fondo, mientras que la barra de título, la barra lateral y el divisor permanecen opacos. La opacidad se restringe a 0.3–1.0 y se aplica en vivo al guardar el perfil.
La cuadrícula de terminales
La cuadrícula es una superficie de escenario que muestra hasta 25 terminales en vivo (la disposición crece de forma cuadrada, con un tope de 5 × 5) de cualquier mezcla de espacios de trabajo lado a lado, ideal para observar una flota de agentes de worktree. Cada celda es su propia superficie de terminal en vivo sobre esa ventana de tmux, independiente de la vista de escenario del espacio de trabajo, de modo que ambas pueden estar abiertas a la vez.
- Añadir una terminal: arrastra cualquier fila de pestaña sobre el nodo Cuadrícula fijado en la parte superior de la barra lateral (su tooltip dice "Arrastra terminales aquí para observarlas lado a lado"), o pulsa ⌘D en la terminal activa para fijarla y saltar a la cuadrícula. Añadir worktrees a la cuadrícula en el menú ⋯ de un espacio de trabajo añade a la vez todas las pestañas de worktree.
- Mostrar la cuadrícula: haz clic en el nodo Cuadrícula (o en el botón de cuadrícula del riel colapsado). Al hacer clic en una fila de miembro se enfoca su celda.
- Controles de celda: la cabecera de cada celda muestra un punto de estado, el nombre del espacio de trabajo y la etiqueta de la pestaña, con controles al pasar el cursor Abrir en el espacio de trabajo y Quitar de la cuadrícula — la terminal sigue en ejecución, más un tirador de arrastre para intercambiar posiciones de celda. Haz clic derecho en una cabecera de celda para las mismas acciones.
- Zoom: haz doble clic en una celda (o pulsa ⌘↩ en la celda enfocada) para ampliarla a escenario completo; repite para reducirla. Esc deliberadamente no reduce el zoom, porque los agentes usan Esc.
Las celdas que pertenecen a un espacio de trabajo apagado o suspendido permanecen como tarjetas de marcador de posición con una etiqueta Apagado o Suspendido y un botón Iniciar; las celdas cuya ventana de tmux desapareció se podan. La pertenencia a la cuadrícula persiste entre reinicios de la app (en ~/Library/Application Support/BromureAC/grid-layout.json).
El panel del navegador agéntico
El panel del navegador es una división a la derecha dentro del escenario que aloja un Chromium en vivo, ejecutándose en su propia VM auxiliar desechable, una por espacio de trabajo, creada de forma diferida en la primera apertura. Tanto tú como el agente lo controláis: los agentes lo controlan a través del servidor MCP de navegador integrado, y sus llamadas de herramienta pueden arrancar y revelar el navegador automáticamente para el espacio de trabajo seleccionado. El panel nunca se vuelve a abrir por sí solo después de que lo hayas cerrado manualmente.
Consejo: Esta sección cubre el navegador como un panel de la ventana de sesión. Para la guía completa de su uso —conducirlo tú mismo, dejar que el agente lo conduzca a través de las herramientas
browser_*, mantener la sesión iniciada y el modelo de privacidad— consulta El navegador integrado.
Alterna el panel con ⌃⌘B o el botón de globo de la barra de herramientas. La primera vez que lo abres, una tarjeta de consentimiento pregunta ¿Instalar el navegador? con Descargar e instalar / Ahora no: la imagen del navegador es una descarga única de aproximadamente 500 MB.
Qué puedes hacer en él
El panel es una vista de navegador sin cromo coronada por una barra de pestañas compacta al estilo de Safari:
- Atrás / adelante: botones de flecha, o ⌘[ y ⌘].
- Píldoras de pestaña: una píldora por pestaña; la píldora activa funciona también como campo de URL ("Buscar o introducir URL"). A los nombres de host sueltos se les antepone
https://; cualquier cosa que no sea una URL se convierte en una búsqueda de Google. - +: nueva pestaña (⌘T mientras el panel tiene el foco).
- DevTools: alterna las DevTools de Chromium (F12).
- Compartir: el menú estándar de compartir de macOS.
- Información del sitio: haz clic en el favicon para ver un popover de información del sitio, incluidos los detalles del certificado en las páginas HTTPS.
Como la VM del navegador comparte la misma subred NAT que las VM de los espacios de trabajo, puede cargar los servidores de desarrollo del agente directamente por la IP del espacio de trabajo: cópiala desde la píldora de IP de la barra de herramientas.
Arrastra el borde izquierdo del panel para redimensionarlo (predeterminado 640 puntos, entre 380 y 1400; la terminal siempre conserva al menos 240 puntos). Al arrastrar por debajo del mínimo se cierra el panel.
Ciclo de vida y persistencia
El navegador es desechable de forma predeterminada: su disco es un clon efímero que se elimina cuando el navegador se desmonta, de modo que las cookies y los inicios de sesión desaparecen con él. Un navegador oculto se suspende tras 10 segundos y se desmonta por completo tras 5 minutos colapsado. El estado abierto/cerrado del panel se recuerda por espacio de trabajo mientras la app se ejecuta, pero deliberadamente no entre reinicios de la app: el navegador efímero tampoco sobrevive a un reinicio.
Para conservar los inicios de sesión, habilita Mantener la sesión iniciada en los sitios web en los ajustes del Navegador del espacio de trabajo: el perfil de Chromium reside entonces en un disco cifrado por espacio de trabajo y sobrevive a los desmontajes. Alternar el ajuste reinicia el navegador del espacio de trabajo (se te advierte al guardar).
Nota: Mientras la vista del navegador tiene el foco del teclado, ⌘Q y ⌘Tab son capturados por el invitado. Haz clic en la terminal o en la barra lateral para recuperarlos.
El panel del explorador de archivos
El panel del explorador de archivos (cabecera ARCHIVOS) muestra el repositorio de git de la pestaña activa como un árbol de archivos fuente al estilo de un IDE. Se abre por sí solo en el momento en que el directorio de la pestaña activa entra en un repositorio de git —un cd a un repositorio, o cambiar a una pestaña que ya esté dentro de uno— de modo que rara vez lo abres a mano; también puedes alternarlo con ⌃⌘E o el botón Mostrar u ocultar archivos del repositorio (⌃⌘E) de la barra de herramientas. Entrar en un repositorio es el desencadenante, de modo que un espacio de trabajo que nunca visita un repositorio simplemente nunca muestra el panel.
- Estado de git de un vistazo: los archivos se colorean por estado con insignias de una letra (M/A/U/D/R/!), las carpetas que contienen cambios llevan un punto naranja, y una píldora muestra el recuento de archivos cambiados. Un filtro "solo archivos cambiados" y un botón de actualización manual se sitúan en la cabecera.
- Diffs y vistas previas: al seleccionar un archivo se abre una división de detalle con un control segmentado Diff / Archivo: un diff unificado coloreado con recuentos +/− y márgenes de números de línea, o una vista previa renderizada (Markdown renderizado, archivos fuente con resaltado de sintaxis, imágenes y binarios señalados). Los archivos eliminados se muestran tachados —"El archivo fue eliminado — cambia a Diff para ver qué se quitó." Los archivos sin seguimiento y recién añadidos no tienen diff, solo una vista previa.
- Visor emergente: un botón de extracción abre el detalle en una ventana Visor de archivos separada, apta para pantalla completa, que sigue en vivo la selección del panel.
- Acciones de worktree: una barra justo debajo de la cabecera gestiona los worktrees de git del repositorio actual sin abrir el menú de la barra lateral: Nuevo worktree… siempre está disponible dentro de un repositorio, y Fusionar y Eliminar aparecen cuando la pestaña activa es en sí misma un worktree. Ejecutan las mismas operaciones descritas en Worktrees de Git: Nuevo worktree… abre el diálogo de creación, Fusionar abre el selector de destino, y Eliminar descarta el worktree y su rama tras confirmación. (Solo sesiones locales; en una réplica remota, gestiona los worktrees desde el menú de pestañas de la barra lateral.)
Todos los datos se recopilan ejecutando git (y head) dentro del invitado a través del canal de shell del socket virtio: el panel funciona incluso sin carpeta compartida, y para espacios de trabajo remotos. El árbol se actualiza automáticamente cada 4 segundos mientras está visible, y los directorios que contienen cambios se expanden automáticamente una vez por repositorio.
El panel se abre y se cierra al estilo de un IDE por sí solo: entrar en un repositorio (un cd a uno, o cambiar a una pestaña cuyo directorio esté en uno) lo abre; salir a un directorio que no sea un repositorio lo cierra. Un cierre manual prevalece hasta que cambias de repositorio. Arrastra el borde izquierdo del panel para redimensionarlo (predeterminado 260 puntos, entre 200 y 1000; por debajo de 200 se cierra).
Nota: El árbol de archivos es de solo lectura: nunca edita el contenido de los archivos (la barra de worktree ejecuta operaciones de git, no ediciones de archivos). Límites: 20 000 archivos listados (el árbol se trunca a partir de ahí), 512 KB por vista previa, 1 MB por diff.
Traslado de archivos y el portapapeles
Los archivos y el contenido del portapapeles cruzan el límite anfitrión/VM de cuatro maneras: la ventana del explorador de archivos, las carpetas compartidas, el portapapeles de la terminal y el pegado de imágenes.
La ventana del explorador de archivos
Haz clic en el botón Explorar archivos de la barra de herramientas (icono de carpeta) para abrir una ventana al estilo del Finder titulada Archivos — «workspace» para trasladar archivos dentro y fuera de la VM. Su barra lateral de Ubicaciones ofrece Home —el /home/ubuntu real del invitado, explorado en vivo a través del servicio de archivos del socket virtio— más una entrada por cada carpeta compartida del anfitrión (explorada directamente en el anfitrión). Las filas muestran icono, nombre, tamaño y fecha de modificación, y el listado se actualiza automáticamente cada 1,5 segundos.
- Copiar hacia fuera: arrastra un archivo desde la ventana al Finder. Los archivos del invitado se descargan de forma diferida al soltar.
- Copiar hacia dentro: suelta archivos en cualquier parte del panel para copiarlos en el directorio actual. Las transferencias se dividen en fragmentos (6 MB) con una píldora de progreso "Copiando … dentro/fuera"; las colisiones de nombres reciben sufijos " copia" al estilo del Finder; las carpetas soltadas llegan enteras.
- Barra de herramientas: flecha arriba (Carpeta contenedora), una miga de pan de ruta del invitado en monoespaciado, Nueva carpeta, Mostrar en el Finder (solo ubicaciones del anfitrión) y Actualizar.
- Menú contextual: Abrir, Mostrar en el Finder (filas del anfitrión) y Mover a la papelera (anfitrión) o Eliminar (invitado).
- Doble clic: los archivos del anfitrión se abren con su app predeterminada; los archivos del invitado se descargan primero a una caché por espacio de trabajo y luego se abren.
Nota: Los archivos ocultos con punto no se muestran. Las ubicaciones del invitado necesitan una VM en vivo ("El espacio de trabajo debe estar en ejecución para explorar sus archivos."), y una VM recién arrancada puede informar brevemente de "El agente en la VM se está actualizando — inténtalo de nuevo en unos segundos."
Carpetas compartidas
Para el trabajo continuo en proyectos, las carpetas compartidas suelen ser mejores que las transferencias puntuales: se pueden montar hasta 8 carpetas del anfitrión en la VM, cada una enlazada simbólicamente en el home del invitado como ~/<basename> (con deduplicación automática como src-2). Configúralas en los ajustes de Carpetas del espacio de trabajo.
Portapapeles
El portapapeles se puentea a través del propio protocolo de la terminal: no hay ningún agente separado que configurar:
- Invitado → Mac: copiar dentro del invitado (modo de copia de tmux, OSC 52) llega automáticamente al portapapeles de macOS; soltar una selección de ratón en tmux la copia.
- Mac → invitado: ⌘V pega el portapapeles de macOS en la terminal usando pegado entre corchetes.
- Selección: un arrastre de ratón simple selecciona texto al estilo de macOS; ⌘C copia la selección del lado del anfitrión. Seleccionar nunca copia por sí solo.
Pegar imágenes
Pulsar ⌘V con una imagen en el portapapeles se convierte en una transferencia de archivo: la imagen se escribe en el invitado en /home/ubuntu/.bromure/pastes/clipboard-<timestamp>-<id>.<ext>, y la ruta del archivo del invitado se pega como texto en su lugar, de modo que el agente pueda leer la imagen desde el disco. Un chip de miniatura transitorio aparece en el cursor con una línea de progreso durante la subida, permanece brevemente al completarse (rojo en caso de fallo) y se descarta con tu siguiente pulsación de tecla.
Se reconocen como imágenes: los archivos de imagen copiados desde el Finder (solo cuando todos los elementos copiados son imágenes) y los mapas de bits sueltos como capturas de pantalla o "Copiar imagen" de un navegador; cualquier cosa que también lleve un sabor de texto se pega como texto de la forma habitual, de modo que un ⌘V corriente nunca se secuestra. Los pegados están limitados a un total de 96 MB (los más grandes recurren a texto), y los archivos de pegado con más de 7 días de antigüedad se limpian automáticamente dentro del invitado. El directorio de pegado reside en la imagen del home, de modo que las rutas pegadas sobreviven a un reinicio de la VM.
Consejo: Los enlaces funcionan en la otra dirección automáticamente: las URL que el agente o una herramienta CLI abren dentro del invitado (inicios de sesión OAuth,
xdg-open) se retransmiten al anfitrión y se abren en tu navegador Mac predeterminado. Solo se retransmiten las URLhttp/https, con límite de frecuencia; los enlacesmailto:se descartan deliberadamente.
Puntos de control y reversión
Bromure toma puntos de reversión automáticos para que una sesión que va mal pueda revertirse sin un restablecimiento completo.
Qué se captura y cuándo
En cada arranque exitoso de un espacio de trabajo, la app crea silenciosamente una instantánea de ambas capas de almacenamiento como clones copy-on-write bajo el directorio checkpoints/ del espacio de trabajo:
- el disco de sistema (
disk.img), y - la imagen de home ext4 (
home.img, almacenada bajocheckpoints/home/), para los espacios de trabajo con el modelo de home moderno.
Como un punto de control solo se toma tras un arranque que produjo una terminal funcional, cada punto de control tiene probada su capacidad de arranque. La retención sigue una escalera por niveles: los últimos arranques se conservan incondicionalmente, luego uno por día durante una semana, luego uno por semana durante un mes. Los puntos de control son gratuitos de crear pero consumen espacio de disco real a medida que el disco en vivo diverge de ellos.
Restaurar el home
Restaurar home… reside en el panel de Recursos del editor del espacio de trabajo, en la fila de almacenamiento Tu carpeta home (está deshabilitado mientras el espacio de trabajo está en ejecución: cierra primero la ventana de sesión).
Al hacer clic se listan los puntos de reversión disponibles en un popup; como explica el diálogo, "cada uno es el home tal como estaba cuando comenzó esa sesión". Elige uno y confirma: el home actual se registra en un punto de control primero, de modo que una restauración puede a su vez deshacerse. Un espacio de trabajo que nunca ha arrancado con el modelo de home ext4 muestra en cambio Aún no hay puntos de control de home.
Restablecer el disco de sistema
Restablecer a la base…, en la fila Disco de sistema del espacio de trabajo del mismo panel (también Restablecer disco en el menú ⋯ de la barra lateral), es la opción nuclear para la capa de sistema: elimina disk.img de modo que el siguiente arranque vuelve a clonar una copia nueva de la imagen base. La confirmación —"¿Restablecer el disco de sistema de «name» a la base?"— detalla lo que se borra: todo lo que instalaste con sudo apt install, las modificaciones a /etc, /var, /usr, /opt y la configuración de todo el sistema. Tu carpeta home queda intacta: los proyectos, los dotfiles, las claves SSH y el historial del shell sobreviven todos.
El restablecimiento se bloquea mientras la VM está en ejecución, y un restablecimiento también descarta cualquier instantánea de RAM y estado de pestañas guardados: un disco nuevo más RAM antigua se corromperían al instante.
Nota: Los puntos de control responden a una pregunta diferente que la suspensión. La suspensión preserva el estado en ejecución de la sesión actual para que puedas reanudarla; los puntos de control preservan el contenido del disco en momentos conocidos como buenos para que puedas revertir un entorno roto. Una instantánea de suspensión se descarta cada vez que el disco al que pertenece se restablece o se revierte.
Consejo: Para acceso forense a un punto de control o a la imagen de home de un espacio de trabajo detenido sin arrancar nada, Espacios de trabajo ▸ Abrir archivo ext4… abre cualquier
.imgext4 en un explorador de solo lectura al estilo del Finder: puedes previsualizar y extraer archivos directamente en el Mac. Consulta Avanzado para conocer el explorador completo, la edición en el sitio y la integración defsck.
Cerrar una sesión
Cerrar una sesión —mediante la × de la fila del espacio de trabajo en la barra lateral, el botón de cierre de su ventana extraída o ⌘W en su última pestaña— resuelve la preferencia Al cerrar la ventana del espacio de trabajo del panel de ajustes Generales:
| Acción | Qué hace |
|---|---|
| Ejecutar en segundo plano | Solo desacopla la interfaz. La VM sigue en ejecución sin interfaz —los agentes siguen trabajando— y puedes reacoplarte en cualquier momento desde la barra lateral. |
| Suspender | Pausa la VM y guarda su RAM en disco (vm.state en el almacenamiento del espacio de trabajo). El siguiente arranque la restaura casi al instante, con las mismas terminales; la barra de pestañas también se captura (tabs.json) de modo que la sesión restaurada muestra sus pestañas de inmediato. |
| Apagar | Un apagado ACPI limpio. Los procesos en curso se detienen. El disco de sistema y el home se conservan: no se destruye nada. Un apagado completo borra cualquier estado de suspensión guardado, de modo que el siguiente arranque es en frío. |
| Preguntar (predeterminado) | Muestra un prompt cada vez: "¿Cerrar «name»?" con los botones Ejecutar en segundo plano, Suspender, Apagar y Cancelar, y la explicación "Ejecutar en segundo plano mantiene la VM en ejecución para que puedas reacoplarte más tarde. Suspender guarda su estado en disco. Apagar la apaga." |
Algunos detalles que vale la pena conocer:
- Identidad de suspensión/reanudación: la restauración requiere exactamente la misma configuración de VM, por lo que el identificador de máquina del espacio de trabajo, la dirección MAC y las rutas de los recursos compartidos se persisten junto a la instantánea. Al reanudar, el anfitrión hace ping al invitado para resincronizar su reloj.
- Fallos de restauración: si una instantánea guardada no puede restaurarse en un arranque interactivo, la app recurre a un arranque nuevo. Los inicios iniciados por automatización abortan en cambio: nunca destruyen silenciosamente una sesión suspendida.
- Cambiar carpetas compartidas mientras está suspendida: una instantánea no puede reanudarse contra un conjunto de recursos compartidos diferente, por lo que editar las carpetas compartidas fuerza una confirmación Descartar VM suspendida…; el siguiente arranque es en frío. Los archivos del home y de las carpetas compartidas no se ven afectados.
- Reinicio iniciado por el invitado: ejecutar
rebootdentro del invitado no termina la sesión: la app detecta la intención de reinicio y relanza la VM en el sitio. - Destruir datos es siempre explícito: un espacio de trabajo apagado conserva su disco y su home. Los datos solo se destruyen mediante Restablecer a la base…, Borrar home…, Eliminar espacio de trabajo (todos confirmados; consulta Espacios de trabajo) o el borrado forzoso tras un compromiso por exfiltración de credenciales, e incluso entonces se conservan los ajustes de tu perfil, los tokens y las claves SSH, y las carpetas compartidas del anfitrión nunca se tocan.
Atajos de teclado
Los acordes de la ventana de sesión son propiedad del anfitrión: se interceptan antes de que la terminal los vea, de modo que funcionan independientemente de lo que se ejecute dentro de la VM.
Ventana y pestañas
| Atajo | Acción |
|---|---|
| ⌘T | Nueva pestaña |
| ⌘W | Cerrar pestaña (la última pestaña cierra la sesión) |
| ⌘1 – ⌘9 | Seleccionar pestaña por orden de fila de la barra lateral |
| ⌘D | Fijar la terminal activa a la cuadrícula y revelarla |
| ⌘↩ | Ampliar / reducir la celda de cuadrícula enfocada |
| ⌘N | Abrir el gestor de espacios de trabajo |
| ⌃⌘S | Alternar la barra lateral |
| ⌃⌘E | Alternar el panel del explorador de archivos |
| ⌃⌘B | Alternar el panel del navegador agéntico |
| ⇧⌘I | Abrir el Inspector de trazas |
Terminal
| Atajo | Acción |
|---|---|
| ⌘C | Copiar la selección |
| ⌘V | Pegar (las imágenes se suben al invitado como archivos) |
| ⌘+ / ⌘− / ⌘0 | Tamaño de fuente mayor / menor / restablecer |
| Pellizco / doble toque con dos dedos | Ampliar fuente / restablecer zoom |
Panel del navegador (mientras está enfocado)
| Atajo | Acción |
|---|---|
| ⌘T / ⌘W | Nueva / cerrar pestaña del navegador |
| ⌘R | Recargar |
| ⌘[ / ⌘] | Atrás / adelante |
| ⌘L | Enfocar el campo de dirección |
| F12 | Alternar DevTools |
Nota: Una protección de repetición automática de 80 ms significa que mantener pulsado un acorde lo dispara una vez; las nuevas pulsaciones deliberadas se disparan todas.