branchlift
BranchLift
Git para el estado de backend de tus agentes de IA.
Los worktrees de Git aíslan el código. BranchLift aísla y versiona el estado de PostgreSQL, MySQL, MongoDB, Redis, Kafka y Docker Compose detrás de cada agente de codificación paralelo.
Cada agente obtiene un backend real que puede mutar sin chocar con otro agente. Ese estado puede confirmarse como una instantánea hija inmutable, compararse, restablecerse o moverse a una máquina que ya controlas.
main snapshot
├── agent/fix-auth → isolated worktree + PostgreSQL + Redis + ports
├── agent/billing → isolated worktree + PostgreSQL + Redis + ports
└── agent/migration → isolated worktree + PostgreSQL + Redis + portsBranchLift es local-first, agnóstico de agentes, autoalojado y no requiere cuenta de BranchLift, servicio alojado ni dependencia de pago.
Demuestra el aislamiento en cinco minutos
La demostración integrada utiliza contenedores reales de PostgreSQL 16 y Redis 7. Estos comandos crean dos entornos a partir del mismo snapshot dorado, mutan solo una base de datos, conservan esa mutación como un snapshot hijo, muestran la diferencia de estado y restablecen el entorno:
branchlift demo
cd branchlift-demo
# A second agent starts from the same immutable dev snapshot.
branchlift spawn agent/review --snapshot dev
# Mutate only agent/demo's PostgreSQL state.
branchlift exec agent/demo -- docker compose exec -T postgres \
psql -U branchlift -d app -c "CREATE TABLE agent_demo (id integer PRIMARY KEY);"
# This prints an empty line: agent/review never sees agent/demo's table.
branchlift exec agent/review -- docker compose exec -T postgres \
psql -U branchlift -d app -tAc "SELECT to_regclass('public.agent_demo');"
# Version the changed backend, inspect it, then restore golden state.
branchlift snapshot commit demo-mutated --from agent/demo
branchlift snapshot diff dev demo-mutated
branchlift reset agent/demoEste es el contrato principal: aislar → mutar → confirmar → diff → restablecer. El mismo ciclo de vida se ejecuta en CI público de Linux contra stacks fijos de Docmost, n8n y Langfuse; consulta el contrato de evidencia.
Related MCP server: lazy-mcp-router
Plano de control local
La interfaz de usuario opcional solo de bucle local mantiene entornos, linaje de estado inmutable, postura de seguridad, remotos, eventos de auditoría y revisión limitada de tareas de agente en un solo lugar.

Dónde encaja BranchLift
El ecosistema de agentes paralelos de 2026 cuenta con excelentes orquestadores de sesión — Conductor, Vibe Kanban, Claude Squad, Nimbalyst — que lanzan agentes en worktrees y visualizan diffs. Los orquestadores de runtime como Coasts van más allá con contenedores aislados, volúmenes sembrados, shells de agente, secretos y desarrollo remoto. Las plataformas en la nube como Codespaces, DevPod y E2B aíslan máquinas completas.
BranchLift profundiza en la capa de estado de backend versionado. Sea lo que sea que cree tu worktree o sesión de agente, BranchLift le proporciona estado real de Compose que puede mutarse, confirmarse como un snapshot hijo direccionado por contenido, compararse semánticamente y restablecerse. También proporciona un sandbox de Docker con privilegios mínimos y convierte máquinas que ya controlas en trabajadores a través de SSH de clave de host estricta.
Capacidad | Orquestadores de sesión | Coasts | VMs de desarrollo en la nube | BranchLift |
UX de espacio de trabajo de agente/worktree | ✅ núcleo | ✅ núcleo | parcial | ✅ Kanban de prompt + revisión limitada de diff de Git + hooks/MCP |
Estado de backend aislado sembrado | generalmente compartido | ✅ volúmenes sembrados | imagen de VM completa | ✅ cualquier volumen de Compose descubierto |
Commit → linaje parental → diff semántico → reset | ❌ | no documentado | nivel de imagen/snapshot | ✅ contrato de plano de datos principal |
Límite de ejecución del agente | generalmente host | modelo contenedor / DinD | ✅ tamaño de VM | ✅ sin socket de host, controlado por políticas |
Máquina remota que ya posees | poco común | ✅ servicio remoto | dependiente del proveedor | ✅ SSH simple, sin demonio público |
Compilaciones y caché remotas persistentes | poco común | orientado a runtime | dependiente del proveedor | ✅ BuildKit de ámbito de repositorio |
UI local de ciclo de vida/seguridad/auditoría | parcial | ✅ UI de espacio de trabajo | UI del proveedor | ✅ plano de control de estado protegido por token |
Usa Coasts cuando quieras un espacio de trabajo de agente todo en uno más amplio y orquestación de runtime estilo DinD. Usa BranchLift cuando las mutaciones de base de datos/cola/caché deban ser reproducibles, revisables, restablecibles y portables entre hosts locales y SSH. También pueden componerse: BranchLift es deliberadamente útil debajo de la capa de sesión que gane.
Consulta docs/COMPARISON.md para la revisión detallada del panorama de agosto de 2026.
El problema
Ejecutar Codex, Claude, Cursor u otro agente de codificación en worktrees separados solo aísla el código. Los backends con estado todavía colisionan:
las migraciones modifican la misma base de datos;
los trabajadores consumen trabajos de otro agente;
las pruebas vacían una instancia compartida de Redis;
los stacks de Compose compiten por puertos fijos y nombres de contenedores;
cada nuevo stack comienza vacío y repite migraciones y semillas lentas.
BranchLift prepara un snapshot dorado inmutable detenido y clona su estado para cada rama. En APFS, Btrfs y XFS con capacidad de reflink, el clon inicialmente comparte bloques de disco con el snapshot y solo los bloques modificados consumen espacio nuevo.
Estado actual
La rama principal actual cubre PostgreSQL 16, MySQL 8.4 LTS, MongoDB 8, Kafka 3.9 y Redis 7 a través de contratos reales de ciclo de vida de contenedores. El contrato de MongoDB/Kafka verifica semilla, mutación aislada, commit de snapshot hijo, restablecimiento y estado re-spawneado; macOS hidrata automáticamente WiredTiger en un volumen nativo de runtime mientras mantiene portables los snapshots. BranchLift también importa estado existente de Compose detenido-consistente, recolecta basura de runtimes antiguos de forma segura y ejecuta evidencia pública de ciclo de vida en Linux contra stacks fijos de Docmost, n8n y Langfuse.
Compatible hoy:
Docker Compose 2.24.4+ o un proveedor de Podman Compose seleccionado explícitamente;
Worktrees de Git;
descubrimiento y aislamiento de volúmenes nombrados;
PostgreSQL en macOS Docker Desktop y Linux;
MySQL 8.4 LTS en macOS Docker Desktop y Linux;
MongoDB 8, Kafka 3.9, Redis 7 y volúmenes nombrados genéricos;
macOS y Linux nativamente, además de Windows a través de WSL2 con repositorios mantenidos en el sistema de archivos de Linux;
clonefile APFS y reflink de Linux, con respaldo de copia recursiva;
ejecución de sandbox de Docker con límite de recursos, con todas las capacidades de Linux eliminadas,
no-new-privileges, root de solo lectura, sin socket de Docker del host, y redesnone, solo backend o salientes;comandos de agente del host solo después de una aceptación explícita de política del proyecto;
inyección de archivos de secrets de solo lectura y env con ámbito
/run/secrets/...sin escribir secretos en un worktree;múltiples archivos de Compose fusionados, con compatibilidad con
compose.fileheredado;listado de snapshots inmutables y eliminación protegida por dependencias;
auditorías de runtime y limpieza conservadora de huérfanos mediante
doctor --fix;bloqueos de snapshot e instancia entre procesos con diagnóstico de propietario obsoleto;
comandos de host conscientes del contexto mediante
branchlift exec;recuperación ante caídas para builds de snapshots abandonados y creación de instancias;
adjuntar a worktrees ya creados por Codex, Claude, un IDE o el usuario;
ganchos idempotentes de inicio de sesión para Codex, Claude Code y Cursor;
un servidor MCP local que expone adjuntar, salud/logs de runtime, postura de seguridad, snapshots/diffs, eventos de auditoría e inventario remoto saneado;
inspección en vivo de servicios/salud mediante
previewy logs de Compose específicos;importación de snapshot consistente ante caídas desde un proyecto de Compose existente;
recolección de basura filtrada por edad y con re-verificación de bloqueo para runtimes detenidos y fallidos;
contratos de compatibilidad fijos para Langfuse, n8n Hosting, Docmost, Twenty e Immich;
evidencia pública de ciclo de vida en Linux para Docmost, n8n Hosting y el stack de seis servicios de Langfuse;
clonación paralela de múltiples volúmenes y descubrimiento de puertos;
un benchmark registrado de reflink Btrfs de 512 MiB con muestras sin procesar;
manifiestos de snapshot direccionados por contenido, linaje parental, commits de instancia consistentes ante caídas y diffs semánticos de snapshot;
una UI de plano de control protegida por token y solo de bucle local para operaciones de ciclo de vida, estado, seguridad, auditoría y remotas;
trabajadores SSH de clave de host estricta con protocolo en lista blanca y configuración de trabajador sin sudo y con ámbito de usuario;
desarrollo remoto con un comando, con sincronización de árbol de trabajo en vivo con detección de conflictos y túneles SSH automáticos de bucle local;
shells de agente remoto forzados por sandbox sin acceso a shell de host ni socket de Docker;
builders persistentes de BuildKit de ámbito de repositorio con build remoto y gestión de caché de confirmación exacta;
un espacio de trabajo de tareas de agente de cinco carriles con prompts privados, estado de arrastrar y soltar, copia de prompt y revisión limitada de solo lectura de diff de Git;
tokens de UI de visor/operador/admin de ámbito de repositorio cuyos valores sin procesar se muestran una vez y nunca se persisten;
un registro de nodos de sistema de archivos compartido sin secretos para equipos que no quieren un servicio de coordinación alojado;
selección de CLI de Docker/Podman y diagnósticos explícitos de WSL2 sin pretender que la semántica de propiedad nativa de Windows sea segura.
El soporte de Podman cubre el ciclo de vida local de Compose, volúmenes, sandbox, preview y doctor mediante BRANCHLIFT_CONTAINER_CLI=podman; el BuildKit remoto persistente aún requiere deliberadamente Docker Buildx. Windows nativo no es compatible: usa WSL2.
Instalación
Requisitos: Node.js 22+, Git y Docker Compose 2.24.4+ o Podman con un proveedor de Compose funcional.
npm install -g branchlift
# or
brew tap MuratKomurcu1/tap
brew trust --formula MuratKomurcu1/tap/branchlift
brew install branchliftHomebrew 6 requiere el paso de confianza explícito para cada fórmula de tap no oficial. El tarball de Release de GitHub versionado sigue disponible como respaldo independiente del registro npm.
Consulta docs/INSTALL.md para requisitos, instalación desde fuente y verificación de paquetes.
Inicio rápido
Prueba el producto completo en un proyecto desechable de PostgreSQL + Redis:
branchlift demoO inicializa, aprueba, crea un snapshot y lanza un repositorio de Compose existente con un comando:
branchlift quickstart agent/fix-auth --trust-policy--trust-policy es explícito porque el inicio rápido puede ejecutar comprobaciones de salud de Compose revisadas y comandos de semilla. Sin él, BranchLift se detiene después del análisis de configuración e imprime el resumen de la política.
Ejecuta esto dentro de un repositorio Git existente que contenga compose.yaml o docker-compose.yml:
branchlift init --dry-run
branchlift init
branchlift inspect
branchlift security trustinit crea branchlift.yaml. Haz commit de ese archivo y luego construye el backend dorado una vez:
Incluye automáticamente el compañero estándar compose.override.yaml/docker-compose.override.yml y copia solo los archivos .env/.env.local que realmente existen. Usa opciones repetidas --compose para stacks de fusión no estándar.
branchlift snapshot devSi el stack de Compose normal del proyecto ya contiene el estado que quieres, impórtalo en lugar de reconstruirlo y volver a sembrarlo:
branchlift snapshot import dev
# Supply the same project name used by `docker compose -p` when needed
branchlift snapshot import dev --project my-existing-stackLa importación registra los servicios actualmente en ejecución, detiene solo esos servicios para una copia de sistema de archivos consistente ante caídas y los restaura antes de devolver el control. El snapshot resultante es inmutable; BranchLift nunca clona una base de datos en ejecución.
Genera ramas aisladas y luego ejecuta un comando revisado dentro del límite de seguridad por defecto de Docker:
branchlift spawn agent/fix-auth
branchlift sandbox run agent/fix-auth --read-only-worktree -- npm test
branchlift listSi una herramienta ya ha creado y hecho checkout de un worktree, ejecuta esto desde ese worktree en su lugar:
branchlift attachLos worktrees adjuntos se registran como de propiedad externa. BranchLift gestiona su estado de backend pero nunca elimina el worktree en sí.
La imagen del sandbox debe existir localmente; BranchLift nunca descarga y ejecuta una imagen no revisada implícitamente. Construye una imagen que contenga Codex, Claude Code u otras herramientas, establece security.sandbox.image y luego ejecuta el agente mediante branchlift sandbox run. La ejecución en host heredada de spawn -- AGENT sigue disponible solo cuando security.allowHostAgentCommands está explícitamente habilitada.
Instala la conexión automática al inicio de sesión y el servidor MCP con ámbito de proyecto sin reemplazar la configuración existente del agente:
branchlift agents install all
git add .codex .claude .cursor .mcp.jsonUsa codex, claude o cursor en lugar de all para configurar solo un cliente. Codex te pide que revises y confíes en un nuevo hook de proyecto antes de su primera ejecución.
Inspecciona los puertos exactos y el estado de los servicios de Compose en vivo, y luego lee los registros de un servicio:
branchlift preview
branchlift logs agent/fix-auth --service postgres --tail 100Ejecuta pruebas, migraciones u otra herramienta dentro del árbol de trabajo y el entorno de una instancia existente:
branchlift exec agent/fix-auth -- npm testRestablece un entorno a la instantánea inmutable:
branchlift reset agent/fix-authLimpia el estado de ejecución mientras conservas el árbol de trabajo y la rama de Git:
branchlift destroy agent/fix-authPrevisualiza o elimina en bloque entornos antiguos detenidos o fallidos:
branchlift gc --older-than 7d --dry-run
branchlift gc --older-than 7dLa recolección de basura nunca selecciona instancias en ejecución o en creación, vuelve a comprobar los candidatos bajo su bloqueo de ciclo de vida y elimina solo los árboles de trabajo propiedad de BranchLift. Los árboles de trabajo externos se conservan.
Elimina también el árbol de trabajo, pero solo si está limpio:
branchlift destroy agent/fix-auth --worktreeBranchLift nunca elimina la rama de Git.
Configuración
branchlift init genera un archivo mínimo:
version: 1
compose:
files:
- compose.yaml
statefulServices:
- postgres
- redis
snapshot:
default: dev
healthTimeoutSeconds: 120
seed: []
worktree:
copyFiles:
- .envLos comandos de inicialización de instantáneas se ejecutan dentro de un servicio de Compose ya saludable:
snapshot:
default: dev
healthTimeoutSeconds: 120
seed:
- service: api
command: ["npm", "run", "db:migrate"]
- service: api
command: ["npm", "run", "db:seed"]La pila de instantáneas se apaga limpiamente antes de que su estado de sistema de archivos esté disponible para la clonación.
Los proyectos que normalmente usan una anulación pueden listar archivos en el orden de fusión de Compose:
compose:
files:
- compose.yaml
- compose.dev.yamlLa forma más antigua compose.file: compose.yaml sigue siendo legible.
La política de ejecución del proyecto se hace commit, mientras que su aprobación local de la máquina y los valores secretos no:
security:
sandbox:
backend: docker
image: my-reviewed-agent:local
network: backend
readOnlyRoot: true
memory: 4g
cpus: 2
pidsLimit: 512
allowHostAgentCommands: false
allowSecretCommands: false
secrets:
apiToken:
source: { env: MY_API_TOKEN }
target: { env: API_TOKEN }
scopes: [sandbox]
required: true
credentials:
source: { file: ~/.config/my-app/credentials.json }
target: { file: /run/secrets/credentials.json }
scopes: [sandbox]
required: true
ui: { host: 127.0.0.1, port: 7788 }Los destinos de archivo están restringidos a /run/secrets/... y al ámbito de la sandbox. Las fuentes de secretos de comandos y los comandos del agente host están bloqueados por defecto. Consulta docs/SECURITY-AND-SECRETS.md.
Después de revisar branchlift.yaml, ejecuta branchlift security trust. BranchLift almacena solo su digest fuera del árbol de trabajo. Cualquier cambio de configuración invalida la aprobación y bloquea las operaciones de ciclo de vida/instantáneas de Compose, la ejecución de la sandbox, la resolución de secretos y la ejecución del agente host hasta que el nuevo digest sea revisado y confiado.
Haz commit de una instancia mutada útil como instantánea hija y compárala sin iniciar una base de datos:
branchlift snapshot commit migrated --from agent/fix-auth
branchlift snapshot diff dev migratedAbre el plano de control local o registra una máquina que controlas a través de SSH:
branchlift ui
branchlift remote add lab 192.0.2.10 --user developer --repo /srv/my-project
branchlift remote sync lab --snapshot dev
branchlift remote launch lab agent/fix-auth --snapshot dev
branchlift remote dev lab agent/fix-auth --snapshot devLa sección Workspace añade un Kanban de indicaciones de cinco carriles y una revisión de Git de solo lectura para los árboles de trabajo de instancias registradas. El acceso del equipo es opcional:
branchlift task add "Fix auth race" --prompt "Reproduce, fix, test, and summarize" --branch agent/fix-auth --agent codex
branchlift team token create reviewer --role viewer
branchlift ui --team-access
# Publish prompt-free node inventory to a shared NFS/SMB/SSHFS directory
branchlift team registry publish --directory /shared/branchlift-registryLa interfaz de usuario sigue siendo solo de bucle local; los compañeros se conectan a través de un túnel SSH autenticado y usan su token de repositorio. El visor puede inspeccionar, el operador puede crear/mover tareas y operar entornos, y el administrador puede restablecer, destruir, eliminar, podar y revocar. Los registros del registro compartido excluyen intencionalmente indicaciones, tokens, valores secretos y rutas de árboles de trabajo. Consulta docs/TEAM.md.
remote sync instala/verifica automáticamente el trabajador con ámbito de usuario, transfiere el HEAD de Git confirmado exacto y envía solo los blobs de instantáneas que el remoto no tiene. remote launch añade un árbol de trabajo de commit exacto y un backend aislado. remote dev luego refleja los archivos de trabajo rastreados y no rastreados pero no ignorados, abre reenvíos SSH de bucle local para los servicios TCP descubiertos y sigue reconciliando hasta que se detiene. La sincronización en vivo es unidireccional y rechaza las ediciones remotas en lugar de sobrescribirlas. No se requiere cuenta en la nube, suscripción, demonio de control público ni demonio Docker-in-Docker. Consulta docs/REMOTE.md.
Comandos
branchlift demo [--directory PATH] [--no-run] [--json]
branchlift quickstart [BRANCH] [--snapshot NAME] [--no-start] [--trust-policy]
branchlift platform [--json]
branchlift init [--compose FILE]... [--dry-run] [--json]
branchlift inspect [--json]
branchlift snapshot [create] [NAME]
branchlift snapshot import [NAME] [--project COMPOSE_PROJECT] [--json]
branchlift snapshot list [--json]
branchlift snapshot delete NAME
branchlift spawn BRANCH [--snapshot NAME] [--no-start] [-- AGENT ...]
branchlift attach [--snapshot NAME] [--no-start] [-- AGENT ...]
branchlift start BRANCH [-- AGENT ...]
branchlift stop BRANCH
branchlift exec BRANCH -- COMMAND ...
branchlift reset BRANCH [--no-start]
branchlift list [--json]
branchlift preview [BRANCH] [--json]
branchlift logs [BRANCH] [--service NAME] [--tail N] [--follow] [--timestamps]
branchlift destroy BRANCH [--worktree]
branchlift doctor [--fix] [--json]
branchlift gc [--older-than 7d] [--dry-run] [--json]
branchlift benchmark [SNAPSHOT] [--iterations N] [--json]
branchlift agents install [all|codex|claude|cursor] [--dry-run] [--json]
branchlift task list|add|move|remove
branchlift team token create|list|revoke
branchlift team registry publish|list --directory PATH
branchlift mcp
branchlift remote dev REMOTE BRANCH [--snapshot NAME] [--trust-policy] [--no-tunnel]
branchlift remote live-sync REMOTE BRANCH
branchlift remote watch REMOTE BRANCH [--interval MS]
branchlift remote tunnel start|status|stop|watch REMOTE BRANCH
branchlift remote shell REMOTE BRANCH [--network none|backend|outbound]
branchlift remote agent REMOTE BRANCH [--read-only-worktree] -- COMMAND ...
branchlift remote build REMOTE --tag IMAGE [--branch BRANCH] [--network default|none] [--cache-max 20gb]
branchlift remote cache inspect REMOTE
branchlift remote cache prune REMOTE --confirm pruneCuando se lanza un agente, BranchLift proporciona:
BRANCHLIFT_INSTANCE
BRANCHLIFT_CONTEXT
BRANCHLIFT_WORKTREE
COMPOSE_PROJECT_NAME
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_HOST
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_PORT
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_URLBRANCHLIFT_CONTEXT apunta a JSON que contiene los puertos host asignados y los endpoints de servicio. Por ejemplo, un servicio PostgreSQL que expone el puerto de contenedor 5432 recibe BRANCHLIFT_POSTGRES_5432_PORT.
snapshot delete se niega a eliminar una instantánea mientras cualquier instancia la referencie. doctor comprueba el contenido de las instantáneas, las referencias de metadatos, los árboles de trabajo, los archivos de Compose, los bloqueos de ciclo de vida, el estado de ejecución y los recursos de Docker. doctor --fix elimina los bloqueos obsoletos verificados, reconcilia las operaciones abandonadas y elimina los recursos huérfanos etiquetados exactamente como BranchLift. Los datos de instantáneas recuperados se renombran a un estado de diagnóstico .failed-recovered-* en lugar de eliminarse. Las ramas de Git, los árboles de trabajo y los directorios de estado de bases de datos gestionados no se descartan silenciosamente.
Modelo de seguridad
BranchLift inspecciona Compose antes de mutar el estado de ejecución y rechaza configuraciones que solo parecerían aisladas:
valores fijos de
container_name;network_mode: host;volúmenes nombrados externos;
servicios con estado detectados sin un volumen nombrado gestionado.
Los montajes de enlace (bind mounts) compartidos y escribibles se informan como advertencias, o como bloqueadores cuando pertenecen a un servicio con estado. Los puertos de instancia aleatorizados siempre se publican en bucle local en lugar de ampliarse a cada interfaz host. .env se copia con permisos solo del propietario cuando está ausente del árbol de trabajo; se rechazan las fuentes de enlaces simbólicos y los escapes del directorio padre de destino.
Los diagnósticos incluyen una recomendación concreta para cada bloqueador de aislamiento. Las fuentes de enlace interpoladas o absolutas se tratan de forma conservadora como compartidas. Las anulaciones generadas reemplazan los destinos de montaje gestionados sin eliminar los montajes de enlace, tmpfs, secretos o configuraciones no relacionados del proyecto fuente.
Los comandos que mutan adquieren bloqueos de sistema de archivos con sello del propietario. Un comando conflictivo falla en lugar de competir con copias de bases de datos o el desmontaje de Compose. Los procesos hijos del agente y de exec se ejecutan fuera de los bloqueos de ciclo de vida para que las herramientas de larga duración no impidan el control intencional del tiempo de ejecución.
Las instancias creadas por spawn son dueñas de su árbol de trabajo generado. Las instancias creadas por attach marcan el árbol de trabajo actual como externo. destroy --worktree rechaza la propiedad externa antes de detener o eliminar cualquier cosa; destroy simple elimina solo el estado de ejecución de BranchLift.
branchlift exec y los comandos del agente host explícitamente habilitados no son límites de seguridad. branchlift sandbox run añade un límite Docker endurecido alrededor del comando, pero no es un límite de VM y concede deliberadamente el árbol de trabajo seleccionado y cualquier acceso de backend/secretos con ámbito. Los servicios de aplicación de Compose conservan su propia imagen y configuración de seguridad de Compose. Consulta SECURITY.md y docs/SECURITY-AND-SECRETS.md.
Comportamiento de almacenamiento
El estado de ejecución vive fuera del repositorio:
~/.branchlift/
├── repos/<repo-id>/snapshots/<name>/volumes/
├── repos/<repo-id>/instances/<branch>/volumes[-<generation>]/
├── repos/<repo-id>/locks/
├── repos/<repo-id>/live-sync/
├── repos/<repo-id>/remote-tunnels/
├── repos/<repo-id>/events.jsonl
├── remotes.json
└── worktrees/<repo-id>/<branch>/Anula la raíz con BRANCHLIFT_HOME.
Orden de la estrategia de copia:
clonefile de macOS APFS (
cp -c);reflink de Linux (
cp --reflink=always);copia recursiva segura como respaldo.
El árbol de volúmenes de cada instantánea lista se hace de solo lectura para el host después de que se escriba su manifiesto de digest. El aprovisionamiento restaura el acceso de escritura solo del propietario al estado de ejecución clonado, nunca acceso de escritura para todos. Cada restablecimiento clona en una generación de volúmenes nunca antes montada y cambia la anulación de Compose generada solo después de que el clon se valide. La generación anterior se elimina después de que la pila de reemplazo se vuelva saludable. Esto evita las carreras de caché de enlace de Docker Desktop y nunca expone un restablecimiento a medio copiar como la ruta activa.
Mide la latencia de clonación contra una línea base de copia completa forzada en tu máquina:
branchlift benchmark dev --iterations 10Para un fixture independiente de base de datos usa npm run benchmark:synthetic -- --size-mib 256 --iterations 7. Para la comparación fijada de Docmost usa npm run benchmark:docmost -- --dataset-mib 128 --iterations 3.
El resultado registrado de Docmost no se presenta deliberadamente como una victoria: su clon de estado APFS real fue 2.51× más rápido que la copia completa, pero la ruta completa lista para HTTP fue 0.82× porque Docker Desktop inicia el estado de PostgreSQL montado por enlace más lentamente. En la ejecución pública de Linux Btrfs, la mediana del clon sintético de 512 MiB fue de 31.25 ms frente a 600.95 ms para la copia completa forzada, una aceleración de 19.23×. La metodología, la evidencia bruta y los controles negativos están en docs/BENCHMARKS.md.
Desarrollo
npm install
npm run check
npm test
# Requires a running Docker daemon and pulls postgres:16-alpine, mysql:8.4, and redis:7-alpine
npm run test:e2e
# Fetches five pinned public Compose projects
npm run test:compat
# Typecheck, unit tests, audit, and package dry-run
npm run verifyConsulta docs/COMPATIBILITY.md, docs/EVIDENCE.md, docs/ARCHITECTURE.md, docs/SECURITY-AND-SECRETS.md, docs/REMOTE.md y CONTRIBUTING.md para conocer el contrato de soporte exacto y la evidencia pública del ciclo de vida.
La arquitectura está documentada en docs/ARCHITECTURE.md.
Comunidad
Informes de errores y propuestas de funciones: GitHub Issues
Preguntas y demostraciones: GitHub Discussions
Contribuciones: CONTRIBUTING.md —
npm run verifydebe pasar antes de cada PR.Informes de seguridad: SECURITY.md — por favor, usa avisos de seguridad privados en lugar de problemas públicos.
Si BranchLift te ahorra un ciclo de resiembra, dale una estrella al repositorio: es la principal señal de descubrimiento para un proyecto independiente, no de capital de riesgo, en esta categoría.
Licencia y procedencia
Apache-2.0. BranchLift es una implementación original. Se basa en el comportamiento público y las ideas de producto de las herramientas de entorno de árbol de trabajo y los sistemas de ramificación de bases de datos, pero no copia su código fuente ni reclama su trabajo como propio.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceExposes the full openstack and oc CLIs as MCP tools with read-only by default, dynamic/static credentials, and DNS rebinding protection.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceSafety-first local MCP tool gate with control plane, runtime security, and observability for managing MCP backends.
- AlicenseNot gradedqualityAmaintenanceA secure, local-first MCP server for read-only inspection and troubleshooting of development environments, exposing narrow, typed, auditable capabilities for repository inspection, log summarization, Docker review, and security scanning without granting unrestricted machine access.MIT
Related MCP Connectors
Remote MCP for A2A caller identity, scope policy, verdict receipts, and audit history.
Remote MCP for A2A failure replay MCP, structured receipts, audit logs, and reviewer-ready evidence.
Remote MCP for Copilot CLI switch gate MCP, structured receipts, audit logs, and reviewer-ready evid
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MuratKomurcu1/BranchLift'
If you have feedback or need assistance with the MCP directory API, please join our Discord server