여러 프로젝트와 Claude Code의 혼란: 이를 해결하기 위해 오픈 소스를 만들었습니다
요약
Claude Code를 여러 프로젝트에서 사용할 때 발생하는 환경 충돌과 관리의 어려움을 해결하기 위해 오픈 소스 도구인 sandboxd를 개발했습니다. Docker 컨테이너를 활용해 각 프로젝트를 격리된 작업 공간으로 분리하여 병렬 실행과 안전한 환경을 제공합니다.
핵심 포인트
- Docker 컨테이너 기반의 프로젝트별 격리된 작업 공간 제공
- Traefik을 이용한 고유 프리뷰 URL 자동 라우팅
- 리소스 절약을 위한 유휴 상태 컨테이너 자동 수면 기능
- 보안을 위해 API 키를 컨테이너 외부 프록시에서 관리
- Go, SQLite, Docker 기반의 단순하고 가벼운 아키텍처
왜 제가 sandboxd를 만들었는가
Claude Code를 하나 이상의 프로젝트에서 사용하기 시작하자마자 상황이 빠르게 엉망이 되었습니다. 수십 개의 프로젝트 폴더가 열려 있고, 터미널 탭은 사방에 널려 있었으며, 제가 어디까지 작업을 진행했는지 계속 잊어버리곤 했습니다. 두 개의 프로젝트에서 동시에 에이전트 (agents)를 실행하는 것은 훨씬 더 심각했습니다. 3000번 포트 충돌이 발생하고, 한 에이전트가 다른 프로젝트의 핫 리로드 (hot reload)를 트리거하며, 모든 것을 분리하기 위해 git 워크트리 (git worktrees)를 조절해야 했습니다.
저는 각 프로젝트가 자신만의 작은 작업 공간 (workspace)처럼 느껴지기를 원했습니다. 시작하고, 실행 상태로 둔 채 나중에 돌아와도 다른 것에 간섭할 걱정을 하지 않아도 되는 그런 공간 말입니다. 제가 원하는 방식으로 작동하는 것을 찾을 수 없었기에, 저는 sandboxd (오픈 소스, MIT 라이선스, 셀프 호스팅 가능)를 직접 만들었습니다.
기본적인 아이디어는 간단합니다: 하나의 프로젝트 = 자체 작업 공간, Claude Code 세션, 그리고 프리뷰 URL (preview URL)을 가진 하나의 격리된 컨테이너 (container).
모든 프로젝트가 격리되어 있기 때문에, 여러 에이전트를 서로 방해받지 않고 병렬로 실행할 수 있습니다.
흥미로울 만한 몇 가지 구현 선택 사항:
- VM 대신 Docker 컨테이너 사용: 컨테이너는 매우 가볍기 때문에 많은 프로젝트를 유지할 수 있습니다. 컨테이너는 보안이 강화되어 있으며 (capabilities 제거, 읽기 전용 루트 파일 시스템, 리소스 제한), 더 강력한 격리를 원한다면 선택적으로 gVisor 지원도 가능합니다.
- 모든 프로젝트에 고유한 프리뷰 URL 제공: Traefik이 project-id.preview.yourhost를 올바른 컨테이너로 라우팅하므로, 어떤 프로젝트가 어떤 포트에서 실행 중인지 기억할 필요가 없습니다.
- 유휴 상태 시 프로젝트 수면: 유휴 상태의 컨테이너는 자동으로 중지되고 다음 요청 시 깨어납니다. 이를 통해 RAM을 과도하게 사용하지 않으면서도 많은 프로젝트를 사용 가능한 상태로 유지할 수 있습니다. 한 가지 배운 교훈은 작업 공간 (workspace)이 호스트 (host)에 존재해야 한다는 것입니다. 그렇지 않으면 컨테이너가 수면할 때 상태 (state)가 삭제됩니다.
- API 키는 컨테이너에 절대 들어가지 않습니다: 에이전트는 키를 요청에 주입하는 로컬 프록시 (local proxy)와 통신합니다. 컨테이너는 키에 직접 접근할 수 없으며, 이는 자율 에이전트에게 실제 자격 증명 (credentials)을 부여하는 것보다 훨씬 안전하다고 느꼈습니다.
- 스택을 의도적으로 단순하게 유지했습니다: Go, SQLite, Docker, 그리고 Traefik을 사용했습니다.
Kubernetes나 외부 데이터베이스도 필요 없습니다. 이해하기 쉽고 셀프 호스팅 (Self-host) 하기도 간편합니다. 아직은 매우 초기 단계인 0.x 프로젝트이므로 분명히 다듬어지지 않은 부분들이 있지만, 이미 저의 워크플로우 (Workflow)를 극적으로 덜 혼란스럽게 만들어 주었습니다.
저장소 (Repo): https://github.com/tastyeffectco/sandboxd
라이브 데모 (Live demo): https://sandboxd.io/demo
한 줄 설치 (One-line install): curl -fsSL https://sandboxd.io/install | bash
/u/SweatyCompetition343 님이 제출함 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기