Recruiting beta testers · first 100 free베타 테스터 모집 중 · 첫 100명 무료

Interlock by Team PJ — Stop your AI coding agents from overwriting each other. AI 코딩 에이전트끼리 서로의 작업을 덮어쓰지 않게.

Interlock lets a team run Claude Code, Codex and Cursor on the same repository at the same time. It tracks what every agent is changing, holds edits that would collide, and explains every decision. Interlock은 Claude Code, Codex, Cursor를 한 저장소에서 동시에 돌릴 수 있게 합니다. 에이전트마다 무엇을 바꾸는지 추적하고, 부딪힐 편집은 잡아 두며, 모든 판단의 근거를 보여줍니다.

Works with Claude Code, Codex and Cursor ·Claude Code · Codex · Cursor 지원 · Try the demo repo데모 저장소 보기

interlock · decisions
  1. clearclaude-codeclaims session.py::login
  2. clearcodexclaims session.py::logout — same file
  3. cautioncodexcreate_order calls login
  4. stopcursoredit in login — held by claude-code
  5. waitcodexqueued for login
  6. deadlockclaude-coderelease login to break the cycle
  7. clearcodexlogin handed off · PR #41 cleared
From the demo video ↓데모 영상 중 ↓

27.67%

of pull requests opened by AI coding agents on GitHub had merge conflicts.GitHub에서 AI 코딩 에이전트가 연 풀 리퀘스트 중 병합 충돌이 난 비율입니다.

Agents are now good enough to run in parallel. They just can't see each other.에이전트는 이제 동시에 돌릴 만큼 뛰어나지만, 서로를 보지 못합니다.

Source:출처: AgenticFlict (Ogenrwot & Businge, 2026), merge simulation of 107K+ agent PRs., 에이전트 PR 10.7만+ 건 병합 시뮬레이션.

Demo데모

Five agents, one file, 79 seconds.에이전트 다섯, 파일 하나, 79초.

Claude Code, Codex and Cursor change the same file. Interlock lets the edits that don't collide through and stops the rest at the edit, the commit and the merge, with a reason each time. Claude Code, Codex, Cursor가 같은 파일을 고칩니다. Interlock은 부딪히지 않는 편집은 통과시키고, 나머지는 편집 · 커밋 · 머지 단계에서 매번 이유와 함께 막습니다.

Real Interlock server, MCP processes, Claude Code, Codex and Cursor hooks and git commits; the agents' decisions are scripted, and GitHub check runs are printed instead of sent. Interlock 서버, MCP 프로세스, Claude Code · Codex · Cursor 훅, git 커밋은 실제로 동작합니다. 에이전트의 판단은 스크립트로 정했고, GitHub 체크 결과는 전송하지 않고 화면에 출력합니다.

How it works작동 방식

A signal box for your agents.에이전트를 위한 신호소.

Interlock installs as an MCP server and a GitHub App next to the agents you already use. Every change passes three gates, so even an agent that never asks gets stopped. Interlock은 쓰던 에이전트 옆에 MCP 서버와 GitHub App으로 설치됩니다. 모든 변경이 세 관문을 지나므로, 묻지 않는 에이전트도 막힙니다.

  1. Gate 1 · Edit관문 1 · 편집

    Before the edit lands편집이 들어가기 전

    Hooks for Claude Code, Codex and Cursor check every edit. Claims are per function, so two agents can work in the same file.Claude Code·Codex·Cursor 편집 훅이 모든 편집을 확인합니다. 점유는 함수 단위라 두 에이전트가 같은 파일에서 일할 수 있습니다.

  2. Gate 2 · Commit관문 2 · 커밋

    Before the commit커밋하기 전

    A git pre-commit hook catches anything that slipped past the editor.편집 단계를 빠져나간 변경은 git pre-commit 훅이 잡습니다.

  3. Gate 3 · Merge관문 3 · 병합

    Before mainmain에 합치기 전

    A GitHub merge check keeps colliding branches out of main.GitHub 머지 체크가 충돌하는 브랜치를 main 밖에 둡니다.

  • No deadlocks교착 없음A fair queue with cycle detection.공정한 대기열과 순환 감지.
  • No stale locks남는 잠금 없음Claims expire when a session dies.세션이 끝나면 점유가 자동 해제됩니다.
  • Every verdict explained모든 판단에 근거Who holds what, on which branch — and what's free instead.누가 무엇을 어느 브랜치에서 잡고 있는지, 대신 쓸 수 있는 부분까지.

Results실험 결과

We tested it before asking anyone to trust it.믿어 달라고 하기 전에 먼저 검증했습니다.

Ten published experiments, each with its method, limits and raw data. The live-agent experiments alone used 560 real Claude Code sessions.공개한 실험 10종, 모두 방법 · 한계 · 원자료와 함께. 실제 에이전트 실험에만 Claude Code 세션 560개를 썼습니다.

Experiment E4 · Interlock V3.0.0 · run 2026-10-18실험 E4 · Interlock V3.0.0 · 2026-10-18 실행

Edits blocked for no reason, on 5,352 real commit pairs실제 커밋 5,352쌍에서 이유 없이 막힌 편집

Every one of these edits merges cleanly with git. Lower is better.모두 git이 문제없이 합치는 편집입니다. 낮을수록 좋습니다.

  1. File lock파일 잠금One agent per file파일당 에이전트 하나3,535
  2. Symbol lock심볼 잠금Our previous version (V2)이전 버전 (V2)1,709
  3. Interlock V3Current version현재 버전0

Commit histories of httpx, click, requests, zod and ky, replayed as two agents starting at the same time. Interlock missed 2 of the 1,817 pairs counted as conflicts — an approximate count. httpx, click, requests, zod, ky의 커밋 기록을 두 에이전트가 동시에 시작한 상황으로 재현했습니다. 충돌로 분류한 1,817쌍 중 놓친 것은 2쌍이며, 이 분류는 근사치입니다.

Method, table and raw data방법 · 결과표 · 원자료

Status현황

Where Interlock is todayInterlock의 현재

Pre-release정식 출시 전

Interlock works end to end in our own experiments and runs as hooks, an MCP server and a GitHub App next to the agents you already use. It is not generally available yet, and a few limits are worth knowing before you try it. Interlock은 자체 실험에서 처음부터 끝까지 작동하며, 쓰던 에이전트 옆에 훅 · MCP 서버 · GitHub App으로 붙습니다. 아직 정식 출시 전이고, 써 보기 전에 알아 둘 한계가 몇 가지 있습니다.

Works today지금 되는 것

  • Function-level claims, enforced at the edit, the commit and the merge함수 단위 점유, 편집 · 커밋 · 머지 단계에서 차단
  • Calls checked against a teammate's declared signature, with the reason for every refusal동료가 선언한 시그니처에 맞춰 호출 검사, 모든 거부에 이유 제공
  • Tested with live Claude Code sessions on small Python projects작은 Python 프로젝트에서 실제 Claude Code 세션으로 검증
  • Hook answers in about 3 to 6 ms on a 2,000-line file2,000줄 파일에서 훅 응답 약 3~6 ms

Limits today지금의 한계

  • Signature checks cover Python, not TypeScript시그니처 검사는 Python만 지원하고 TypeScript는 아직입니다
  • Codex and Cursor hooks are not yet run with live agentsCodex · Cursor 훅은 아직 실제 에이전트로 돌려 보지 않았습니다
  • It refuses a colliding edit instead of resolving it, so that task waits for a person or the other branch충돌할 편집은 해결하지 않고 거부하므로, 그 작업은 사람이나 상대 브랜치를 기다립니다
  • Coordination costs extra turns and tokens, and hooks slow down on files of 5,000+ lines조정에 턴과 토큰이 더 들고, 5,000줄 이상 파일에서는 훅이 느려집니다

Release notes업데이트 기록

What changed, version by version버전별 변경 사항

Latest최신 V3.15.1
  1. V3.15.1
    • Fewer tokens in what an agent reads: a peer working on two files the agent read is now one line, and test functions are no longer made contracts. No claim or refusal is decided differently.에이전트가 읽는 안내의 토큰을 줄였습니다. 에이전트가 읽은 두 파일을 같은 동료가 고치고 있으면 이제 한 줄로 알리고, 테스트 함수는 더 이상 계약으로 만들지 않습니다. 점유와 거부 판단은 바뀌지 않았습니다.

    Verified in검증 E11: 60/60 runs on set T (Shepherd 35/60, no tool 39/60), Claude Haiku 5.5E11: 세트 T에서 60/60 성공 (Shepherd 35/60, 도구 없음 39/60), Claude Haiku 5.5

  2. V3.15.0
    • Self-service accounts: one server can host many separate teams, each in its own workspace. Sign-up is off unless the operator turns it on.셀프서비스 계정: 서버 하나에서 여러 팀을 각자의 워크스페이스로 나눠 운영합니다. 가입은 운영자가 켜지 않으면 닫혀 있습니다.
  3. V3.14.0
    • Operator analytics per workspace (agents seen, claims, edits, merges, waits, refused conflicts) and a command for users to leave feedback.워크스페이스별 운영자 통계(확인된 에이전트, 점유, 편집, 병합, 대기, 거부된 충돌)와 사용자 의견 남기기 명령.
  4. V3.13.0
    • Limits per workspace: members, repositories, and how long events, decisions and chat are kept.워크스페이스별 한도: 구성원 수, 저장소 수, 이벤트 · 판단 · 채팅 보관 기간.
  5. V3.12.0
    • Invite codes: hand out a code instead of a token. A code expires, can be capped in uses and can be revoked.초대 코드: 토큰 대신 코드를 건넵니다. 코드는 만료되고, 사용 횟수를 제한할 수 있고, 취소할 수 있습니다.
  6. V3.11.0
    • Teams and workspaces with roles (owner, member, viewer) that decide who may reach which repositories, and a Team panel on the dashboard.팀과 워크스페이스, 그리고 어느 저장소에 누가 접근할지 정하는 역할(소유자 · 구성원 · 열람자). 대시보드에 팀 패널이 생겼습니다.
Earlier versions이전 버전
  1. V3.10.0
    • Team chat and shared status: agents and people leave each other messages beside the claims they are about, with a chat panel on the dashboard.팀 채팅과 공유 상태: 에이전트와 사람이 해당 점유 옆에서 서로에게 메시지를 남깁니다. 대시보드에 채팅 패널이 생겼습니다.
  2. V3.9.2
    • Fix to the pre-merge check at Stop: a peer's stale import no longer hides this checkout's own.Stop 단계 병합 전 검사 수정: 동료의 오래된 import가 이 체크아웃의 import를 가리지 않습니다.
  3. V3.9.1
    • Load and memory: a stopped MCP server exits cleanly under load, and parsed code is cached and bounded to 64 MB across all worktrees.부하와 메모리: 부하 중에도 MCP 서버가 깔끔히 종료되고, 파싱한 코드는 캐시하되 모든 워크트리를 합쳐 64 MB로 제한합니다.
  4. V3.9.0
    • Fewer merge conflicts where one agent changes a signature and another uses the function: the agent that declares the change updates existing calls in test files.한 에이전트가 시그니처를 바꾸고 다른 에이전트가 그 함수를 쓸 때의 병합 충돌 감소: 변경을 선언한 에이전트가 테스트 파일의 기존 호출을 고칩니다.
    • Claims taken from a task's text no longer refuse anyone, since a task also names files it only reads.작업 문구에서 잡은 점유는 누구도 거부하지 않습니다. 작업이 읽기만 하는 파일도 언급하기 때문입니다.

    Verified in검증 E11: 60/60 runs correct on a codebase unseen during development (Shepherd 27/60, no tool 26/60)E11: 개발에 쓰지 않은 코드베이스에서 60/60 성공 (Shepherd 27/60, 도구 없음 26/60)

  5. V3.8.1
    • The pre-merge check merges every peer at once, as the branches will land. Tests an agent added move to a clean place at Stop.병합 전 검사가 실제로 합쳐질 모습대로 모든 동료를 한꺼번에 합칩니다. 에이전트가 추가한 테스트는 Stop에서 깨끗한 자리로 옮겨집니다.
  6. V3.8.0
    • No turns spent waiting or on another agent's failures: Stop waits inside the hook for a peer still holding the code, and the pre-merge check says which agent a failure comes from.기다리거나 다른 에이전트의 실패를 처리하느라 쓰는 턴이 없습니다. Stop이 코드를 쥔 동료를 훅 안에서 기다리고, 병합 전 검사는 실패가 어느 에이전트에서 왔는지 알려줍니다.
  7. V3.7.0
    • Fewer turns per agent: what an agent had to do by tool call, Interlock now does from the hooks, such as claiming the files a task names.에이전트당 턴 감소: 에이전트가 도구 호출로 하던 일을 Interlock이 훅에서 대신합니다. 작업이 언급한 파일 점유가 한 예입니다.
  8. V3.6.1
    • Less waiting where agents do not collide: claims on test files never refuse each other, and Stop waits only when a peer's intent names the function the new code calls.충돌하지 않는 곳에서 대기 감소: 테스트 파일 점유끼리는 서로 거부하지 않고, Stop은 동료의 의도가 새 코드가 부르는 함수를 가리킬 때만 기다립니다.
  9. V3.6.0
    • Pre-merge check at Stop: the checkout's work is merged with each peer's current work in scratch space and the project's tests run on the result.Stop 단계 병합 전 검사: 이 체크아웃의 작업을 동료의 현재 작업과 임시 공간에서 합치고, 그 결과에 프로젝트 테스트를 돌립니다.

    Verified in검증 E11 set Y: 51/60 tasks correctly merged with Interlock (Shepherd 32/60, no tool 38/60)E11 세트 Y: Interlock 51/60 성공 (Shepherd 32/60, 도구 없음 38/60)

  10. V3.5.0
    • Refusals that end the task are replaced by ones that lead to a finished, mergeable change: an overlap is refused once with the holder's intent, and the same agent's retry goes through.작업을 끝내 버리는 거부 대신, 끝까지 병합 가능한 변경으로 이어지는 거부로 바꿨습니다. 겹침은 점유자의 의도와 함께 한 번 거부하고, 같은 에이전트의 재시도는 통과합니다.
  11. V3.4.0
    • Usage per day, numbers only: every edit the hooks check is counted, and a command exports per-day counts, so a team can show people kept using Interlock.하루 단위 사용량(숫자만): 훅이 검사한 모든 편집을 세고, 명령으로 하루별 수치를 내보냅니다. 팀이 계속 쓰고 있다는 것을 보여줄 수 있습니다.
  12. V3.3.1
    • Fix release from four independent pre-launch reviews (beta server, tester client and installers, hosting, hooks in real repositories). Each fix has a test that reproduced the problem first.출시 전 독립 리뷰 4건(베타 서버, 테스터 클라이언트와 설치 프로그램, 호스팅, 실제 저장소의 훅)의 수정 릴리스. 모든 수정에는 문제를 먼저 재현한 테스트가 있습니다.
  13. V3.3.0
    • Beta ready for testers who use Codex and Cursor as much as Claude Code: counts from any of them, an English guide, and `interlock` on the PATH after installing.Codex · Cursor를 Claude Code만큼 쓰는 테스터를 위한 베타: 어느 쪽에서든 집계, 영어 가이드, 설치 후 `interlock`이 PATH에 등록됩니다.
  14. V3.2.0
    • `interlock audit`: experiment E4 as a command. It replays a repository's commit history, read-only.`interlock audit`: 실험 E4를 명령으로 만들었습니다. 저장소의 커밋 기록을 읽기 전용으로 재현합니다.

    Verified in검증 E4: 0 needless refusals on 5,352 real commit pairs (symbol lock: 1,709)E4: 실제 커밋 5,352쌍에서 불필요한 차단 0건 (심볼 잠금: 1,709건)

  15. V3.1.0
    • The beta: what Interlock decides is counted, testers get a build and a token, and testers who opt in send daily counts only.베타 시작: Interlock의 판단을 집계하고, 테스터는 빌드와 토큰을 받으며, 동의한 테스터만 하루 단위 수치를 보냅니다.

    Verified in검증 Rule checks and E8규칙 검증과 E8

  16. V3.0.0
    • The engine: precise admission control, where an edit is refused only for a static fact, and promise-consistent reads, where peers see a teammate's declared signature.엔진: 정밀 허용 제어(정적 사실이 있을 때만 편집을 거부)와 약속 일관 읽기(동료가 선언한 시그니처를 읽을 때 보여줌).

    Verified in검증 E1: calls fit the declared signature in 20/20 runs (0/20 without)E1: 선언된 시그니처에 맞는 호출 20/20 (없으면 0/20)

  17. V2.1.0
    • Fixes from the V2.0.0 review (16 items), covering security and correctness. Versions are now numbered VX.Y.Z: structure, feature, fix.V2.0.0 리뷰에서 나온 수정 16건(보안과 정확성). 버전 표기가 VX.Y.Z(구조 · 기능 · 수정)로 바뀌었습니다.
  18. V2.0.0 first numbered 0.4.0당시 번호 0.4.0
    • Symbol-level claims: an agent claims a function, not a file, so two agents can work in one file. Python, JavaScript and TypeScript are parsed with tree-sitter.함수 단위 점유: 에이전트가 파일이 아니라 함수를 점유하므로 두 에이전트가 한 파일에서 일할 수 있습니다. Python · JavaScript · TypeScript는 tree-sitter로 분석합니다.
    • Routes with cautions, leases tied to session liveness, deadlock detection and explained decisions, enforced by symbol-level edit and commit hooks and a symbol-level GitHub check.주의 표시가 있는 경로, 세션 생존에 묶인 점유, 교착 감지, 근거가 붙는 판단. 함수 단위 편집 · 커밋 훅과 함수 단위 GitHub 체크로 적용합니다.
  19. V1.2.0 first numbered 0.3.0당시 번호 0.3.0
    • Enforcement without cooperation: a Claude Code edit hook and a git pre-commit hook apply to agents that never call Interlock's tools.협조 없이도 적용: Claude Code 편집 훅과 git pre-commit 훅이 Interlock 도구를 부르지 않는 에이전트에도 적용됩니다.
    • A first-come, first-served wait queue, a three-layer dashboard (edit, commit, merge) and one-click GitHub App setup.선착순 대기열, 편집 · 커밋 · 머지 3단계 대시보드, GitHub App 원클릭 설정.
  20. V1.1.0 first numbered 0.2.0당시 번호 0.2.0
    • Faster and fairer: an indexed overlap check cut a PR check over 3,000 files and 1,000 claims from 949 ms to 22 ms.더 빠르고 공정하게: 겹침 검사에 색인을 써서, 파일 3,000개 · 점유 1,000개 PR 검사가 949 ms에서 22 ms로 줄었습니다.
    • A failing PR check turns green on its own when the claim is released, expires or the PR closes. Event log and live dashboard.점유가 풀리거나 만료되거나 PR이 닫히면 실패한 PR 체크가 새 푸시 없이 스스로 통과로 바뀝니다. 이벤트 기록과 실시간 대시보드.
  21. V1.0.0 first numbered 0.1.0당시 번호 0.1.0
    • The first version: file claims through MCP. A refused agent is told who holds the files, on which branch and why.첫 버전: MCP를 통한 파일 점유. 거부된 에이전트는 누가 어느 브랜치에서 왜 점유 중인지 안내받습니다.
    • A GitHub App check on every PR: a PR that changes files claimed by another branch fails the check, and closing or merging a PR releases its claims. Works with any MCP client.모든 PR에 GitHub App 체크: 다른 브랜치가 점유한 파일을 바꾸는 PR은 체크에서 실패하고, PR을 닫거나 병합하면 점유가 풀립니다. 모든 MCP 클라이언트에서 작동합니다.

Dates are Korea time: V3 dates are the day a version first appeared in the project's changelog, and V1 and V2.0 are the day it was built. The first builds were numbered 0.1 to 0.4 and renamed V1.0 to V2.0 when the VX.Y.Z scheme began on 2026-10-18. Experiment pages state which version they ran on. 날짜는 한국 시간입니다. V3는 변경 기록에 처음 올라온 날이고, V1과 V2.0은 만든 날입니다. 초기 빌드는 0.1~0.4로 번호를 매겼고, 2026-10-18에 VX.Y.Z 체계를 도입하며 V1.0~V2.0으로 바꿨습니다. 각 실험 페이지에 실험에 쓴 버전을 적어 두었습니다.

Running two or more agents on one repo?한 저장소에서 에이전트를 둘 이상 돌리나요?

Get early access — free for the first 100 beta testers.베타를 먼저 써 보세요. 첫 100명은 무료입니다.

Or write to the founders:또는 창업자에게 직접: pj.southkorea@gmail.com