Un repositorio, una flota de agentes: git worktrees en Bromure Agentic Coding
Ejecuta dos agentes de programación sobre un mismo repositorio y chocarán en el mismo árbol de trabajo. Los worktrees de git resuelven esto con N checkouts independientes sobre un historial compartido. Bromure Agentic Coding los convierte en una primitiva de un solo clic: escribe el nombre de una tarea y obtén una rama aislada, un checkout aislado y un agente trabajando en ella, cada uno en su propia pestaña dentro de una VM desechable.

Los agentes de programación van rápido; tu repositorio es lo que los frena. Bromure Agentic Coding le da a cada tarea su propia rama, su propio checkout y su propio agente, cada uno en su propia pestaña.
Los agentes de programación van rápido. Tu repositorio es lo que los frena. Ejecuta dos agentes sobre un mismo checkout y chocarán: el mismo árbol de trabajo, los mismos archivos sin confirmar, la misma rama. Un agente ejecuta git checkout y el trabajo del otro desaparece por debajo.
Git resolvió esto con los worktrees. Bromure Agentic Coding convierte el worktree en una primitiva de un solo clic: cada tarea obtiene su propia rama, su propio checkout y su propio agente, cada uno en su propia pestaña.
Primero, ¿qué es un worktree de git?
Un clon de git te da un solo árbol de trabajo: un directorio de archivos con checkout, un HEAD, un índice. Para trabajar en dos ramas a la vez, haces malabares (git stash, cambiar, trabajar, volver a cambiar, git stash pop y cruzar los dedos) o creas un segundo clon, que copia toda la base de datos de objetos y no comparte ninguna vista de tus ramas locales.
git worktree add es la tercera opción. Adjunta un árbol de trabajo adicional al repositorio que ya tienes:
git worktree add -b fix-login ../fix-login HEAD
Eso te da un nuevo directorio con un checkout completo sobre una rama nueva, compartiendo el mismo almacén de objetos .git que tu checkout principal. Cada worktree mantiene su propio HEAD, su índice y su estado sin confirmar; un commit en uno aparece en todos ellos. Crear un worktree no copia ningún objeto, así que apenas cuesta nada. Fusionar el trabajo de vuelta es un git merge local: sin push, sin pull, sin viaje de ida y vuelta al remoto.
Los worktrees te dan N directorios de trabajo independientes sobre un historial compartido.
Por qué los worktrees encajan con la programación agéntica
Un agente de programación autónomo necesita un árbol de trabajo que pueda destrozar: editar archivos, ejecutar compilaciones, dejar estados a medias por ahí mientras piensa. Eso no se puede compartir.
Los worktrees se corresponden con la forma en que delegas:
- Una tarea, un worktree, un agente. "Refactorizar el sitio web" y "arreglar el test intermitente" reciben cada uno un checkout privado. Ninguno puede pisotear el trabajo sin confirmar del otro, ni el tuyo.
- Lo bastante baratos como para ser informales. Como un worktree no copia historial, crear uno para una tarea de 20 minutos tiene sentido. No clonarías el repositorio para eso.
- Fusiona en el sitio. Todos los worktrees comparten un repositorio, así que integrar el trabajo terminado de un agente es una fusión local de una rama local. Revisas un diff, no una tubería de pull-request.
Claude Code, Codex y los demás funcionan perfectamente dentro de un worktree. La fricción está en la ceremonia: elegir un directorio, inventar un nombre de rama, git worktree add, copiar tu .env (los archivos gitignored no vienen incluidos), cd, lanzar el agente, pegar la tarea. Y luego limpiarlo todo después.
Bromure Agentic Coding elimina la ceremonia.
Los worktrees en Bromure Agentic Coding
Un repaso rápido para quien llegue nuevo: Bromure Agentic Coding ejecuta tus agentes de programación dentro de VMs de Ubuntu desechables sobre Virtualization.framework de Apple. Un workspace es una VM; monta la carpeta de tu proyecto por virtiofs (sin copiar); cada pestaña de un workspace es un terminal que ejecuta lo que quieras, normalmente un agente. La frontera de la VM permite que un agente en modo autonomía total ejecute rm -rf o curl | bash cuanto quiera sin tocar tu Mac.
Los worktrees añaden un segundo eje de aislamiento. La VM aísla la máquina; el worktree aísla el árbol de trabajo, de modo que varios agentes pueden compartir un workspace y un repositorio sin compartir estado.

Cómo crear uno
Desde cualquier pestaña cuyo directorio sea un repositorio de git, puedes:
- hacer clic derecho en la pestaña y elegir New worktree…, o
- pulsar ⇧⌘G (el menú Workspaces también lo incluye, junto a Merge worktree ⇧⌘M).
Los atajos funcionan incluso mientras la VM se apodera de tu teclado: el gestor de ventanas del invitado captura el atajo y se lo devuelve a la app.


Aparece un pequeño diálogo: un nombre de tarea, un selector de herramienta (claude, codex o grok, con la herramienta del workspace por defecto) y un prompt inicial opcional.

Pulsa Create y, dentro de la VM, Bromure:
- corta una rama
wt/<slug>a partir del commit actual de la pestaña (nombre de tarea "Website refactoring" → ramawt/website-refactoring), - le hace checkout en
~/.bromure/worktrees/<repo>/<slug>, - copia los archivos gitignored que tu repositorio liste en
.worktreeinclude(más sobre esto abajo), - abre una nueva pestaña en ese directorio, y
- inicia la herramienta que elegiste, instalándola primero si la VM no la tiene, con tu prompt inicial como semilla.
Unos segundos después de escribir el nombre de una tarea, un agente está trabajando en ella en su propia rama.
Vigilar una flota
Cada worktree es una pestaña en la lista de fuentes del workspace, marcada con un glifo de rama e indentada bajo la pestaña de la que surgió. El icono muestra qué agente se está ejecutando, y un punto de estado muestra su estado: naranja parpadeante mientras trabaja, verde cuando ha terminado, rojo cuando te necesita. Un vistazo a la barra lateral responde a "¿quién está bloqueado?" sin abrir nada.

Los worktrees se anidan. Una pestaña de worktree es en sí misma un checkout de git, así que New worktree… también funciona ahí. El agente que refactoriza el sitio web puede generar un subagente que pruebe una variante arriesgada en una rama hija de wt/website-refactoring, indentada un nivel más profundo.
Fusionar de vuelta
Cuando el punto de estado de un worktree se pone verde, haz clic derecho y elige Merge… (o ⇧⌘M). Como los worktrees se anidan, el diálogo pregunta dónde fusionar: el popup de destino enumera la cadena de ancestros, desde la rama padre inmediata hasta el checkout raíz del repositorio, con un sufijo de advertencia en cualquiera que salte intermedios.


La fusión no oculta nada. Se ejecuta en una nueva pestaña en el checkout del destino, así que la ves suceder. Solo el trabajo confirmado en la rama del worktree se fusiona. Dos resultados:
- Limpio: la pestaña imprime
bromure: merged wt/website-refactoring into main.y espera a que pulses Enter. - Conflictos: la pestaña imprime
bromure: merge conflicts — starting claude to resolve…y lanza al agente allí mismo en el checkout con conflictos, con instrucciones para resolver los conflictos, añadirlos al stage, resumir lo que hizo y confirmar solo después de que tú lo apruebes. ¿Prefieres resolver a mano y cambiar de opinión más tarde? El menú contextual de la pestaña de fusión mantiene una acción Have the agent resolve conflicts.


Fusionar deja el worktree en su sitio. Puede que quieras otra ronda de cambios, o fusionar la misma rama más arriba en la cadena. Cuando hayas terminado definitivamente, clic derecho → Discard worktree. Esa es la acción destructiva, y lo dice: elimina el checkout, borra la rama wt/ y te advierte de que perderás cualquier commit no fusionado.

Los detalles que lo hacen vivible
Los archivos gitignored vienen incluidos, si lo pides. Un worktree recién creado es un checkout limpio, así que tu .env, tus certificados locales y tus tokens de herramientas no están en él, y un agente que no puede arrancar el servidor de desarrollo no sirve de mucho. Coloca un archivo .worktreeinclude en la raíz de tu repositorio (una ruta relativa por línea, la misma convención que usa Claude Code) y Bromure copia esos archivos desde el checkout principal a cada nuevo worktree.
Tus cambios sin confirmar siguen siendo tuyos. Bromure corta un worktree a partir del commit actual de la pestaña, no de su estado sucio. El trabajo a medias en la pestaña padre se queda fuera del checkout del agente, y lo contrario también se cumple.
Los worktrees sobreviven a un reinicio. Las pestañas son efímeras, pero los checkouts y las ramas viven en disco, y Bromure mantiene un pequeño registro por repositorio. Apaga el workspace, arráncalo una semana después, y tus pestañas de worktree reaparecen con las mismas ramas, las mismas etiquetas y los agentes relanzados.
Funciona por SSH. Puedes acceder a cada workspace de forma remota, y la interfaz de terminal tiene plena paridad de worktrees: un menú 🌿 Worktrees… enumera cada pestaña de worktree y de fusión del repositorio, y puedes crear, fusionar, resolver y descartar desde un teléfono por SSH igual que lo harías en el Mac.
Los fallos no tumban la app. Las operaciones de worktree se ejecutan dentro del invitado. Si una falla (el directorio desapareció, no es un repositorio de git, un hipo de tmux), obtienes una entrada de log y una hoja no bloqueante en la ventana del workspace, no un modal que congela todo lo demás.
Dos tipos de aislamiento, un solo flujo de trabajo
Los worktrees y las VMs resuelven mitades diferentes del mismo problema. El worktree aísla el estado del repositorio, de modo que los agentes en paralelo no puedan corromper el trabajo del otro. La VM aísla todo lo demás, desde el sistema de archivos hasta la red y las credenciales, así que puedes dejar que esos agentes se ejecuten sin supervisión. Bromure Agentic Coding compone los dos: escribe el nombre de una tarea, elige un agente y obtén una rama aislada, un checkout aislado y una máquina aislada, todo detrás de una sola pestaña.
Todo el flujo tiene tres pulsaciones de profundidad: ⇧⌘G para delegar, un punto verde cuando termina, ⇧⌘M para fusionar. El resto es git, del tipo aburrido y fiable.
Los worktrees requieren Bromure Agentic Coding 4.0.8 o posterior. Bromure Agentic Coding se distribuye como parte de Bromure: descárgalo en bromure.io/download. El soporte de worktrees también necesita un workspace que ejecute el agente in-VM actual, así que reinicia una vez los workspaces antiguos para incorporarlo.