Baton – AI 에이전트 병렬 개발을 위한 데스크톱 앱
Show HN: Baton – A desktop app for developing with AI agents
TL;DR Highlight
Claude Code, Gemini CLI 등 여러 AI 코딩 에이전트를 각자 독립된 git worktree에서 동시에 돌리고 한눈에 모니터링할 수 있는 데스크톱 앱으로, 기능별로 에이전트를 나눠 병렬 개발하고 싶은 개발자에게 유용하다.
Who Should Read
Claude Code, Codex CLI 같은 AI 코딩 에이전트를 여러 개 동시에 돌리면서 각 작업 진행 상황을 한 곳에서 관리하고 싶은 개발자. 특히 브랜치 충돌 없이 여러 기능을 병렬로 개발하고 싶은 상황에 적합하다.
Core Mechanics
- Baton은 AI 코딩 에이전트(Claude Code, Codex CLI, OpenCode, Gemini CLI 등 CLI 기반 에이전트 전부 지원)를 여러 개 동시에 실행하고 관리하는 데스크톱 앱으로, Mac/Windows/Linux 모두 무료로 다운로드할 수 있다.
- 각 작업(워크스페이스)은 git worktree(하나의 저장소에서 여러 작업 디렉터리를 독립적으로 유지하는 git 기능)로 완전히 분리되어 있어서, 에이전트들이 서로 간섭하거나 충돌하지 않는다. 브랜치 전환이나 stash 없이 각자 자기 브랜치에서 작업한다.
- 대시보드에서 각 에이전트의 상태를 뱃지로 표시해준다. 에이전트가 입력 대기 중이면 파란 'Input' 뱃지, 작업 완료면 초록 'Done' 뱃지, 오류 발생 시 빨간 'Error' 뱃지가 붙어서 탭을 일일이 확인할 필요가 없다. Claude Code에서 가장 잘 지원된다.
- 작업 시작 시 무엇을 만들지 설명하면 AI가 자동으로 브랜치 이름, 워크스페이스 제목, 설명을 생성해준다. 'Accept Edits' 모드를 켜면 권한 확인 없이 에이전트가 바로 작업을 시작한다.
- Monaco 에디터(VS Code에서 사용하는 코드 에디터 컴포넌트) 기반의 diff 뷰어가 내장되어 있어서 에이전트가 변경한 내용을 PR 올리기 전에 파일 단위로 확인하고, 원하지 않는 파일은 개별적으로 롤백할 수 있다. 에이전트가 작업하는 동안 실시간으로 변경 사항을 따라볼 수 있는 'Live follow mode'도 지원한다.
- 내장 MCP(Model Context Protocol, AI 에이전트가 외부 도구를 호출하는 표준 프로토콜) 서버가 있어서 에이전트가 대화 중에 직접 새 워크스페이스를 생성하거나 병렬 태스크를 실행하는 것이 가능하다.
- fzf와 ripgrep을 활용한 퍼지 파일 검색과 전체 텍스트 콘텐츠 검색, git blame, 파일별 커밋 히스토리 등 코드 리뷰에 필요한 부가 기능들도 내장하고 있다. 자주 쓰는 쉘 명령이나 에이전트 프롬프트는 'Actions'로 저장해 재사용할 수 있다.
Evidence
- 비슷한 오픈소스 에이전트 매니저가 워낙 많이 나오고 있어서 Baton만의 차별점이 뭔지 명확하지 않다는 지적이 있었다. Conductor, superset.sh, t3.codes, cmux 등 유사 도구들이 언급됐고, 심지어 Claude Desktop 자체도 worktree 병렬 에이전트를 한 달 전부터 지원한다는 댓글도 있었다.
- 이런 류의 에이전트 매니저들이 결국은 IDE를 다시 만드는 방향으로 흘러가는 거 아니냐는 비판이 있었다. VS Code가 이미 웹앱으로 컨테이너에서 실행 가능하고, 워크스페이스도 지원하며, 확장 프로그램 생태계가 있으니 VS Code를 개선하는 방향이 더 낫지 않겠냐는 의견이다. visualJJ라는 worktree/workspace 매니저도 언급됐다.
- Claude Code를 이렇게 여러 에이전트로 돌리면 비용이 얼마나 드냐는 현실적인 질문이 나왔다. 회사 돈으로 쓰는 건지 묻는 댓글이 있을 만큼, 비용 부담이 실제 사용의 큰 허들로 인식되고 있다.
- 에이전트 + worktree + 각종 하네스를 써서 실제로 무엇을 개발하냐는 본질적인 질문도 제기됐다. 댓글 작성자 경험상 대부분이 React/Laravel 같은 프레임워크의 보일러플레이트 컴포넌트 생성이나 소규모 개인 앱 수준에 머물고, 에이전트로 대용량 코드베이스에서 불필요한 코드를 제거하는 시간 소모 작업에 썼다는 경험담이 공유됐다.
- 사이트 디자인에 대한 피드백도 있었다. 배경의 텔레비전 노이즈 효과와 얇은 파란 선이 깜빡이는 탓에 30초 안에 읽기를 포기했다는 UX 지적이 있었고, 비슷하게 직접 터미널 기반 유사 도구를 만들어 GitHub에 공개한 사람도 있었다(agent-storm).
How to Apply
- Claude Code로 여러 기능을 동시에 개발해야 하는 경우, Baton을 설치하고 기능별로 워크스페이스를 생성하면 각각 독립된 git 브랜치에서 에이전트가 작업하므로 충돌 없이 병렬 개발이 가능하다. 완료 후 diff 뷰어로 검토하고 바로 PR을 올릴 수 있다.
- 에이전트가 언제 끝났는지 확인하려고 터미널 탭을 계속 전환하고 있다면, Baton의 상태 뱃지와 dock 알림을 활용하면 된다. 에이전트가 완료/오류/입력 대기 상태가 되는 순간 알림이 오므로 다른 작업을 하다가 확인할 수 있다.
- 자주 쓰는 에이전트 실행 옵션(예: --dangerously-skip-permissions 같은 플래그)이나 프로젝트 초기 설정 명령어가 있다면, Custom Agent Presets와 Workspace Setup 기능으로 저장해두면 새 워크스페이스를 만들 때마다 반복 입력할 필요가 없다.
Code Example
snippet
# Linux에서 AppImage로 설치하는 경우
sudo apt install fuse libfuse2 # Debian/Ubuntu
sudo dnf install fuse fuse-libs # Fedora
chmod +x baton-*.AppImage
./baton-*.AppImage
# 다운로드 무결성 검증
# macOS
shasum -a 256 [file]
# Linux
sha256sum [file]
# Windows (PowerShell)
Get-FileHash [file] -Algorithm SHA256Terminology
git worktree하나의 git 저장소에서 여러 작업 디렉터리를 동시에 체크아웃하는 기능. 브랜치를 전환하지 않고도 여러 브랜치를 동시에 작업할 수 있어서 에이전트별로 완전히 분리된 환경을 만들 때 유용하다.
MCPModel Context Protocol의 약자로, AI 에이전트가 외부 도구나 서비스를 호출하기 위한 표준 인터페이스. USB처럼 에이전트와 도구 사이의 공통 규격이라고 보면 된다.
MonacoVS Code에서 사용하는 코드 에디터 컴포넌트로, 문법 강조·diff 뷰·자동완성 등을 지원한다. VS Code의 편집기 기능을 웹이나 데스크톱 앱에 그대로 임베드할 때 쓰인다.
PTYPseudo-Terminal의 약자로, 프로그램 안에서 실제 터미널처럼 동작하는 가상 터미널. 터미널 앱이 쉘과 통신할 때 쓰이는 인터페이스로, Baton이 CLI 에이전트를 완전한 기능으로 실행할 수 있게 해주는 기반 기술이다.
fzf커맨드라인에서 파일이나 텍스트를 빠르게 퍼지(fuzzy, 오타가 있어도 비슷한 것을 찾아주는) 검색하는 도구.
ripgrepgrep보다 훨씬 빠른 텍스트 검색 도구로, 대용량 코드베이스에서 특정 문자열을 순식간에 찾아준다.