Foremerge: coordinar agentes de IA antes de que choquen en Git

Por qué Git ya no alcanza cuando tenés varios agentes de código en paralelo

Foremerge 0.5.0 es un protocolo de coordinación open source (Apache 2.0) que vive por encima de Git y que acaba de aparecer en GitHub con 403 estrellas. Su promesa es directa: detectar conflictos de intención entre agentes de codificación paralelos antes de que se conviertan en conflictos de código. Es decir, antes de que Git siquiera tenga algo que decirte.

El contexto importa: hace apenas unos días, Anthropic rediseñó Claude Code Projects para coordinar múltiples threads en paralelo con un coordinador que reparte tareas (reportado por WersM el 17 de septiembre). Un día después, el 18 de septiembre, Anthropic sumó soporte nativo para el estándar AGENTS.md en Claude Code 2.1.277 (según CryptoBriefing), uniéndose a un formato ya presente en más de 60.000 repositorios. Y Cursor presentó Cursor 3, una interfaz "agent-first" pensada para correr varios agentes a la vez, según Wired.

Todo el ecosistema está migrando del modelo "un humano, un agente, una conversación" al de "un humano supervisando una flota". Foremerge entra en esa carrera con una propuesta concreta: avisos advisory, deterministas, sin locks, y compatibles con Claude Code, Codex y Cursor desde el primer minuto.

🤖 La IA no es solo para leer sobre ella

En la comunidad la aplicamos: automatización, agentes IA y herramientas reales para emprender, no solo para informarte.

👥 Aplicarla en la comunidad

El problema que Git no puede ver

El ejemplo del propio README lo deja claro. Imaginá dos agentes trabajando en paralelo sobre el mismo proyecto:

  • Agente A: "Reemplazar PaymentService por StripePaymentService".
  • Agente B: "Agregar soporte de PayPal al PaymentService actual".

Ambos editan archivos distintos. Ninguna línea se superpone. Git fusiona los dos cambios sin quejarse y el trabajo de PayPal queda colgando sobre una clase que ya nadie llama. Es un bug silencioso: cada agente hizo lo correcto, pero el conjunto está roto.

Git compara texto, no intención. Foremerge invierte esa lógica: le pide a cada agente que declare qué scopes semánticos va a tocar (un símbolo, una API, un schema, una migración, un contrato) y con qué operación (replace, extend, delete, etc.). La detección es determinista: "Consolidar pagos en Stripe" y "Reemplazar PaymentService con Stripe" llegan al mismo veredicto porque ambos declaran la misma operación sobre el mismo scope.

Si dos planes colisionan, Foremerge nombra a los agentes, explica por qué chocan y sugiere cómo dividir el trabajo, por ejemplo introducir una abstracción estable como PaymentProvider. La decisión final sigue siendo tuya: el sistema nunca bloquea ni lockea archivos, porque un agente colgado no puede paralizar a toda la flota.

Cómo funciona Foremerge por dentro

Foremerge se instala con una línea y se inicializa en cinco minutos desde la raíz del repo:

curl -fsSL https://foremerge.com/install.sh | sh
foremerge init
foremerge setup all

El estado vive en un SQLite local dentro del directorio común de Git (<git-common-dir>/foremerge/state.sqlite3). Los worktrees de Git siguen siendo los archivos aislados de cada agente, pero la "conciencia compartida" se almacena en esa base común. Un daemon expone una API HTTP en 127.0.0.1:47811 con autenticación por bearer token, y un servidor MCP sobre stdio permite que cualquier cliente compatible lo invoque como herramienta nativa.

El flujo semántico es:

  1. Registrar agente y modelo con foremerge agent register --name X --model MODEL (guarda provenance).
  2. Publicar intent con foremerge intent publish --scope symbol:PaymentService=replace.
  3. Claim advisory del scope con foremerge work claim (no es exclusivo, sirve como señal).
  4. Trabajar en el worktree aislado y commitear.
  5. Publicar ChangeSet con archivos, símbolos, contratos y Git ref.
  6. Validar con un check registrado por nombre (ej. cargo test --all-targets), ejecutado por Foremerge contra la fingerprint exacta del candidato.
  7. Aceptar el ChangeSet solo si pasa validación, no hay conflictos HIGH sin resolver y el worktree está limpio.
  8. Registrar el commit de integración real cuando el PR o merge llega a main.

Los scope kinds soportados incluyen symbol, api, schema, config, infra, test, migration, env, file, component, contract y domain. Los paths de archivo solos son demasiado finos: pierden colisiones cross-language y de configuración. Por eso Foremerge incentiva scopes semánticos.

Claims, ChangeSets y la puerta de verificación

La pieza que más vale para founders: la puerta de verificación es owned by Foremerge, no por el agente. Cuando un agente reporta "pasé los tests", eso es solo provenance. Para aceptar el cambio, Foremerge corre el comando exacto (cargo test --all-targets, pytest, npm run build, lo que definas) contra la fingerprint del candidato. Si el árbol cambió después, el intento queda marcado como no autoritativo, pero su output queda consultable para auditoría.

Esto encaja con una práctica de ingeniería seria: registrar un check rápido y honesto que detecte handoffs rotos (un build, un typecheck, un smoke test) en lugar de la suite completa de CI. Si no hay nada significativo para verificar, se puede declarar la policy como advisory y los cambios aceptados se marcan como UNVERIFIED con el motivo, así la auditoría nunca miente sobre qué corrió y qué no.

Para equipos que generan artefactos descartables (cobertura, reports), se pueden excluir paths exactos o por prefijo sin tocar archivos tracked. El digest de la policy normalizada entra en la fingerprint del candidato, lo que evita que la policy se use para evadir resultados.

MCP: cómo lo descubren Claude Code, Codex y Cursor

foremerge setup all instala el skill nativo y la entrada MCP en los clientes detectados. Funciona con Claude Code, Codex y Cursor. Si ya tenés un fmg en tu PATH, el instalador no lo pisa. La entry MCP queda en .codex/skills, .claude/skills, .cursor/skills o .agents/skills según corresponda, y trae 18 herramientas que cubren todo el ciclo: register_agent, publish_intent, claim_work, query_work, check_conflicts, publish_changeset, run_verification, accept_changeset, record_commit, discard_work, entre otras.

El MCP no requiere un daemon HTTP separado; corre sobre stdio y habla directo contra la misma base SQLite. Para inspección humana, el daemon loopback sirve rutas /v1/... autenticadas y un endpoint público /healthz y /readyz para liveness.

Qué significa esto para tu startup

Si en tu equipo ya lanzan varios agentes sobre el mismo repo (Claude Code, Codex, Cursor o lo que venga), Foremerge te da tres cosas concretas que hoy Git no te da:

  1. Visibilidad de intención antes del daño. En vez de enterarte del choque cuando el PR ya rompe producción, lo ves cuando los agentes declaran lo que van a tocar.
  2. Auditoría reproducible. La cadena de eventos semánticos tiene hash chaining, los Git refs reales se registran, y la verificación queda guardada con su comando exacto y su fingerprint.
  3. Cero vendor lock-in. Es open source Apache 2.0, en Rust, con CLI, JSON API, MCP y SQLite local. Lo podés correr en CI, en una VM o en tu laptop.

Dos acciones que podés tomar esta semana

  • Probalo con un test controlado en tu repo más activo: instalá Foremerge con el snippet de la Quickstart, registrá dos agentes en worktrees distintos sobre el mismo módulo y publicales intents que se pisen a propósito (por ejemplo, uno replace y otro extend sobre el mismo symbol:). Vas a ver el advisory HIGH antes de que se escriba una línea. Cinco minutos desde init hasta el primer conflicto detectado.
  • Definí un "trusted check" corto y honesto por repo: un cargo test --all-targets, un pytest -x, un npm run build && npm run typecheck. Ese check se vuelve la puerta de aceptación de cualquier ChangeSet aceptado por tus agentes. Si todavía no tenés suite, declaralo como advisory y dejá el audit trail diciendo UNVERIFIED.

Lo que el MVP todavía no te garantiza

Conviene leer las limitaciones antes de adoptarlo como gate de integración. La detección de conflictos es determinista pero heurística: puede perder conceptos sinónimos o avisar de trabajos compatibles. Los claims son advisory, nunca exclusivos. La cadena de eventos detecta cambios internos, pero no es firma criptográfica ni attestation externa. El SQLite es local, no es consenso distribuido; si lo montás en red, no estás ganando durabilidad distribuida. Y Foremerge no reemplaza code review, CI, security scanning, ni las reglas del hosting de Git.

Dicho esto, en un momento donde Cursor 3 (Wired), Claude Code Projects (WersM) y el estándar AGENTS.md (CryptoBriefing) están empujando hacia workflows multi-agente, tener un protocolo que declare intención antes de tocar código deja de ser un capricho y empieza a ser infraestructura básica.

Fuentes

🤖 La IA no es solo para leer sobre ella

En la comunidad la aplicamos: automatización, agentes IA y herramientas reales para emprender, no solo para informarte.

👥 Aplicarla en la comunidad

Daily Shot: Tu ventaja táctica

Lo que pasó en las últimas 24 horas, resumido para que tú no tengas que filtrarlo.

Suscríbete para recibir cada mañana la curaduría definitiva del ecosistema startup e inversionista. Sin ruido ni rodeos, solo la información estratégica que necesitas para avanzar:

  • Venture Capital & Inversiones: Rondas, fondos y movimientos de capital.
  • IA & Tecnología: Tendencias, Web3 y herramientas de automatización.
  • Modelos de Negocio: Actualidad en SaaS, Fintech y Cripto.
  • Propósito: Erradicar el estancamiento informativo dándote claridad desde tu primer café.

📡 El Daily Shot Startupero

Noticias del ecosistema startup en 2 minutos. Gratis, todos los días.

Share to...