그냥 systemd-nspawn을 쓰면 됨. 바퀴를 다시 만들지 않았으면 함. 원하는 옵션은 거의 다 갖췄고, 커널 기능도 깊이 이해하고 활용함.
문서 한 페이지 읽기 귀찮아서 매일 새로운 샌드박스 솔루션을 만드는 것처럼 보임.
나를 비롯한 많은 사람에게는 사용법과 한계에 대한 명확한 안내가 부족한 것 같음. Docker와 컨테이너는 실제로는 그렇지 않더라도 샌드박스를 제공한다고 홍보되지만, 기존 systemd의 사용자 수준 격리는 이해하기가 상당히 어려움.
내가 원하는 건 샌드박스나 VM이 아니라 에이전트 전용 클라우드 컴퓨터일지도 모름. 그러면 저장 공간이나 권한 등을 신경 쓰지 않아도 됨.
살펴볼 예정인데, 먼저 궁금한 게 있음. 코딩 에이전트는 일반적으로 VM 안에서 실행하는 게 좋은 관행 아닌가? 보안 경계가 생겨서 에이전트의 활동을 VM 내부로 제한할 수 있음.
이 솔루션은 그 방식과 어떻게 비교되나? “격리된 샌드박스”라고 하는데, 정확히 무엇을 의미하나?
pipod를 자체 호스팅하면 모든 pi 세션이 자신의 VM에서 실행됨. 그 VM 안에서 각 pi 세션은 별도 컨테이너로 실행됨.
개인적으로는 나만의 에이전트 실행 틀이나 샌드박스를 만드는 데 토큰을 쓰고 싶지는 않음. 토큰을 쓰면 구현하기는 훨씬 수월해지지만, 결국 내가 계속 관리해야 하는 부담을 떠안고 본업에서 주의가 분산되는 느낌임.
그래서 단일 공급자 종속을 줄이고 샌드박스를 추상화하려고 omnigent를 시험 중임. 샌드박스용으로 openshell도 써봤고, 둘 다 계속 발전하길 바람.
Forgejo와 Pi를 결합해 소프트웨어 팀에 좀 더 가깝게 동작하는 비슷한 시스템을 만들었음. https://bakedpi.dev.
다른 솔루션보다 수동 작업이 많지만, 에이전트가 실행에 옮기기 전에 무엇을 하려는지 파악하는 편을 선호함.
각자 별도 VM에 격리하는 구조는 아니고 Docker를 사용함. 가장 안전한 방식은 아니지만, 현재는 그렇게 운영 중임.
Claude Code를 대체할 개인용 에이전트 실행 틀을 만드는 중인데, 그중 아주 작은 부분이 바로 이런 기능임. 프로젝트 자체가 무척 재미있고, 샌드박스와 microVM도 지원함.
각자 자기만의 실행 틀을 만드는 사람이 수천 명은 될 것 같음. 진정한 개인용 컴퓨팅의 시대임!
우리에게도 pi pod 자체 호스팅이 잘 맞을 것 같음. pod 사이의 네트워크 격리는 어떻게 처리하고 있나?
Kata Containers와 kind(Docker 안에서 실행하는 Kubernetes)로 자체 샌드박스를 운영해 본 사람이 있나?
이름의 “pod” 때문에 그렇게 들리지만, Kubernetes 기반 솔루션은 아닌 것 같음.
Kubernetes 기반 시스템을 찾는다면 kagent가 좋은 선택임. https://kagent.dev/docs/kagent/0.x/concepts/agents/.
클러스터에서 에이전트를 실행하기 위한 여러 추상화를 제공함. 간단한 인라인 텍스트로 정의하거나 pi가 들어 있는 이미지처럼 자체 에이전트 이미지를 사용할 수 있음. API, UI, 관측 가능성, Substrate 연동 등 유용한 기능도 갖춤.
pi와 첫소리가 맞는 이름이 마음에 들었지만, 그 대가로 약간의 혼란이 생기리라는 건 예상했음.
내가 대상 사용자일 것 같음. 현재 지하실 서버에서 최소한의 Docker 컨테이너로 pi를 실행하며 코드 작업 공간과 설정 디렉터리에 접근하도록 해둠. 여기에 자체 호스팅 pi pod를 쓰면 어떤 추가 이점이 있나?
그 환경이라면 가장 큰 이점은 모바일 앱을 통한 접근성일 것 같음. 앱은 아직 출시하지 않았지만 GitHub 저장소의 Swift/Kotlin 소스로 직접 빌드할 수 있음.
그 밖의 핵심은 pi와 에이전트의 모든 설정을 조직·사용자·프로젝트 수준에서 명확히 정의할 수 있다는 것임. 협업하는 팀에 가장 직접적인 도움이 되지만, 나처럼 여러 기기에서 여러 프로젝트를 다루는 개인에게도 유용함.
Zed 등에서 ACP를 쓴다면 관심 있을 만한 비슷한 프로젝트를 만들고 있음. 언젠가 Show HN에도 올려야겠음.
Zed에는 ACP 에이전트처럼 보이지만, 실제로는 PC에 Docker 컨테이너를 띄우고 WebSocket으로 에이전트와의 ACP 연결을 중계함. Pi 설정을 바인드 마운트할 수 있고, 변경 사항이 호스트에 전파되지 않도록 파일을 복사하는 방식도 지원함.
초기 단계의 플러그인 기능도 있음. 기본적으로 ACP용 nginx 프록시 같은 구조이며, 에이전트 출력·도구 호출·파일 접근·셸 명령에서 OpenRouter 비밀 키를 감지하면 세션을 자동 종료하는 플러그인도 만들었음. 서버 같은 원격 대상은 아직 지원하지 않지만 계획에 들어 있음.
접속할 때마다 새 컨테이너를 만들어 같은 초기 환경을 재현하는 것도 차이점임. 환경을 유지하는 방식도 개발 중이며, 기반 기능은 갖춰져 있어서 호스트 측 실행 파일이 새 컨테이너를 띄우기 전에 기존 컨테이너를 찾도록 바꾸면 됨. https://abyss.scurry.io/
서버를 관리하지 않고 앱을 자체 호스팅할 수 있는 tarvis.io를 개발 중임. 코딩하고 개발 서버를 실행할 수 있는 클라우드 개발 환경도 제공하며, 같은 앱을 Tarvis 작업 공간에서 자체 호스팅 앱으로 운영할 수 있음.
Tarvis가 보안, 저장 공간, 백업, SSL 도메인을 관리함. 앱마다 SSL 도메인이 자동으로 생기고 본인만 접근할 수 있으니 한번 써보길 바람.
나는 여기서 DeepSeek용 에이전트 실행 틀을 자체 호스팅해 쓰고 있음. 에이전트에게 설정을 맡기면 pi도 같은 방식으로 호스팅하고 이동 중에 브라우저로 접근할 수 있음.