claude-on-incus (coi)의 핵심 가치와 아키텍처
1. 강력한 보안 및 데이터 격리
Claude Code는 기본적으로 사용자의 로컬 셸 환경을 그대로 상속받습니다. 이는 SSH 키, Git 자격 증명, .env 파일에 저장된 API 토큰 등 민감한 정보가 AI 모델에게 노출될 수 있음을 의미합니다. 사용자는 매번 권한 승인 팝업을 확인하거나, 위험을 감수하고 권한 확인을 건너뛰어야 합니다. - 자격 증명 보호: coi를 사용하면 Claude는 완전히 격리된 컨테이너 내에서 실행됩니다. 호스트의 민감한 파일은 컨테이너에 마운트되지 않으므로 유출이 불가능합니다. - 네트워크 제어: 현재 개발 중인 네트워크 필터링 기능을 통해 모델이 외부로 데이터를 유출하는 경로를 더욱 엄격하게 제한할 수 있습니다. - 제한된 접근: 오직 명시적으로 마운트된 워크스페이스 파일에만 접근할 수 있어 피해 범위를 최소화합니다.
2. 호스트 시스템의 무결성 유지
AI 코딩 어시스턴트는 작업을 완수하기 위해 다양한 의존성 패키지를 설치하려는 경향이 있습니다. Node.js, Python, Ruby의 특정 버전이나 각종 빌드 도구들이 호스트 시스템에 무분별하게 설치되면 시스템이 지저분해지고 버전 충돌이 발생할 수 있습니다. - 독립된 런타임: 각 프로젝트마다 필요한 Ruby 버전이나 Rust 툴체인을 컨테이너 내부에만 설치하여 호스트 시스템을 깨끗하게 유지합니다. - 빠른 시작: 가상 머신(VM) 수준의 격리를 제공하면서도 Docker와 유사한 수준의 빠른 시작 속도(약 2초)를 자랑합니다. - 휘발성 및 지속성 선택: 기본적으로는 세션 종료 후 폐기되는 휘발성 구조이지만, 필요한 경우 persistent 플래그를 통해 설치된 도구들을 유지할 수 있습니다.
3. 왜 Docker가 아닌 Incus인가?
coi가 Docker 대신 Incus를 선택한 이유는 시스템 컨테이너로서의 이점 때문입니다. - Docker-in-Docker 지원: Claude는 종종 작업 중에 Docker를 실행해야 할 때가 있습니다. 일반적인 Docker 환경에서 Docker를 또 실행하는 것은 보안상 취약하거나 설정이 매우 복잡하지만, Incus는 시스템 컨테이너로서 별도의 트릭 없이도 내부에서 Docker 데몬을 안정적으로 구동할 수 있습니다. - 자동 UID 매핑: 호스트와 컨테이너 간의 파일 권한 문제를 해결하기 위해 복잡한 chown 명령어를 실행할 필요가 없습니다. Incus가 이를 자동으로 처리하여 원활한 파일 수정 권한을 보장합니다.
4. 개발 생산성을 높이는 부가 기능
- 다중 슬롯 세션: slot 옵션을 통해 프론트엔드 작업과 API 디버깅 작업을 서로 다른 격리된 슬롯에서 동시에 진행할 수 있습니다.
- 세션 복구 및 유지: tmux를 기반으로 동작하므로 작업 도중 연결을 끊었다가 나중에 다시 연결(coi attach)하여 진행 상황을 이어갈 수 있습니다.
- 워크스페이스 기반 컨텍스트: 각 프로젝트 폴더마다 대화 기록이 별도로 관리되어 프로젝트 간 컨텍스트가 섞이는 일을 방지합니다.
5. 위험한 플래그의 안전한 재해석
Claude Code의 dangerously-skip-permissions 플래그는 호스트 시스템에서 직접 사용할 경우 매우 위험합니다. 그러나 coi 컨테이너 내부에서는 이 플래그가 AI의 자율성을 극대화하는 강력한 도구가 됩니다. 격리된 환경 덕분에 AI가 자유롭게 명령을 실행하더라도 호스트의 SSH 키나 Git 자격 증명이 노출될 위험이 없기 때문입니다.