OpenSandbox 소개
최근 대규모 언어 모델(LLM)을 기반으로 한 코딩 에이전트(Coding Agent)나 GUI 에이전트 등 복잡한 작업을 자율적으로 수행하는 AI 애플리케이션이 폭발적으로 증가하고 있습니다. 이러한 에이전트들은 스스로 코드를 작성하고 시스템 명령어와 파일에 접근하여 작업을 수행하게 되는데, 이 과정에서 생성된 코드를 안전하게 실행하고 테스트할 수 있는 철저히 격리된 환경의 중요성이 대두되었습니다. 에이전트가 호스트 시스템에 직접 접근할 경우, 의도치 않은 시스템 손상이나 악의적인 동작으로 인한 심각한 보안 위험이 발생할 수 있기 때문입니다.
OpenSandbox는 이러한 문제를 해결하기 위해 알리바바(Alibaba)에서 오픈소스로 공개한 AI 애플리케이션 전용 범용 샌드박스 플랫폼입니다. 이 플랫폼은 단순히 코드만 실행하는 것을 넘어, AI 코드 실행, 에이전트 평가, 강화 학습(RL) 훈련 등 다양한 시나리오에 맞춰 안전하고 독립적인 실행 환경을 제공하는 데 중점을 둡니다. 복잡한 환경을 제어해야 하는 개발자들을 위해 다국어 SDK와 통합된 API를 지원하여, 어플리케이션 내에 샌드박스 환경을 매끄럽게 연동할 수 있도록 설계되었습니다.
특히 OpenSandbox는 로컬 환경에서 가볍게 테스트할 수 있는 Docker 기반의 런타임부터, 대규모 분산 스케줄링이 필요한 엔터프라이즈 환경을 위한 고성능 Kubernetes 런타임까지 모두 지원합니다. 이를 통해 개발자는 복잡한 인프라나 네트워크 격리 설정에 대한 부담 없이, 오직 안전하고 효율적인 AI 에이전트의 동작과 확장에만 집중할 수 있습니다.
OpenSandbox vs. 기존 샌드박스 환경 비교
전통적인 Docker 기반의 컨테이너 환경은 애플리케이션을 패키징하고 실행하기 위한 설정이 비교적 간단하지만, 호스트의 커널을 공유하기 때문에 컨테이너 탈출(Container Breakout) 취약점 등 강력한 격리성을 보장하기 어려운 한계가 있습니다.
반면, OpenSandbox는 단순한 컨테이너 격리를 넘어 gVisor, Kata Containers, Firecracker microVM과 같은 하드웨어 기반의 보안 컨테이너(Secure Container) 런타임을 함께 지원합니다. 이를 통해 호스트 시스템과 샌드박스 워크로드 간의 강력한 격리(Strong Isolation)를 구현하여 높은 수준의 보안을 보장합니다.
또한, E2B와 같이 최근 주목받고 있는 AI 전용 샌드박스 서비스들과 비교했을 때, OpenSandbox는 완전한 오픈소스 생태계를 지향한다는 특징이 있습니다. 통합 Ingress Gateway를 통한 세밀한 네트워크 라우팅과 각 샌드박스별 아웃바운드(Egress) 제어 등 인프라 레벨의 네트워크 정책을 직접 설정할 수 있습니다. 자체적인 Kubernetes 클러스터 상에서 대규모 스케줄링을 기본적으로 지원하므로, 퍼블릭 클라우드에 종속되지 않고 엔터프라이즈 자체 환경 내에서 에이전트 샌드박스를 구축하려는 팀에게 매우 적합한 대안이 됩니다.
OpenSandbox의 주요 기능 및 특징
다국어 SDK 및 통합 샌드박스 프로토콜
OpenSandbox는 개발자가 자신이 익숙한 프로그래밍 언어로 샌드박스의 생명주기를 제어할 수 있도록 Python, Java/Kotlin, JavaScript/TypeScript, C#/.NET 등 다양한 언어의 SDK를 공식 제공하고 있습니다. 나아가 샌드박스 생성, 삭제 등 생명주기 관리를 위한 API와 내부 명령어 실행 등을 위한 실행 API를 통합된 프로토콜로 정의하였습니다. 이 프로토콜 구조 덕분에 사용자는 필요에 맞게 커스텀 샌드박스 런타임을 유연하게 확장하여 사용할 수 있습니다.
유연한 런타임 및 폭넓은 환경 구성
이 플랫폼은 내장된 생명주기 관리 시스템을 통해 Docker뿐만 아니라 고성능 Kubernetes 런타임을 모두 지원합니다. 명령어 처리, 파일 시스템 접근, 그리고 코드 인터프리터(Code Interpreter) 구현체가 기본으로 내장되어 있어 아래와 같은 폭넓은 환경을 즉시 구축할 수 있습니다:
-
코딩 에이전트 (Coding Agents): Claude Code, Gemini CLI, OpenAI Codex CLI, Kimi CLI(Moonshot AI), LangGraph 워크플로우 등 다양한 AI 에이전트와의 통합 예제가 기본 제공됩니다.
-
브라우저 및 데스크톱 자동화: VNC 및 DevTools 접근이 활성화된 Chrome 환경, Playwright를 활용한 헤드리스 웹 스크래핑, 브라우저에서 구동되는 VS Code(code-server), 그리고 완전한 데스크톱(Desktop) 환
경까지 샌드박스 내부에서 구동할 수 있습니다. -
머신러닝 및 훈련: DQN CartPole과 같은 강화 학습 훈련 환경을 샌드박스 내에 구축하고, 체크포인트 저장 및 요약 출력을 안전하게 수행할 수 있습니다.
세밀한 네트워크 정책 및 강력한 보안 격리 기능
AI 에이전트가 외부 API와 통신하거나 웹을 탐색할 때 네트워크를 통제하는 것은 매우 중요합니다. OpenSandbox는 다양한 라우팅 전략을 지원하는 통합 Ingress Gateway를 제공하며, 개별 샌드박스마다 데이터 유출 방지를 위한 Egress(아웃바운드) 제어 정책을 적용할 수 있습니다.
앞서 언급한 대로 기본 런타임 외에도 gVisor, Kata Containers, Firecracker microVM 등 다양한 보안 컨테이너 런타임 통합을 지원하여, 악의적인 AI 코드가 호스트 네트워크나 시스템 영역으로 침투하는 것을 근본적으로 차단합니다.
로컬 환경에서의 설치 및 코드 인터프리터 실행 예제
OpenSandbox는 로컬 환경에 Docker와 Python 3.10 이상의 버전이 준비되어 있다면 매우 간단한 명령어로 설치하고 샌드박스를 띄워볼 수 있습니다. 다음은 샌드박스 서버 설치 및 서비스 시작을 위한 명령어입니다:
# 서버 패키지 설치
uv pip install opensandbox-server
# 설정 파일 초기화 (Docker 예제 템플릿 사용)
opensandbox-server init-config ~/.sandbox.toml --example docker
# 샌드박스 서버 구동
opensandbox-server
이후 Python SDK를 활용한 코드 인터프리터 샌드박스 실행이 가능합니다. 다음은 SDK를 활용하여 샌드박스를 생성하고, 파일 입출력 및 Python 코드를 직접 실행하여 결과를 반환받는 비동기 코드 예제입니다:
import asyncio
from datetime import timedelta
from code_interpreter import CodeInterpreter, SupportedLanguage
from opensandbox import Sandbox
from opensandbox.models import WriteEntry
async def main() -> None:
# 1. 샌드박스 컨테이너 생성 및 초기화
sandbox = await Sandbox.create(
"opensandbox/code-interpreter:v1.0.1",
entrypoint=["/opt/opensandbox/code-interpreter.sh"],
env={"PYTHON_VERSION": "3.11"},
timeout=timedelta(minutes=10),
)
async with sandbox:
# 2. 샌드박스 내에서 쉘 명령어 직접 실행
execution = await sandbox.commands.run("echo 'Hello OpenSandbox!'")
print(execution.logs.stdout[0].text)
# 3. 샌드박스 내부 파일 시스템에 파일 쓰기 및 읽기
await sandbox.files.write_files([
WriteEntry(path="/tmp/hello.txt", data="Hello World", mode=644)
])
content = await sandbox.files.read_file("/tmp/hello.txt")
print(f"Content: {content}") # Content: Hello World 출력
# 4. 코드 인터프리터 객체 생성 및 코드 실행
interpreter = await CodeInterpreter.create(sandbox)
result = await interpreter.codes.run(
"""
import sys
print(sys.version)
result = 2 + 2
result
""",
language=SupportedLanguage.PYTHON,
)
print(result.result[0].text) # 결과값 4 출력
# 5. 작업 완료 후 샌드박스 자원 정리
await sandbox.kill()
if __name__ == "__main__":
asyncio.run(main())
라이선스
OpenSandbox 프로젝트는 Apache 2.0 라이선스로 공개 및 배포되고 있습니다.
OpenSandbox 공식 홈페이지
OpenSandbox 프로젝트 GitHub 저장소
더 읽어보기
-
Sandbox Runtime(srt): Anthropic이 공개한 AI 에이전트를 위한 안전하고 가벼운 코드 실행 환경
-
BoxLite: AI 에이전트를 위한, 안전하고 가벼운 샌드박스 런타임 (no daemon, no dependencies)
-
Daytona: AI 코드 실행 및 개발 환경을 위한 보안 샌드박스 인프라 및 오픈소스 개발 환경 관리 도구
-
ScreenEnv: 데스크탑 에이전트를 위한 Docker 기반 풀스택 자동화 환경 (feat. Hugging Face)
-
CodeRunner: LLM의 코드를 안전하게 로컬에서 처리하는 프로젝트 (feat. Apple Container)
-
ModelPack: AI/ML 모델의 패키징/배포/실행을 위한 오픈소스 표준 (= AI 모델을 위한 Docker, feat. OCI)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
