branchlift
BranchLift
Git для состояния бэкенда ваших AI-агентов.
Рабочие деревья Git изолируют код. BranchLift изолирует и версионирует состояние PostgreSQL, MySQL, MongoDB, Redis, Kafka и Docker Compose за каждым параллельным агентом кодирования.
Каждый агент получает реальный бэкенд, который он может изменять, не сталкиваясь с другим агентом. Это состояние можно зафиксировать как неизменяемый дочерний снимок, сравнить, сбросить или перенести на машину, которой вы уже управляете.
main snapshot
├── agent/fix-auth → isolated worktree + PostgreSQL + Redis + ports
├── agent/billing → isolated worktree + PostgreSQL + Redis + ports
└── agent/migration → isolated worktree + PostgreSQL + Redis + portsBranchLift является локально-ориентированным, агностичным к агентам, самохостинговым и не требует учетной записи 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 вписывается
Экосистема параллельных агентов 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 branchliftHomebrew 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 trustinit создает 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 --worktreeBranchLift никогда не удаляет ветку 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>_URLBRANCHLIFT_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.
Порядок стратегии копирования:
macOS APFS clonefile (
cp -c);Linux reflink (
cp --reflink=always);безопасное рекурсивное копирование как запасной вариант.
Дерево томов каждого готового снимка становится доступным только для чтения на хосте после записи манифеста дайджеста. Подготовка восстанавливает доступ на запись только владельцу для клонированного состояния выполнения, никогда — доступ на запись для всех. Каждый сброс клонирует в поколение тома, которое никогда не монтировалось, и переключает сгенерированный 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.md —
npm run verifyдолжен проходить перед каждым PR.Отчёты о безопасности: SECURITY.md — пожалуйста, используйте приватные консультации по безопасности, а не публичные issues.
Если BranchLift сэкономил вам цикл повторного посева, поставьте звёздочку репозиторию — это основной сигнал обнаружения для независимого, не-VC проекта в этой категории.
Лицензия и происхождение
Apache-2.0. BranchLift — оригинальная реализация. Она основана на публичном поведении и продуктовых идеях инструментов для рабочих деревьев окружений и систем ветвления баз данных, но не копирует их исходный код и не присваивает их работу себе.
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