100개에 달하는 Claude Code 세션을 관리하는 법: GitHub와 에이전트 사이의 개인 작업 그래프로 Beads 활용하기
How I keep track of ~100 parallel Claude Code sessions: Beads as a private work graph between GitHub and my agents
핵심 요약
100개 이상의 Claude Code 세션을 관리하기 위해 Beads를 활용하여 GitHub와 에이전트 간의 작업 상태를 추적하는 개인용 그래프 시스템 구축 사례.
- 작업 추적 — Beads를 사용하여 에이전트 작업의 의존성, 상태, 메모를 로컬 데이터베이스로 관리함.
- 세션 관리 — tmux 세션과 Claude Code 설정을 결합하여 다수의 에이전트 세션을 효율적으로 운영함.
- 메모리 최적화 — 공유 MCP 인스턴스와 메모리 상태 확인 스킬을 통해 리소스 압박 문제를 해결함.
- 워크플로우 통합 — GitHub 이슈와 연동하되, 불필요한 노이즈를 줄이기 위해 로컬 중심의 작업 그래프를 구성함.
난 지금 30개가 넘는 Go 서비스, 모바일 앱, 인프라 레포, 데이터 파이프라인 전반에 걸쳐 20~30개의 Claude Code 채팅을 tmux 세션 4개로 돌리고 있어. 에이전트들은 잘 버티는데, 정작 내가 못 버티겠더라. 작업이 길어지면 PR이랑 하위 이슈가 수십 개로 쪼개지고, 운영 업무까지 치고 들어오니까 몇 주 지나면 나조차도 전체 그림을 파악 못 하는 상황이 옴.
"상황 파악이 안 되는 문제"를 뜯어보니까 크게 세 가지 문제로 나뉘더라고.
-
뭐가 뭐에 막혀 있고, 지금 당장 뭘 할 수 있는가? 이건 오직 내 머릿속에만 있었음.
-
어떤 세션에서 뭘 했고, 왜 했는가? 몇 주째 멈춰있는 PR을 발견했는데, 그 이유가 이미 사라진 채팅 기록에만 남아있던 적도 있었음.
-
우리가 뭘 알고 있는가? 사실 관계나 주의사항 같은 거. 이건 Claude Code의 자동 메모리 기능이 이미 해결해 줌.
내가 고려했다가 뺀 것들:
-
GitHub만 쓰기: 이슈는 동료들이랑 기획자도 보잖아. 세션 URL이나 "X 결정 전까지 대기", "개발 서버에 올려두고 테스트 중" 같은 건 내 개인적인 메모장 수준의 상태인데, 에이전트 세션마다 댓글을 달면 이슈가 그냥 쓰레기통이 됨.
-
지식 베이스 (gbrain, Karpathy 스타일 LLM 위키): 3번 문제 해결엔 좋지만, 위키 페이지는 '준비됨'인지 '막힘'인지 구분할 방법이 없음.
-
커스텀 대시보드: 관리하기 너무 빡세고, 모든 채팅이 알아서 업데이트를 하거나, 아니면 GitHub만 읽어오는데 내가 굳이 GitHub에 안 올린 정보는 보여주질 못함.
그래서 딱 맞았던 게 Beads (bd)였음. 코딩 에이전트를 위한 스티브 예기의 이슈 트래커인데, 의존성 관리, bd ready / bd blocked 상태 표시, GitHub 이슈/PR 외부 참조, 자유 형식 메모까지 다 됨.
어떻게 연결했냐면:
-
공유 데이터베이스 하나: git 레포가 아닌 상위 디렉토리에서 세션을 시작하고, Claude Code 설정에
BEADS_DIR을 박아버림. 모든 세션, 서브 에이전트, 워크트리가 같은 로컬 DB를 참조하게 만든 거지. -
Efforts와 Tasks: 장기 프로젝트는 최상위 bead로 두고, 그 밑에
repo:<name>라벨이랑 GitHub 이슈/PR 외부 참조를 달아서 태스크를 관리함. -
모든 에이전트 실행은 시작과 끝이 있음. 시작할 때 bead를 찾아서
bd blocked를 확인하고bd update --claim으로 내가 잡고 있다고 표시함. 끝날 때는 무슨 일이 있었는지 메모에 적고, 태스크를 닫거나 막혔다고 표시함. Claude Code에는 "에이전트 담당자" 같은 개념이 없으니까, 결국 DB가 살아남는 거임. -
GitHub에는 댓글 딱 하나만: 이슈마다 숨겨진 마커를 포함한 댓글 하나만 남기고, 필요할 때마다 수정함.

