Skip to main content
Glama

BranchLift

Git для состояния бэкенда ваших AI-агентов.

CI npm Homebrew License

Рабочие деревья Git изолируют код. BranchLift изолирует и версионирует состояние PostgreSQL, MySQL, MongoDB, Redis, Kafka и Docker Compose за каждым параллельным агентом кодирования.

Каждый агент получает реальный бэкенд, который он может изменять, не сталкиваясь с другим агентом. Это состояние можно зафиксировать как неизменяемый дочерний снимок, сравнить, сбросить или перенести на машину, которой вы уже управляете.

BranchLift превращает один неизменяемый снимок бэкенда в изолированное состояние для трех параллельных агентов кодирования, а затем сбрасывает изменения к золотому состоянию

main snapshot
├── agent/fix-auth      → isolated worktree + PostgreSQL + Redis + ports
├── agent/billing       → isolated worktree + PostgreSQL + Redis + ports
└── agent/migration     → isolated worktree + PostgreSQL + Redis + ports

BranchLift является локально-ориентированным, агностичным к агентам, самохостинговым и не требует учетной записи BranchLift, хостингового сервиса или платной зависимости.

Докажите изоляцию за пять минут

Встроенная демонстрация использует реальные контейнеры PostgreSQL 16 и Redis 7. Эти команды создают две среды из одного золотого снимка, изменяют только одну базу данных, сохраняют это изменение как дочерний снимок, показывают diff состояния и сбрасывают среду:

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/demo

Это основной контракт: изолировать → изменить → зафиксировать → сравнить → сбросить. Тот же жизненный цикл проверяется в публичном Linux CI на закрепленных стеках Docmost, n8n и Langfuse; см. контракт доказательств.

Related MCP server: lazy-mcp-router

Локальная плоскость управления

Необязательный UI, доступный только через loopback, объединяет среды, неизменяемую родословную состояний, уровень безопасности, удаленные машины, события аудита и ограниченный обзор задач агентов в одном месте.

Локальное рабочее пространство BranchLift в стиле macOS, показывающее пять дорожек Канбан от промпта до diff для Codex, Claude и Cursor

Где BranchLift вписывается

Экосистема параллельных агентов 2026 года имеет отличные оркестраторы сессий — Conductor, Vibe Kanban, Claude Squad, Nimbalyst — которые запускают агентов на рабочих деревьях и визуализируют diff'ы. Оркестраторы времени выполнения, такие как Coasts, идут дальше с изолированными контейнерами, предварительно заполненными томами, оболочками агентов, секретами и удаленной разработкой. Облачные платформы, такие как Codespaces, DevPod и E2B, изолируют целые машины.

BranchLift глубже всего проникает в слой версионируемого состояния бэкенда. Что бы ни создавало ваше рабочее дерево или сессию агента, BranchLift предоставляет ему реальное состояние Compose, которое можно изменять, фиксировать как контентно-адресуемый дочерний снимок, семантически сравнивать и сбрасывать. Он также предоставляет Docker-песочницу с минимальными привилегиями и превращает машины, которыми вы уже управляете, в рабочие узлы через SSH со строгой проверкой ключей хоста.

Возможность

Оркестраторы сессий

Coasts

Облачные VM для разработки

BranchLift

UX рабочего пространства агента/рабочего дерева

✅ ядро

✅ ядро

частично

✅ промпт-канбан + ограниченный обзор Git diff + хуки/MCP

Предварительно заполненное изолированное состояние бэкенда

обычно общий

✅ предварительно заполненные тома

образ целой VM

✅ любой обнаруженный том Compose

Коммит → родительская родословная → семантический diff → сброс

не документировано

уровень образа/снимка

✅ основной контракт плоскости данных

Граница выполнения агента

обычно хост

контейнер / модель DinD

✅ размером с VM

✅ нет хостового сокета, ограничено политикой

Удаленная машина, которой вы уже владеете

редко

✅ удаленный сервис

зависит от провайдера

✅ обычный SSH, без публичного демона

Постоянные удаленные сборки и кэш

редко

ориентировано на время выполнения

зависит от провайдера

✅ BuildKit в рамках репозитория

Локальный UI жизненного цикла/безопасности/аудита

частично

✅ UI рабочего пространства

UI провайдера

✅ защищенная токеном плоскость управления состоянием

Используйте Coasts, когда вам нужно более широкое универсальное рабочее пространство агента и оркестрация времени выполнения в стиле DinD. Используйте BranchLift, когда изменения базы данных/очереди/кэша должны быть воспроизводимыми, проверяемыми, сбрасываемыми и переносимыми между локальными и SSH-хостами. Они также могут комбинироваться: BranchLift намеренно полезен под любым выигрышным слоем сессий.

См. docs/COMPARISON.md для подробного обзора ландшафта за август 2026 года.

Проблема

Запуск Codex, Claude, Cursor или другого агента кодирования в отдельных рабочих деревьях изолирует только код. Состояние бэкендов все еще конфликтует:

  • миграции изменяют одну и ту же базу данных;

  • воркеры потребляют задания другого агента;

  • тесты очищают общий экземпляр Redis;

  • стеки Compose конкурируют за фиксированные порты и имена контейнеров;

  • каждый новый стек начинается пустым и повторяет медленные миграции и сиды.

BranchLift подготавливает один остановленный, неизменяемый золотой снимок и клонирует его состояние для каждой ветки. На APFS, Btrfs и XFS с поддержкой reflink клон изначально разделяет дисковые блоки со снимком, и только измененные блоки занимают новое пространство.

Текущий статус

Текущая основная ветка охватывает PostgreSQL 16, MySQL 8.4 LTS, MongoDB 8, Kafka 3.9 и Redis 7 через реальные контракты жизненного цикла контейнеров. Контракт MongoDB/Kafka проверяет сид, изолированную мутацию, коммит дочернего снимка, сброс и повторно созданное состояние; macOS автоматически гидратирует WiredTiger в том, нативный для времени выполнения, сохраняя при этом переносимость снимков. BranchLift также импортирует существующее остановленное согласованное состояние Compose, безопасно собирает мусор старых сред выполнения и запускает публичные доказательства жизненного цикла Linux на закрепленных стеках Docmost, n8n и Langfuse.

Поддерживается сегодня:

  • Docker Compose 2.24.4+ или явно выбранный провайдер Podman Compose;

  • рабочие деревья Git;

  • обнаружение и изоляция именованных томов;

  • PostgreSQL на macOS Docker Desktop и Linux;

  • MySQL 8.4 LTS на macOS Docker Desktop и Linux;

  • MongoDB 8, Kafka 3.9, Redis 7 и общие именованные тома;

  • macOS и Linux нативно, плюс Windows через WSL2 с репозиториями, хранящимися в файловой системе Linux;

  • APFS clonefile и Linux reflink, с запасным вариантом рекурсивного копирования;

  • выполнение в Docker-песочнице с ограниченными ресурсами, со всеми сброшенными Linux-возможностями, no-new-privileges, корневой файловой системой только для чтения, без хостового Docker-сокета и с сетевым режимом none, только бэкенд или исходящий;

  • команды хостового агента только после явного согласия в политике проекта;

  • инъекция ограниченных env и файлов /run/secrets/... только для чтения без записи секретов в рабочее дерево;

  • несколько объединенных Compose-файлов с совместимостью с устаревшим compose.file;

  • список неизменяемых снимков и удаление с защитой зависимостей;

  • аудит времени выполнения и консервативная очистка осиротевших объектов через doctor --fix;

  • межпроцессные блокировки снимков и экземпляров с диагностикой устаревших владельцев;

  • контекстно-зависимые хостовые команды через branchlift exec;

  • восстановление после сбоев для заброшенных сборок снимков и создания экземпляров;

  • прикрепление к рабочим деревьям, уже созданным Codex, Claude, IDE или пользователем;

  • идемпотентные хуки запуска сессии для Codex, Claude Code и Cursor;

  • локальный MCP-сервер, предоставляющий attach, здоровье/логи времени выполнения, уровень безопасности, снимки/diff'ы, события аудита и очищенный удаленный инвентарь;

  • живая проверка сервисов/здоровья через preview и целевые логи Compose.

  • импорт снимка с согласованностью при сбоях из существующего Compose-проекта;

  • сборка мусора с фильтром по возрасту и повторной проверкой блокировок для остановленных и упавших сред выполнения;

  • закрепленные контракты совместимости для Langfuse, n8n Hosting, Docmost, Twenty и Immich;

  • публичные доказательства жизненного цикла Linux для Docmost, n8n Hosting и стека Langfuse из шести сервисов;

  • параллельное клонирование нескольких томов и обнаружение портов;

  • записанный бенчмарк Btrfs reflink на 512 МиБ с сырыми образцами.

  • контентно-адресуемые манифесты снимков, родительская родословная, коммиты экземпляров с согласованностью при сбоях и семантические diff'ы снимков;

  • UI плоскости управления, доступный только через loopback и защищенный токеном, для жизненного цикла, состояния, безопасности, аудита и удаленных операций;

  • SSH-воркеры со строгой проверкой ключей хоста, разрешенным протоколом и настройкой воркера в рамках пользователя без sudo.

  • удаленная разработка одной командой с синхронизацией живого рабочего дерева с обнаружением конфликтов и автоматическими loopback SSH-туннелями портов;

  • принудительные песочницей удаленные оболочки агентов без доступа к хостовой оболочке или Docker-сокету;

  • постоянные BuildKit-сборщики в рамках репозитория с удаленной сборкой и управлением кэшем с точным подтверждением.

  • рабочее пространство задач агента с пятью дорожками, приватными промптами, перетаскиванием состояния, копированием промптов и ограниченным обзором Git diff только для чтения;

  • токены UI просмотра/оператора/администратора в рамках репозитория, чьи сырые значения показываются один раз и никогда не сохраняются;

  • реестр узлов на общей файловой системе без секретов для команд, которые не хотят хостинговый сервис координации;

  • выбор CLI Docker/Podman и явная диагностика WSL2 без притворства, что нативные семантики владения Windows безопасны.

Поддержка Podman охватывает локальный жизненный цикл Compose, томов, песочницы, preview и doctor через BRANCHLIFT_CONTAINER_CLI=podman; удаленный постоянный BuildKit по-прежнему намеренно требует Docker Buildx. Нативный Windows не поддерживается — используйте WSL2.

Установка

Требования: Node.js 22+, Git и Docker Compose 2.24.4+ или Podman с работающим провайдером Compose.

npm install -g branchlift

# or
brew tap MuratKomurcu1/tap
brew trust --formula MuratKomurcu1/tap/branchlift
brew install branchlift

Homebrew 6 требует явного шага доверия для каждой неофициальной формулы tap. Версионированный tarball GitHub Release остается доступным как запасной вариант, не зависящий от npm-реестра.

См. docs/INSTALL.md для требований, установки из исходников и проверки пакета.

Быстрый старт

Попробуйте полный продукт в одноразовом проекте PostgreSQL + Redis:

branchlift demo

Или инициализируйте, одобрите, создайте снимок и запустите существующий Compose-репозиторий одной командой:

branchlift quickstart agent/fix-auth --trust-policy

--trust-policy является явным, потому что быстрый старт может выполнять проверенные проверки здоровья Compose и команды сида. Без него BranchLift останавливается после анализа конфигурации и выводит дайджест политики.

Выполните это внутри существующего Git-репозитория, содержащего compose.yaml или docker-compose.yml:

branchlift init --dry-run
branchlift init
branchlift inspect
branchlift security trust

init создает branchlift.yaml. Зафиксируйте этот файл, затем один раз соберите золотой бэкенд:

Он автоматически включает стандартный сопутствующий файл compose.override.yaml/docker-compose.override.yml и копирует только те файлы .env/.env.local, которые действительно существуют. Используйте повторяющиеся опции --compose для нестандартных стеков слияния.

branchlift snapshot dev

Если обычный Compose-стек проекта уже содержит нужное состояние, импортируйте его вместо пересборки и повторного сида:

branchlift snapshot import dev

# Supply the same project name used by `docker compose -p` when needed
branchlift snapshot import dev --project my-existing-stack

Импорт записывает текущие запущенные сервисы, останавливает только эти сервисы для согласованной при сбоях копии файловой системы и восстанавливает их перед возвратом. Полученный снимок неизменяем; BranchLift никогда не клонирует работающую базу данных.

Создайте изолированные ветки, затем выполните проверенную команду внутри границы безопасности Docker по умолчанию:

branchlift spawn agent/fix-auth
branchlift sandbox run agent/fix-auth --read-only-worktree -- npm test
branchlift list

Если инструмент уже создал и переключился на рабочее дерево, выполните это из этого рабочего дерева вместо этого:

branchlift attach

Прикрепленные рабочие деревья записываются как внешне принадлежащие. BranchLift управляет их состоянием бэкенда, но никогда не удаляет само рабочее дерево.

Образ песочницы должен уже существовать локально; BranchLift никогда не тянет и не выполняет непроверенный образ неявно. Соберите образ, содержащий Codex, Claude Code или ваши другие инструменты, установите security.sandbox.image, затем запустите агента через branchlift sandbox run. Устаревшее выполнение на хосте spawn -- AGENT остается доступным только при явном включении security.allowHostAgentCommands.

Установите автоматическое подключение при старте сессии и MCP-сервер в рамках проекта, не заменяя существующие настройки агента:

branchlift agents install all
git add .codex .claude .cursor .mcp.json

Используйте codex, claude или cursor вместо all, чтобы настроить только одного клиента. Codex просит вас просмотреть и довериться новому хуку проекта перед первым запуском.

Проверьте точные порты и текущее состояние сервисов Compose, затем прочитайте логи одного сервиса:

branchlift preview
branchlift logs agent/fix-auth --service postgres --tail 100

Запустите тесты, миграции или другой инструмент внутри рабочего дерева и окружения существующего экземпляра:

branchlift exec agent/fix-auth -- npm test

Сбросьте окружение к неизменяемому снимку:

branchlift reset agent/fix-auth

Очистите состояние выполнения, сохранив рабочее дерево Git и ветку:

branchlift destroy agent/fix-auth

Предпросмотрите или удалите старые остановленные/неудачные окружения пакетно:

branchlift gc --older-than 7d --dry-run
branchlift gc --older-than 7d

Сборка мусора никогда не выбирает запущенные/создаваемые экземпляры, повторно проверяет кандидатов под их блокировкой жизненного цикла и удаляет только рабочие деревья, принадлежащие BranchLift. Внешние рабочие деревья сохраняются.

Удалите также рабочее дерево, но только если оно чистое:

branchlift destroy agent/fix-auth --worktree

BranchLift никогда не удаляет ветку Git.

Конфигурация

branchlift init генерирует минимальный файл:

version: 1
compose:
  files:
    - compose.yaml
  statefulServices:
    - postgres
    - redis
snapshot:
  default: dev
  healthTimeoutSeconds: 120
  seed: []
worktree:
  copyFiles:
    - .env

Команды начального заполнения снимка выполняются внутри уже работоспособного сервиса Compose:

snapshot:
  default: dev
  healthTimeoutSeconds: 120
  seed:
    - service: api
      command: ["npm", "run", "db:migrate"]
    - service: api
      command: ["npm", "run", "db:seed"]

Стек снимка корректно останавливается перед тем, как его состояние файловой системы становится доступным для клонирования.

Проекты, которые обычно используют override, могут перечислять файлы в порядке слияния Compose:

compose:
  files:
    - compose.yaml
    - compose.dev.yaml

Более старая форма compose.file: compose.yaml остаётся читаемой.

Политика выполнения проекта фиксируется в репозитории, а её локальные для машины разрешения и значения секретов — нет:

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 }

Целевые файлы ограничены /run/secrets/... и областью песочницы. Источники секретов из команд и команды хост-агента заблокированы по умолчанию. См. docs/SECURITY-AND-SECRETS.md.

После проверки branchlift.yaml выполните branchlift security trust. BranchLift хранит только свой дайджест вне рабочего дерева. Любое изменение конфигурации аннулирует разрешение и блокирует операции жизненного цикла/снимков Compose, выполнение в песочнице, разрешение секретов и выполнение хост-агента до тех пор, пока новый дайджест не будет проверен и одобрен.

Зафиксируйте полезный изменённый экземпляр как дочерний снимок и сравните его без запуска базы данных:

branchlift snapshot commit migrated --from agent/fix-auth
branchlift snapshot diff dev migrated

Откройте локальную панель управления или зарегистрируйте машину, которой вы управляете, через 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 dev

Раздел Workspace добавляет канбан-доску с пятью колонками для подсказок и read-only просмотр Git для зарегистрированных рабочих деревьев экземпляров. Доступ для команды — по желанию:

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-registry

Интерфейс остаётся доступным только через loopback; коллеги подключаются через аутентифицированный SSH-туннель и используют свой токен репозитория. Viewer может просматривать, operator — создавать/перемещать задачи и управлять окружениями, а admin — сбрасывать, уничтожать, удалять, чистить и отзывать доступ. Общий реестр намеренно исключает подсказки, токены, значения секретов и пути рабочих деревьев. См. docs/TEAM.md.

remote sync автоматически устанавливает/проверяет worker в области пользователя, передаёт точный зафиксированный HEAD Git и отправляет только те блобы снимков, которых у удалённой машины ещё нет. remote launch добавляет рабочее дерево с точным коммитом и изолированный бэкенд. remote dev затем зеркалирует отслеживаемые плюс неотслеживаемые-неигнорируемые рабочие файлы, открывает loopback SSH-форварды для обнаруженных TCP-сервисов и продолжает синхронизацию до остановки. Живая синхронизация односторонняя и отказывает в удалённых изменениях, а не перезаписывает их. Не требуется ни облачная учётная запись, ни подписка, ни публичный управляющий демон, ни демон Docker-in-Docker. См. docs/REMOTE.md.

Команды

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 prune

При запуске агента BranchLift предоставляет:

BRANCHLIFT_INSTANCE
BRANCHLIFT_CONTEXT
BRANCHLIFT_WORKTREE
COMPOSE_PROJECT_NAME
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_HOST
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_PORT
BRANCHLIFT_<SERVICE>_<CONTAINER_PORT>_URL

BRANCHLIFT_CONTEXT указывает на JSON, содержащий назначенные порты хоста и конечные точки сервисов. Например, сервис PostgreSQL, публикующий контейнерный порт 5432, получает BRANCHLIFT_POSTGRES_5432_PORT.

snapshot delete отказывается удалять снимок, пока на него ссылается какой-либо экземпляр. doctor проверяет содержимое снимков, ссылки метаданных, рабочие деревья, файлы Compose, блокировки жизненного цикла, статус выполнения и ресурсы Docker. doctor --fix удаляет подтверждённые устаревшие блокировки, согласует прерванные операции и удаляет точные осиротевшие ресурсы с меткой BranchLift. Восстановленные данные снимков переименовываются в диагностическое состояние .failed-recovered-*, а не удаляются. Ветки Git, рабочие деревья и управляемые каталоги состояния базы данных не отбрасываются молча.

Модель безопасности

BranchLift проверяет Compose перед изменением состояния выполнения и отказывает в конфигурациях, которые выглядели бы изолированными только на вид:

  • фиксированные значения container_name;

  • network_mode: host;

  • внешние именованные тома;

  • обнаруженные сервисы с состоянием без управляемого именованного тома.

Общие доступные на запись bind-монтирования сообщаются как предупреждения или блокировки, когда они принадлежат сервису с состоянием. Случайные порты экземпляров всегда публикуются на loopback, а не расширяются на все интерфейсы хоста. .env копируется с правами только владельца, если он отсутствует в рабочем дереве; источники симлинков и выходы родительского каталога назначения отклоняются.

Диагностика включает конкретную рекомендацию для каждого блокирующего изоляцию фактора. Интерполированные или абсолютные bind-источники консервативно считаются общими. Сгенерированные override заменяют управляемые цели монтирования, не удаляя несвязанные bind-, tmpfs-, secret- или config-монтирования из исходного проекта.

Изменяющие команды получают файловые блокировки с меткой владельца. Конфликтующая команда завершается ошибкой, а не гоняется с копиями базы данных или остановкой Compose. Дочерние процессы агента и exec выполняются вне блокировок жизненного цикла, чтобы долго работающие инструменты не мешали намеренному управлению выполнением.

Экземпляры, созданные spawn, владеют своим сгенерированным рабочим деревом. Экземпляры, созданные attach, помечают текущее рабочее дерево как внешнее. destroy --worktree отказывает при внешнем владении до остановки или удаления чего-либо; обычный destroy удаляет только состояние выполнения BranchLift.

branchlift exec и явно включённые команды хост-агента не являются границами безопасности. branchlift sandbox run добавляет усиленную границу Docker вокруг команды, но это не граница виртуальной машины, и она намеренно предоставляет выбранное рабочее дерево и любой ограниченный доступ к бэкенду/секретам. Прикладные сервисы Compose сохраняют свои собственные настройки образа и безопасности Compose. См. SECURITY.md и docs/SECURITY-AND-SECRETS.md.

Поведение хранилища

Состояние выполнения находится вне репозитория:

~/.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>/

Переопределите корень с помощью BRANCHLIFT_HOME.

Порядок стратегии копирования:

  1. macOS APFS clonefile (cp -c);

  2. Linux reflink (cp --reflink=always);

  3. безопасное рекурсивное копирование как запасной вариант.

Дерево томов каждого готового снимка становится доступным только для чтения на хосте после записи манифеста дайджеста. Подготовка восстанавливает доступ на запись только владельцу для клонированного состояния выполнения, никогда — доступ на запись для всех. Каждый сброс клонирует в поколение тома, которое никогда не монтировалось, и переключает сгенерированный override Compose только после проверки клона. Предыдущее поколение удаляется после того, как заменяющий стек становится работоспособным. Это позволяет избежать гонок кэша bind в Docker Desktop и никогда не показывает наполовину скопированный сброс как активный путь.

Измерьте задержку клонирования относительно принудительного полного копирования на вашей машине:

branchlift benchmark dev --iterations 10

Для независимого от базы данных теста используйте npm run benchmark:synthetic -- --size-mib 256 --iterations 7. Для фиксированного сравнения с Docmost используйте npm run benchmark:docmost -- --dataset-mib 128 --iterations 3.

Зафиксированный результат Docmost намеренно не представлен как победа: реальное клонирование состояния APFS было в 2,51× быстрее полного копирования, но полный путь до HTTP-готовности составил 0,82×, потому что Docker Desktop медленнее запускает состояние PostgreSQL через bind-монтирование. На публичном прогоне Linux Btrfs медиана синтетического клона 512 МиБ составила 31,25 мс против 600,95 мс для принудительного полного копирования — ускорение в 19,23×. Методология, исходные данные и отрицательные контроли — в docs/BENCHMARKS.md.

Разработка

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 verify

См. docs/COMPATIBILITY.md, docs/EVIDENCE.md, docs/ARCHITECTURE.md, docs/SECURITY-AND-SECRETS.md, docs/REMOTE.md и CONTRIBUTING.md для точного контракта поддержки и публичных доказательств жизненного цикла.

Архитектура описана в docs/ARCHITECTURE.md.

Сообщество

  • Отчёты об ошибках и предложения функций: GitHub Issues

  • Вопросы и демонстрации: GitHub Discussions

  • Вклад: CONTRIBUTING.mdnpm run verify должен проходить перед каждым PR.

  • Отчёты о безопасности: SECURITY.md — пожалуйста, используйте приватные консультации по безопасности, а не публичные issues.

Если BranchLift сэкономил вам цикл повторного посева, поставьте звёздочку репозиторию — это основной сигнал обнаружения для независимого, не-VC проекта в этой категории.

Лицензия и происхождение

Apache-2.0. BranchLift — оригинальная реализация. Она основана на публичном поведении и продуктовых идеях инструментов для рабочих деревьев окружений и систем ветвления баз данных, но не копирует их исходный код и не присваивает их работу себе.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
6Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    C
    maintenance
    Safety-first local MCP tool gate with control plane, runtime security, and observability for managing MCP backends.
  • F
    license
    Not graded
    quality
    B
    maintenance
    Securely inspect and operate self-hosted infrastructure including Linux host health, Docker containers and logs, Dokploy deployments, and OCI resources through a narrowly scoped, auditable MCP gateway.
  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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