핵심 요약:
- Conductor 공식 발표에 따르면 Conductor는 Meta에 합류합니다. 11월 4일부터 신규 가입과 다운로드가 중단됐고, Conductor Cloud는 11월 13일 읽기 전용으로 바뀌며 11월 20일 서비스를 종료하고 클라우드 사용자 데이터 삭제를 시작합니다. 로컬 Mac 앱은 2027년 초까지 새 모델과 중요한 수정을 받은 뒤 단계적으로 종료됩니다.
- 아직 Conductor Cloud를 쓰고 있다면 11월 13일 전에 각 워크스페이스를 마우스 오른쪽 버튼으로 눌러 「Transfer to local」을 선택하거나, Settings → Account → Export data에서 전체 데이터를 내보내세요.
- Conductor의 핵심은 워크스페이스마다 git worktree 하나와 브랜치 하나를 두는 구조이며, 공식 문서에도 그렇게 적혀 있습니다. 이건 Conductor 없이도 됩니다.
git worktree add로 디렉터리를 만들고, 각 디렉터리에서 Claude Code나 Codex를 실행한 뒤, 끝나면 메인 브랜치로 병합하면 됩니다. - 11월 5일 실측에서 두 worktree에서 Claude Code와 Codex를 동시에 돌렸고, 각자 함수와 테스트를 작성했습니다. 전체 소요 시간은 66.3초(Claude Code 27.0초, Codex 66.3초)였고, 병합 후 테스트 11개가 모두 통과했습니다. Claude Code의
claude -w와 Codex의--worktree로도 worktree를 바로 만들 수 있습니다. - GUI가 필요하다면 오픈 소스 Orca(MIT), Emdash(Apache-2.0), 터미널 도구 Claude Squad(AGPL-3.0)를 살펴보세요.
API Key를 만들고 Claude Code와 Codex로 작업을 병렬 실행하기 →
공식 일정
| 날짜 | 무슨 일이 있나 | 할 일 |
|---|---|---|
| 11월 4일(수) | Conductor가 Meta 합류 발표. 신규 가입·다운로드 중단. 기존 사용자는 Pro로 업그레이드 불가, 기존 Pro 사용자는 Pro 기능 계속 사용 | 신규 사용자는 설치할 수 없으니 아래 방법으로 |
| 11월 13일(금) | Conductor Cloud 워크스페이스가 읽기 전용으로 전환. 이전 대화 열람과 내보내기는 가능, 새 메시지는 불가. 구독 중인 사용자는 환불 | 이 날짜 전에 클라우드 워크스페이스를 「Transfer to local」 |
| 11월 20일(금) | Conductor Cloud 종료, 클라우드 사용자 데이터 삭제 시작 | 이 날짜 전에 Settings → Account → Export data |
| 2027년 초 | 로컬 Conductor 단계적 종료. 그 전까지 새 모델과 중요한 수정 제공 | 로컬 앱은 아직 쓸 수 있지만, 지금 의존하지 않는 방식으로 옮기는 게 좋음 |
날짜는 Conductor 발표와 0.93.0 변경 기록을 기준으로 했습니다. TechCrunch 보도에 따르면 Meta는 인수를 확인했지만 세부 내용은 밝히지 않았습니다. Axios 보도에 따르면 Conductor는 Charlie Holtz와 Jackson de Campos가 창업했고, 거래 조건은 공개되지 않았습니다. X에도 트렌드 뉴스 요약이 있습니다.
Conductor가 하는 일을 4단계로 나누면
Conductor 문서에 따르면 새 워크스페이스를 만들 때마다 git worktree가 생성되고 브랜치가 체크아웃되며, 보통 ~/conductor/workspaces/<저장소 이름>/<워크스페이스 이름>에 놓입니다. 에이전트는 그 디렉터리의 파일만 고치고, 테스트도 그곳에서 실행되며, 브랜치가 리뷰·푸시·PR의 단위가 됩니다.
그래서 Conductor를 빼면 직접 채울 것은 4단계뿐입니다.
- 작업 하나, 디렉터리 하나:
git worktree add로 작업마다 별도 디렉터리와 브랜치를 만듭니다. - 디렉터리 하나, 세션 하나: 각 디렉터리에서 Claude Code나 Codex를 하나씩 엽니다.
- 모델 설정: Claude Code와 Codex를 같은 API Key에 연결합니다.
- 병합과 검증: 브랜치마다 테스트하고 커밋한 뒤 main으로 병합하고 worktree를 지웁니다.
git worktree는 Git 기본 기능입니다. 저장소 하나에 작업 디렉터리를 여러 개 두고 커밋 기록은 공유하되 파일은 따로 두기 때문에, 두 에이전트가 같은 파일을 고쳐도 디스크에서 서로 덮어쓰지 않습니다.
0단계: API Key를 만들고 Claude Code와 Codex에 연결
- aicodewith.ai에 가입해 로그인한 뒤 왼쪽 내비게이션 바의 「키 관리」를 누릅니다.
- 오른쪽 위의 「키 생성」을 누르고, 대화 상자에서 알아보기 쉬운 이름(예: 「병렬 에이전트 - MacBook」)을 붙입니다.
- 확인 후 바로 전체 키를 복사해 보관하세요. 대화 상자를 닫으면 전체 키는 다시 볼 수 없습니다. 잃어버리면 삭제하고 새로 만들어야 합니다. 자세한 내용은 API Key 생성 문서를 참고하세요.
Codex는 전역 ~/.codex/config.toml을 읽으므로 모든 worktree가 이 파일 하나를 함께 쓰고, 디렉터리마다 설정할 필요가 없습니다.
# ~/.codex/config.toml
model = "gpt-6.1-sol"
model_provider = "aicodewith"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "YOUR_API_KEY"
Claude Code는 ~/.claude/settings.json을 읽으며, 이것도 전역으로 적용됩니다.
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
}
}
Codex를 아직 설치하지 않았다면 「Codex 설치 가이드」를, config.toml 각 항목은 「Codex config.toml 설정 가이드」를, Claude Code의 다른 설정 방법은 「Claude Code를 서드파티 API에 연결하는 방법」을 보세요.
1단계: 작업마다 worktree 하나
시작 전에 빌드 산출물과 에이전트가 만드는 worktree 디렉터리를 .gitignore에 넣어 두세요. 첫 실측에서는 이걸 빠뜨려 병합이 __pycache__ 때문에 막혔습니다(4단계 참고).
# 메인 체크아웃에서 먼저 빌드 산출물과 에이전트가 만든 worktree를 무시
cat >> .gitignore <<'EOF'
__pycache__/
node_modules/
.claude/worktrees/
EOF
git add .gitignore && git commit -m "ignore build output and agent worktrees"
그다음 작업마다 worktree를 만듭니다.
cd ~/code/demo # 내 저장소
git switch main && git pull
git worktree add ../demo-wt/slugify -b feat/slugify
git worktree add ../demo-wt/truncate -b feat/truncate
git worktree list
출력:
~/code/demo a97cf41 [main]
~/code/demo-wt/slugify a97cf41 [feat/slugify]
~/code/demo-wt/truncate a97cf41 [feat/truncate]
작업이 많으면 작은 스크립트가 편합니다. 이름을 넘기면 디렉터리와 agent/<이름> 브랜치를 만들고 경로를 출력합니다.
#!/usr/bin/env bash
# new-task.sh <name> [base] 작업 디렉터리를 만들고 경로를 출력
set -euo pipefail
name="${1:?usage: new-task.sh <name> [base]}"
base="${2:-main}"
repo="$(git rev-parse --show-toplevel)"
wt="$(dirname "$repo")/$(basename "$repo")-wt/$name"
git -C "$repo" worktree add -q "$wt" -b "agent/$name" "$base"
echo "$wt"
사용법:
cd "$(./new-task.sh fix-login)" && claude
cd "$(./new-task.sh add-export)" && codex
주의: worktree에는 Git이 추적하는 파일만 들어갑니다. .env, node_modules처럼 커밋하지 않은 것은 새 디렉터리에 없으니 복사하거나 의존성을 다시 설치하세요. Conductor의 「Configure your project」가 해 주던 일이 바로 이것입니다.
2단계: 디렉터리마다 Claude Code나 Codex 실행
대화형: 터미널 탭을 두 개 열고 각각 다른 worktree로 cd한 뒤 claude나 codex를 실행합니다. tmux를 쓰면 한 화면에서 둘 다 볼 수 있습니다.
# 왼쪽 Claude Code, 오른쪽 Codex
tmux new-session -d -s agents -c ../demo-wt/slugify "claude"
tmux split-window -h -t agents -c ../demo-wt/truncate "codex"
tmux attach -t agents
실측에서 Claude Code와 Codex 모두 각 worktree를 처음 열 때 이 폴더를 신뢰할지 한 번씩 물었습니다. 그들에게는 새로운 경로이기 때문입니다.
무인 실행: 작업이 명확하고 결과만 필요하면 claude -p와 codex exec를 백그라운드에서 동시에 돌립니다.
PA="Add textkit/slug.py with slugify(s) ... Add tests/test_slug.py ... Only create these two files. Then run: python3 -m unittest discover -s tests -v"
PB="Add textkit/truncate.py with truncate(s, width, suffix='...') ... Add tests/test_truncate.py ... Only create these two files. Then run the tests."
(cd ../demo-wt/slugify && claude -p "$PA" --allowedTools "Write,Edit,Read,Bash(python3:*)") &
(cd ../demo-wt/truncate && codex exec -s workspace-write "$PB") &
wait
프롬프트에 「Only create these two files」라고 적어 두 작업의 파일 경계를 나누면 병합할 때 충돌이 나지 않습니다. 작업 나누는 방법은 「Codex Subagents로 작업 나누기」도 참고하세요.
3단계: 실측 결과
테스트 환경: 2026년 11월 5일 06:16–06:30(베이징 시간, UTC+8), Linux, Claude Code 2.1.318, codex-cli 0.166.0(모델 gpt-6.1-sol), 당사 Key. HOME과 CODEX_HOME은 격리된 디렉터리를 가리켰고, 테스트 저장소는 함수가 하나뿐인 작은 Python 패키지 textkit입니다.
두 작업을 동시에 시작했습니다. Claude Code는 feat/slugify에서 slugify()를, Codex는 feat/truncate에서 truncate()를 작성했고, 둘 다 단위 테스트를 추가해 직접 실행해야 했습니다.
[Claude Code 2.1.318 · ~/code/demo-wt/slugify · feat/slugify]
All 7 tests pass. I added `textkit/slug.py` and `tests/test_slug.py`,
and those are the only files I created.
[exit 0, 27.0 s]
[Codex 0.166.0 · ~/code/demo-wt/truncate · feat/truncate]
workdir: ~/code/demo-wt/truncate
model: gpt-6.1-sol
provider: aicodewith
sandbox: workspace-write
...
Ran 5 tests in 0.000s
OK
[exit 0, 66.3 s]
| 항목 | 결과 | 소요 시간 |
|---|---|---|
| Claude Code(worktree feat/slugify) | 새 파일 2개, 테스트 7개 통과 | 27.0초 |
| Codex(worktree feat/truncate) | 새 파일 2개, 테스트 5개 통과 | 66.3초 |
| 둘을 동시에 돌린 전체 시간 | 느린 쪽이 결정 | 66.3초 |
| 두 브랜치 병합 | 충돌 없음, main에서 테스트 11개 통과 | 1초 미만 |
| claude -w + codex exec --worktree 동시 실행 | 각각 함수와 테스트 하나씩 추가, 테스트 통과 | 16.7초 / 24.4초 |
| Claude Code로 병합 충돌 해결 | 양쪽 변경 유지, 테스트 13개 통과 | 17.5초 |
두 작업은 서로를 기다리지 않으므로 전체 시간은 느린 쪽과 같습니다. 하나씩 차례로 하면 두 시간을 더한 만큼 걸립니다.
4단계: 병합과 검증
각 worktree에서 먼저 테스트를 돌리고 커밋한 뒤, 모두 커밋되면 메인 디렉터리로 돌아와 순서대로 병합합니다.
# 각 worktree에서: 테스트를 돌린 뒤 커밋
cd ../demo-wt/slugify
git status --short
python3 -m unittest discover -s tests
git add -A && git commit -m "feat: slugify"
# 메인 체크아웃으로 돌아와 병합
cd ~/code/demo
git merge --no-ff feat/slugify
git merge --no-ff feat/truncate
python3 -m unittest discover -s tests -v
병합 결과:
* 9765c15 merge truncate
|\
| * 55ce497 feat: truncate
* | b7b9d4c merge slugify
|\ \
| |/
|/|
| * c5c0b99 feat: slugify
|/
* a97cf41 init textkit
Ran 11 tests in 0.000s
OK
첫 병합에서 이런 오류가 났습니다.
$ git merge --no-ff feat/slugify
error: The following untracked working tree files would be overwritten by merge:
tests/__pycache__/test_core.cpython-313.pyc
textkit/__pycache__/__init__.cpython-313.pyc
textkit/__pycache__/core.cpython-313.pyc
Please move or remove them before you merge.
Aborting
테스트 실행으로 생긴 __pycache__가 브랜치에 커밋됐고, 메인 디렉터리에 있는 같은 이름의 추적되지 않은 파일이 병합을 막은 것입니다. Claude Code도 작업을 끝내며 이 점을 짚었습니다. 해결책은 1단계의 .gitignore이고, 이미 커밋했다면 브랜치에서 git rm -r --cached로 빼고 병합하세요.
검증 체크리스트:
- 각 브랜치의
git status --short에 예상한 파일만 있다 - 각 브랜치의 테스트가 통과하고, 병합 후 main에서 전체 테스트를 한 번 더 돌린다
- 두 브랜치가 같은 파일을 고쳤다면 다음 절의 방법으로 충돌을 처리한다
끝나면 worktree와 브랜치를 지웁니다.
git worktree remove ../demo-wt/slugify
git worktree remove ../demo-wt/truncate
git branch -d feat/slugify feat/truncate
git worktree prune
git worktree list
git 명령이 귀찮다면: claude -w와 codex --worktree
두 CLI 모두 이제 직접 worktree를 만들 수 있습니다. 실측한 버전에서 claude --help에는 -w, --worktree [name]이 있고, codex --help와 codex exec --help 모두에 --worktree(Run the session in a new managed Git worktree)가 있습니다. 공식 설명은 Claude Code 문서와 Codex worktree 문서에 있습니다.
# Claude Code: 저장소 루트에서 실행
claude -w words # = claude --worktree words
# Codex: 대화형이든 무인 실행이든 가능
codex --worktree
codex exec --worktree -s workspace-write "Add title_case() to textkit/core.py ..."
두 세션을 동시에 돌린 뒤의 git worktree list:
$ git worktree list
~/code/demo 987a3ea [main]
~/code/demo/.claude/worktrees/words 987a3ea [worktree-words] locked
~/.codex/worktrees/f0c2/demo 987a3ea (detached HEAD)
실측에서 확인한 주의점 세 가지:
- 만들어지는 위치가 다릅니다: Claude Code는 저장소 안
.claude/worktrees/<이름>에worktree-<이름>브랜치로 만들고, Codex는~/.codex/worktrees/아래에 브랜치 없는 detached HEAD로 만듭니다..claude/worktrees/를.gitignore에 넣고, Codex 쪽은 병합 전에 브랜치를 만드세요. - Claude Code의 worktree는 잠깁니다: 세션이 끝나도 잠금이 남아 있어 바로
git worktree remove하면 오류가 납니다. 먼저git worktree unlock이 필요합니다. - 같은 파일을 건드리는 두 작업은 충돌합니다: 이번에는 일부러 양쪽 모두
textkit/core.py에 함수를 추가하게 했습니다.
커밋과 병합:
# Claude Code worktree는 이미 worktree-words 브랜치에 있음
cd ~/code/demo/.claude/worktrees/words
git add -A && git commit -m "feat: count_words"
# Codex worktree는 detached HEAD이므로 먼저 브랜치 생성
cd ~/.codex/worktrees/f0c2/demo
git switch -c feat/title-case
git add -A && git commit -m "feat: title_case"
cd ~/code/demo
git merge --no-ff worktree-words
git merge --no-ff feat/title-case
두 번째 병합에서 충돌이 났습니다.
Auto-merging tests/test_core.py
CONFLICT (content): Merge conflict in tests/test_core.py
Auto-merging textkit/core.py
CONFLICT (content): Merge conflict in textkit/core.py
Automatic merge failed; fix conflicts and then commit the result.
충돌 해결은 에이전트에게 맡길 수 있습니다. 다만 claude -p에는 --permission-mode acceptEdits가 필요합니다. 처음에 --allowedTools만 넘겼더니 Claude Code의 파일 쓰기가 막혀 충돌이 그대로 남았습니다.
claude -p "This repo is in the middle of a git merge with conflicts in textkit/core.py and tests/test_core.py. Keep both sides, remove the conflict markers, run python3 -m unittest discover -s tests, and report the result. Do not commit." \
--permission-mode acceptEdits \
--allowedTools "Edit,Read,Bash(python3:*),Bash(git status:*),Bash(git diff:*)"
# 충돌 마커가 남지 않은 것을 확인한 뒤 커밋
grep -rn '<<<<<<<' textkit tests
git add textkit/core.py tests/test_core.py && git commit -m "merge title_case"
python3 -m unittest discover -s tests -v
출력:
A grep found no conflict markers left in `textkit/` or `tests/`.
I didn't stage or commit anything, so git still lists both files as unmerged (`UU`).
[exit 0, 17.5 s]
Ran 13 tests in 0.001s
OK
정리하다 만난 잠금:
$ git worktree remove .claude/worktrees/words
fatal: cannot remove a locked working tree, lock reason: claude session words (pid ...)
use 'remove -f -f' to override or unlock first
$ git worktree unlock .claude/worktrees/words && git worktree remove .claude/worktrees/words
$ git worktree remove ~/.codex/worktrees/f0c2/demo
$ git branch -d worktree-words feat/title-case
GUI가 필요하다면: Conductor를 대신할 도구
GitHub에서 라이선스와 설명을 확인한 프로젝트만 정리했습니다.
| 도구 | 설명 | 격리 방식 | 플랫폼 | 라이선스 |
|---|---|---|---|---|
| Orca | 여러 CLI 에이전트를 함께 다루는 데스크톱 앱. Claude Code, Codex, OpenCode 등 지원 | 작업마다 git worktree | macOS, Windows, Linux, 모바일 앱도 있음 | MIT |
| Emdash | 코딩 에이전트를 병렬 실행하는 데스크톱 앱. diff 리뷰와 PR 기능 포함 | 에이전트마다 worktree와 브랜치 | macOS, Windows, Linux | Apache-2.0 |
| Claude Squad | Claude Code, Codex, OpenCode, Amp 등 여러 세션을 관리하는 터미널 앱 | tmux 세션 + git worktree | 터미널(tmux 필요) | AGPL-3.0 |
| claude -w | Claude Code 내장 | 세션마다 worktree | Claude Code가 도는 환경 | — |
| codex --worktree | Codex CLI 내장. Codex 앱에도 worktree 기능 있음 | 세션마다 worktree | Codex가 도는 환경 | — |
모두 내부적으로 git worktree를 쓰므로 위의 4단계 방식이 그대로 통합니다. Key를 Claude Code와 Codex의 전역 설정에 넣어 두면 어느 도구에서든 바로 쓸 수 있습니다.
병렬로 돌리기 전에, 정말 병렬이 필요한지
에이전트는 많을수록 좋은 게 아닙니다. 파일이 겹치는 작업은 위처럼 충돌하고, 한 작업 안의 단계는 서브에이전트가 더 맞는 경우가 많습니다.
- Claude Code에서 하위 작업을 가벼운 모델에 맡기기: 「Claude Code에서 Haiku 5.5 서브에이전트 설정하기」
- 정해진 흐름은 서브에이전트를 쌓기보다 Skill로 묶기: 「서브에이전트를 Claude Code Skill로 묶기」
- Codex에서 작업 나누기, 파일 경계, 검증 방법: 「Codex Subagents로 작업 나누기」
간단한 기준: 서로 관계없는 기능과 수정은 worktree로 병렬, 한 기능 안의 조사·코드·테스트는 서브에이전트로.
API Key를 만들고 Claude Code와 Codex에 연결하기 →
자주 묻는 질문
로컬 Conductor는 언제까지 쓸 수 있나요?
공식 발표에 따르면 로컬 Conductor는 평소처럼 동작하며 2027년 초까지 새 모델과 중요한 수정을 받고, 그 뒤 단계적으로 종료됩니다. 다운로드가 중단돼 아직 설치하지 않은 사람은 더 이상 받을 수 없습니다.
Conductor Cloud 데이터는 어떻게 내보내나요?
워크스페이스를 마우스 오른쪽 버튼으로 눌러 「Transfer to local」을 고르면 워크스페이스와 대화를 Mac으로 옮길 수 있습니다. 전체 데이터는 Settings → Account → Export data에서 내보냅니다. 11월 13일 읽기 전용이 된 뒤에도 내보낼 수 있고, 11월 20일부터 삭제가 시작됩니다.
git worktree와 두 번 clone하는 건 뭐가 다른가요?
worktree는 같은 .git을 공유합니다. 커밋·브랜치·원격 설정이 하나이고, 한 디렉터리의 커밋이 다른 쪽에서도 바로 보이며, 저장소를 다시 내려받을 필요가 없습니다. 제약은 같은 브랜치를 두 worktree에서 동시에 체크아웃할 수 없다는 점입니다.
에이전트는 동시에 몇 개가 적당한가요?
리뷰할 수 있는 diff 수만큼입니다. 2~3개로 시작하고 작업마다 파일 경계를 분명히 하길 권합니다. 모든 세션이 Key 하나를 함께 써도 되며, 각 요청은 콘솔의 사용 기록에서 볼 수 있습니다.
Windows에서도 되나요?
git worktree, Claude Code, Codex 모두 Windows를 지원합니다. tmux는 WSL이 필요합니다. Orca와 Emdash 모두 Windows 버전을 제공합니다.



