Bastion: 백그라운드 코딩 에이전트를 위한 격리된 Linux VM
Bastion은 백그라운드 코딩 에이전트를 위해 특별히 설계된 격리된 Linux 가상 머신(VM)을 제공합니다. 각 에이전트에게 개별 VM을 부여함으로써, Bastion은 병렬 에이전트 간의 런타임 충돌을 제거하고 파일 시스템 및 백그라운드 프로세스에 대한 완전한 제어권을 제공합니다.
Bastion의 주요 기능
Bastion은 개발자에게 전용 및 재현 가능한 환경을 제공함으로써 백그라운드 코딩 에이전트를 확장할 수 있게 해줍니다. 이 시스템은 다음과 같은 기능을 통해 격리 및 자동화를 구현하도록 설계되었습니다:
가상 머신 격리
모든 코딩 에이전트는 별도의 VM에서 실행되므로, 병렬로 작업하는 에이전트들이 서로 간섭하지 않도록 보장합니다. 이러한 격리는 에이전트에게 백그라운드 프로세스 및 파일 시스템 관리를 포함하여 특정 개발 환경에 대한 완전한 관리자 제어권을 제공합니다.
JSON 기반 환경 정의
환경은 수동으로 구성되지 않습니다. 대신, Bastion은 스키마 검증이 완료된 JSON 템플릿을 사용하여 환경을 초기화합니다. 이 템플릿은 에이전트의 작업 디렉토리, 인증 키(예: OpenAI API keys), 그리고 특정 모델 구성(예: openai/gpt-5.5)을 정의합니다.
셀프 호스팅 및 인프라
Bastion은 KVM 지원이 가능한 모든 Linux 시스템에서 셀프 호스팅할 수 있습니다. 이를 통해 로컬 워크스테이션이나 AWS EC2와 같은 클라우드 인스턴스에 배포할 수 있어, 사용자가 자신의 인프라를 완전히 제어할 수 있습니다.
워크플로우 및 구현
Bastion에서 에이전트 환경을 배포하는 과정은 다음 4단계로 이루어집니다:
- 템플릿 생성: 에이전트의 환경을 정의하기 위한 JSON 구성 파일이 생성됩니다. 여기에는 사용자가 초기화 단계(예: Bun 설치, Git 리포지토리 클론,
bun install실행 등)를 지정할 수 있는actions블록과nohup bun run dev &와 같은 시작 명령어가 포함됩니다. - 템플릿 초기화:
bastion templates create --key acme-app --file ./template.json명령어를 사용하여 Bastion CLI로 템플릿을 등록합니다. - 환경 배포:
bastion env create --template-key acme-app --key agent-1 --tag issue-32명령어를 사용하여 템플릿으로부터 환경을 배포합니다. - 인터페이스 연결: 사용자는 SSH를 통해 환경에 직접 접속하거나,
bastion opencode --key agent-1명령어를 사용하여 Bastion 전용opencode인터페이스를 통해 접속할 수 있습니다.
기술 아키텍처
Bastion은 격리 계층을 위해 KVM(Kernel-based Virtual Machine)을 활용합니다. 시스템은 사용자 정의 액션을 통해 환경 설정을 간소화하기 위한 다양한 유틸리티 도구와 런타임을 제공합니다. 또한 환경 서비스로의 프록시 및 여러 에이전트 환경을 관리하기 위한 멀티플렉서를 지원합니다.
"Cool concept! I guess you already knew the name Bastion would conflict with the term "Bastion host""
— @Alifatisk on Hacker News