branchlift
BranchLift
AI 에이전트의 백엔드 상태를 위한 Git.
Git worktree는 코드를 격리합니다. BranchLift는 모든 병렬 코딩 에이전트 뒤에 있는 PostgreSQL, MySQL, MongoDB, Redis, Kafka 및 Docker Compose 상태를 격리하고 버전 관리합니다.
각 에이전트는 다른 에이전트와 충돌하지 않고 변경할 수 있는 실제 백엔드를 얻습니다. 해당 상태는 변경 불가능한 하위 스냅샷으로 커밋되고, diff되고, 리셋되거나, 이미 제어하고 있는 머신으로 이동될 수 있습니다.
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 계정, 호스팅 서비스 또는 유료 종속성이 필요 없습니다.
5분 만에 격리 증명하기
내장 데모는 실제 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이것이 핵심 계약입니다: 격리 → 변경 → 커밋 → diff → 리셋. 동일한 수명 주기는 고정된 Docmost, n8n 및 Langfuse 스택에 대해 공개 Linux CI에서 실행됩니다. 증거 계약을 참조하세요.
Related MCP server: lazy-mcp-router
로컬 제어 평면
선택적 루프백 전용 UI는 환경, 변경 불가능한 상태 계보, 보안 태세, 원격 저장소, 감사 이벤트 및 제한된 에이전트 작업 검토를 한 곳에 유지합니다.

BranchLift의 위치
2026년 병렬 에이전트 생태계에는 worktree에서 에이전트를 실행하고 diff를 시각화하는 훌륭한 세션 오케스트레이터 — Conductor, Vibe Kanban, Claude Squad, Nimbalyst — 가 있습니다. Coasts와 같은 런타임 오케스트레이터는 격리된 컨테이너, 시드된 볼륨, 에이전트 셸, 비밀 및 원격 개발로 더 나아갑니다. Codespaces, DevPod 및 E2B와 같은 클라우드 플랫폼은 전체 머신을 격리합니다.
BranchLift는 버전 관리된 백엔드 상태 계층에 가장 깊이 들어갑니다. worktree나 에이전트 세션을 만드는 것이 무엇이든, BranchLift는 변경되고, 콘텐츠 주소 지정 하위 스냅샷으로 커밋되고, 의미적으로 diff되고, 리셋될 수 있는 실제 Compose 상태를 제공합니다. 또한 최소 권한 Docker 샌드박스를 제공하고 이미 제어하고 있는 머신을 엄격한 호스트 키 SSH를 통해 워커로 전환합니다.
기능 | 세션 오케스트레이터 | Coasts | 클라우드 개발 VM | BranchLift |
에이전트/worktree 작업 공간 UX | ✅ 핵심 | ✅ 핵심 | 부분적 | ✅ 프롬프트 칸반 + 제한된 Git diff 검토 + hooks/MCP |
시드된 격리 백엔드 상태 | 일반적으로 공유 | ✅ 시드된 볼륨 | 전체 VM 이미지 | ✅ 발견된 모든 Compose 볼륨 |
커밋 → 부모 계보 → 의미적 diff → 리셋 | ❌ | 문서화되지 않음 | 이미지/스냅샷 수준 | ✅ 핵심 데이터 평면 계약 |
에이전트 실행 경계 | 일반적으로 호스트 | 컨테이너 / DinD 모델 | ✅ VM 규모 | ✅ 호스트 소켓 없음, 정책 게이트 |
이미 소유한 원격 머신 | 드묾 | ✅ 원격 서비스 | 공급자 의존적 | ✅ 일반 SSH, 공개 데몬 없음 |
영구 원격 빌드 및 캐시 | 드묾 | 런타임 지향 | 공급자 의존적 | ✅ 저장소 범위 BuildKit |
로컬 수명 주기/보안/감사 UI | 부분적 | ✅ 작업 공간 UI | 공급자 UI | ✅ 토큰 보호 상태 제어 평면 |
더 넓은 올인원 에이전트 작업 공간과 DinD 스타일 런타임 오케스트레이션을 원한다면 Coasts를 사용하세요. 데이터베이스/큐/캐시 변경이 재현 가능하고, 검토 가능하고, 리셋 가능하고, 로컬 및 SSH 호스트 간에 이식 가능해야 한다면 BranchLift를 사용하세요. 두 가지를 함께 구성할 수도 있습니다: BranchLift는 어떤 세션 계층이 승리하든 그 아래에서 유용하도록 의도적으로 설계되었습니다.
자세한 2026년 8월 환경 검토는 docs/COMPARISON.md를 참조하세요.
문제
Codex, Claude, Cursor 또는 다른 코딩 에이전트를 별도의 worktree에서 실행하는 것은 코드만 격리합니다. 상태 저장 백엔드는 여전히 충돌합니다:
마이그레이션이 동일한 데이터베이스를 수정합니다;
워커가 다른 에이전트의 작업을 소비합니다;
테스트가 공유 Redis 인스턴스를 플러시합니다;
Compose 스택이 고정 포트와 컨테이너 이름을 놓고 경쟁합니다;
모든 새 스택은 빈 상태로 시작하여 느린 마이그레이션과 시드를 반복합니다.
BranchLift는 하나의 중지된 변경 불가능한 골든 스냅샷을 준비하고 각 브랜치에 대해 해당 상태를 복제합니다. APFS, Btrfs 및 reflink 지원 XFS에서 복제본은 처음에 스냅샷과 디스크 블록을 공유하며 변경된 블록만 새 공간을 소비합니다.
현재 상태
현재 main 브랜치는 실제 컨테이너 수명 주기 계약을 통해 PostgreSQL 16, MySQL 8.4 LTS, MongoDB 8, Kafka 3.9 및 Redis 7을 다룹니다. MongoDB/Kafka 계약은 시드, 격리된 변경, 하위 스냅샷 커밋, 리셋 및 다시 생성된 상태를 검증합니다. macOS는 스냅샷을 이식 가능하게 유지하면서 WiredTiger를 런타임 네이티브 볼륨으로 자동 수화합니다. BranchLift는 또한 중지된 일관성 있는 Compose 상태를 가져오고, 오래된 런타임을 안전하게 가비지 수집하며, 고정된 Docmost, n8n 및 Langfuse 스택에 대해 공개 Linux 수명 주기 증거를 실행합니다.
현재 지원:
Docker Compose 2.24.4+ 또는 명시적으로 선택된 Podman Compose 공급자;
Git worktrees;
명명된 볼륨 발견 및 격리;
macOS Docker Desktop 및 Linux의 PostgreSQL;
macOS Docker Desktop 및 Linux의 MySQL 8.4 LTS;
MongoDB 8, Kafka 3.9, Redis 7 및 일반 명명된 볼륨;
macOS 및 Linux 네이티브, Linux 파일 시스템에 저장소를 유지하는 WSL2를 통한 Windows;
APFS clonefile 및 Linux reflink, 재귀 복사 대체 포함;
모든 Linux capabilities가 제거되고,
no-new-privileges, 읽기 전용 루트, 호스트 Docker 소켓 없음,none, 백엔드 전용 또는 아웃바운드 네트워킹이 있는 리소스 제한 Docker 샌드박스 실행;명시적 프로젝트 정책 옵트인 후에만 호스트 에이전트 명령;
worktree에 비밀을 쓰지 않고 범위가 지정된 env 및 읽기 전용
/run/secrets/...파일 주입;레거시
compose.file호환성을 포함한 여러 병합된 Compose 파일;변경 불가능한 스냅샷 목록 및 종속성 보호 삭제;
doctor --fix를 통한 런타임 감사 및 보수적 고아 정리;오래된 소유자 진단이 있는 프로세스 간 스냅샷 및 인스턴스 잠금;
branchlift exec를 통한 컨텍스트 인식 호스트 명령;중단된 스냅샷 빌드 및 인스턴스 생성을 위한 충돌 복구;
Codex, Claude, IDE 또는 사용자가 이미 생성한 worktree에 대한 연결;
Codex, Claude Code 및 Cursor를 위한 멱등 세션 시작 hooks;
연결, 런타임 상태/로그, 보안 태세, 스냅샷/diff, 감사 이벤트 및 정리된 원격 인벤토리를 노출하는 로컬 MCP 서버;
preview및 대상 Compose 로그를 통한 실시간 서비스/상태 검사;기존 Compose 프로젝트에서 충돌 일관성 스냅샷 가져오기;
중지 및 실패한 런타임에 대한 연령 필터링, 잠금 재확인 가비지 수집;
Langfuse, n8n Hosting, Docmost, Twenty 및 Immich에 대한 고정 호환성 계약;
Docmost, n8n Hosting 및 6개 서비스 Langfuse 스택에 대한 공개 Linux 수명 주기 증거;
병렬 다중 볼륨 복제 및 포트 발견;
원시 샘플이 포함된 기록된 512 MiB Btrfs reflink 벤치마크;
콘텐츠 주소 지정 스냅샷 매니페스트, 부모 계보, 충돌 일관성 인스턴스 커밋 및 의미적 스냅샷 diff;
수명 주기, 상태, 보안, 감사 및 원격 작업을 위한 루프백 전용, 토큰 보호 제어 평면 UI;
허용 목록 프로토콜과 사용자 범위, sudo 없는 워커 설정이 있는 엄격한 호스트 키 SSH 워커;
충돌 감지 실시간 작업 트리 동기화 및 자동 루프백 SSH 포트 터널이 있는 원클릭 원격 개발;
호스트 셸 또는 Docker 소켓 액세스가 없는 샌드박스 강제 원격 에이전트 셸;
원격 빌드 및 정확한 확인 캐시 관리가 있는 영구 저장소 범위 BuildKit 빌더;
비공개 프롬프트, 드래그 앤 드롭 상태, 프롬프트 복사 및 제한된 읽기 전용 Git diff 검토가 있는 5레인 에이전트 작업 공간;
원시 값이 한 번만 표시되고 절대 저장되지 않는 저장소 범위 뷰어/운영자/관리자 UI 토큰;
호스팅된 조정 서비스를 원하지 않는 팀을 위한 비밀 없는 공유 파일 시스템 노드 레지스트리;
Docker/Podman CLI 선택 및 네이티브 Windows 소유권 의미가 안전하다고 가장하지 않는 명시적 WSL2 진단.
Podman 지원은 BRANCHLIFT_CONTAINER_CLI=podman을 통해 로컬 Compose, 볼륨, 샌드박스, preview 및 doctor 수명 주기를 다룹니다. 원격 영구 BuildKit은 여전히 의도적으로 Docker Buildx를 요구합니다. 네이티브 Windows는 지원되지 않습니다 — WSL2를 사용하세요.
설치
요구 사항: Node.js 22+, Git 및 Docker Compose 2.24.4+ 또는 작동하는 Compose 공급자가 있는 Podman.
npm install -g branchlift
# or
brew tap MuratKomurcu1/tap
brew trust --formula MuratKomurcu1/tap/branchlift
brew install branchliftHomebrew 6은 모든 비공식 tap 공식에 대해 명시적 신뢰 단계를 요구합니다. 버전이 지정된 GitHub Release tarball은 npm 레지스트리 독립적 대체 수단으로 계속 사용할 수 있습니다.
요구 사항, 소스 설치 및 패키지 검증은 docs/INSTALL.md를 참조하세요.
빠른 시작
일회용 PostgreSQL + Redis 프로젝트에서 전체 제품을 사용해 보세요:
branchlift demo또는 한 명령으로 기존 Compose 저장소를 초기화, 승인, 스냅샷 및 실행하세요:
branchlift quickstart agent/fix-auth --trust-policy--trust-policy는 명시적입니다. 빠른 시작이 검토된 Compose 상태 확인 및 시드 명령을 실행할 수 있기 때문입니다. 이 옵션이 없으면 BranchLift는 구성 분석 후 중지하고 정책 다이제스트를 출력합니다.
compose.yaml 또는 docker-compose.yml이 포함된 기존 Git 저장소 내에서 실행하세요:
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도구가 이미 worktree를 생성하고 체크아웃했다면 해당 worktree에서 대신 실행하세요:
branchlift attach연결된 worktree는 외부 소유로 기록됩니다. BranchLift는 해당 백엔드 상태를 관리하지만 worktree 자체는 제거하지 않습니다.
샌드박스 이미지는 로컬에 이미 존재해야 합니다. 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.jsonall 대신 codex, claude, 또는 cursor를 사용하여 클라이언트 하나만 구성하세요. Codex는 첫 실행 전에 새 프로젝트 훅을 검토하고 신뢰하도록 요청합니다.
정확한 포트와 실시간 Compose 서비스 상태를 검사한 다음, 한 서비스의 로그를 읽습니다:
branchlift preview
branchlift logs agent/fix-auth --service postgres --tail 100기존 인스턴스의 작업 트리와 환경 내부에서 테스트, 마이그레이션 또는 다른 도구를 실행합니다:
branchlift exec agent/fix-auth -- npm test환경을 불변 스냅샷으로 재설정합니다:
branchlift reset agent/fix-authGit 작업 트리와 브랜치를 보존하면서 런타임 상태를 정리합니다:
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"]스냅샷 스택은 파일 시스템 상태를 복제에 사용할 수 있게 만들기 전에 깨끗하게 종료됩니다.
일반적으로 오버라이드를 사용하는 프로젝트는 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 devWorkspace 섹션은 등록된 인스턴스 작업 트리에 대한 5레인 프롬프트 칸반과 읽기 전용 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-registryUI는 루프백 전용으로 유지됩니다. 팀원은 인증된 SSH 터널을 통해 연결하고 자신의 저장소 토큰을 사용합니다. Viewer는 검사할 수 있고, operator는 작업을 생성/이동하고 환경을 운영할 수 있으며, admin은 재설정, 파괴, 제거, 정리 및 권한 취소를 할 수 있습니다. 공유 레지스트리 기록은 의도적으로 프롬프트, 토큰, 비밀 값 및 작업 트리 경로를 제외합니다. docs/TEAM.md를 참조하세요.
remote sync는 사용자 범위 워커를 자동으로 설치/검증하고, 커밋된 정확한 Git HEAD를 전송하며, 원격이 아직 가지고 있지 않은 스냅샷 블롭만 전송합니다. remote launch는 정확한 커밋 작업 트리와 격리된 백엔드를 추가합니다. 그런 다음 remote dev는 추적된 파일과 추적되지 않지만 무시되지 않은 작업 파일을 미러링하고, 발견된 TCP 서비스에 대한 루프백 SSH 포워드를 열며, 중지될 때까지 계속 동기화를 유지합니다. 실시간 동기화는 단방향이며 원격 편집을 덮어쓰지 않고 거부합니다. 클라우드 계정, 구독, 공개 제어 데몬 또는 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을 가리킵니다. 예를 들어, 컨테이너 포트 5432를 노출하는 PostgreSQL 서비스는 BRANCHLIFT_POSTGRES_5432_PORT를 받습니다.
snapshot delete는 어떤 인스턴스가 스냅샷을 참조하는 동안에는 스냅샷 제거를 거부합니다. doctor는 스냅샷 내용, 메타데이터 참조, 작업 트리, Compose 파일, 수명 주기 잠금, 런타임 상태 및 Docker 리소스를 확인합니다. doctor --fix는 검증된 오래된 잠금을 제거하고, 중단된 작업을 조정하며, BranchLift 레이블이 붙은 정확한 고아 리소스를 제거합니다. 복구된 스냅샷 데이터는 삭제되지 않고 .failed-recovered-* 진단 상태로 이름이 변경됩니다. Git 브랜치, 작업 트리 및 관리되는 데이터베이스 상태 디렉터리는 조용히 폐기되지 않습니다.
안전 모델
BranchLift는 런타임 상태를 변경하기 전에 Compose를 검사하고 격리된 것처럼만 보이는 구성을 거부합니다:
고정된
container_name값;network_mode: host;외부 명명된 볼륨;
관리되는 명명된 볼륨이 없는 것으로 감지된 상태 저장 서비스.
공유 쓰기 가능 바인드 마운트는 경고로 보고되거나, 상태 저장 서비스에 속하는 경우 차단 요인으로 보고됩니다. 무작위화된 인스턴스 포트는 모든 호스트 인터페이스로 확장되지 않고 항상 루프백에 게시됩니다. .env는 작업 트리에 없을 때 소유자 전용 권한으로 복사됩니다. 심볼릭 링크 소스와 대상 부모 이스케이프는 거부됩니다.
진단에는 모든 격리 차단 요인에 대한 구체적인 권장 사항이 포함됩니다. 보간되거나 절대적인 바인드 소스는 보수적으로 공유된 것으로 처리됩니다. 생성된 오버라이드는 소스 프로젝트에서 관련 없는 바인드, tmpfs, 시크릿 또는 구성 마운트를 삭제하지 않고 관리되는 마운트 대상을 대체합니다.
변경 명령은 소유자 스탬프가 찍힌 파일 시스템 잠금을 획득합니다. 충돌하는 명령은 데이터베이스 복사 또는 Compose 종료와 경쟁하는 대신 실패합니다. 에이전트 및 exec 자식 프로세스는 수명 주기 잠금 외부에서 실행되므로 장기 실행 도구가 의도적인 런타임 제어를 방해하지 않습니다.
spawn으로 생성된 인스턴스는 생성된 작업 트리를 소유합니다. attach로 생성된 인스턴스는 현재 작업 트리를 외부로 표시합니다. destroy --worktree는 아무것도 중지하거나 제거하기 전에 외부 소유권을 거부합니다. 일반 destroy는 BranchLift 런타임 상태만 제거합니다.
branchlift exec 및 명시적으로 활성화된 호스트 에이전트 명령은 보안 경계가 아닙니다. branchlift sandbox run은 명령 주위에 강화된 Docker 경계를 추가하지만 VM 경계가 아니며 선택된 작업 트리와 범위가 지정된 백엔드/시크릿 액세스를 의도적으로 부여합니다. 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);안전한 재귀 복사 폴백.
각 준비된 스냅샷의 볼륨 트리는 다이제스트 매니페스트가 작성된 후 호스트 읽기 전용으로 설정됩니다. 프로비저닝은 복제된 런타임 상태에 소유자 전용 쓰기 액세스를 복원하며, 절대 세계 쓰기 액세스를 허용하지 않습니다. 각 재설정은 이전에 마운트된 적이 없는 볼륨 세대로 복제하고, 복제가 검증된 후에만 생성된 Compose 오버라이드를 전환합니다. 이전 세대는 교체 스택이 정상 상태가 된 후 제거됩니다. 이는 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 상태를 더 느리게 시작하기 때문입니다. 공개 Linux Btrfs 실행에서 512 MiB 합성 복제 중앙값은 강제 전체 복사의 600.95ms 대비 31.25ms로 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 — 모든 PR 전에
npm run verify가 통과해야 합니다.보안 보고: SECURITY.md — 공개 이슈 대신 비공개 보안 권고를 사용해 주세요.
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