- AI가 생성한 코드를 안전하게 실행하기 위해 설계된 Rust 기반의 경량 Python 인터프리터로, 컨테이너 샌드박스의 복잡성과 지연을 제거
-
파일시스템·환경변수·네트워크 접근을 완전히 차단하고, 개발자가 지정한 외부 함수만 호출 가능
-
1 마이크로초 미만의 시작 시간과 CPython과 유사한 실행 성능을 제공하며, Rust·Python·JavaScript에서 모두 호출 가능
- 실행 상태를 바이트 단위로 스냅샷 저장 및 복원할 수 있어, 프로세스 간 중단·재개가 가능
- Pydantic AI의 Code Mode 기능을 구동할 예정으로, LLM이 작성한 Python 코드를 안전하게 실행하는 핵심 구성요소로 사용
Monty 개요
-
Monty는 Rust로 작성된 실험적 Python 인터프리터로, AI가 생성한 코드를 안전하게 실행하기 위한 도구
- 컨테이너 기반 샌드박스의 비용·지연·복잡성을 피하고, LLM이 작성한 Python 코드를 직접 실행 가능
- 시작 시간은 수 마이크로초 단위, 일반적인 컨테이너의 수백 밀리초보다 훨씬 빠름
-
가능한 기능
- Python 코드의 일부 문법 실행 지원, 타입 힌트 기반 정적 타입체크 포함
-
호스트 접근 완전 차단, 외부 함수 호출은 개발자가 명시적으로 허용한 함수만 가능
-
Rust·Python·JavaScript에서 호출 가능하며, 리소스 사용량 추적 및 제한 기능 내장
-
stdout/stderr 수집, 비동기 코드 실행, 스냅샷 저장 및 복원 기능 지원
-
제한 사항
- 표준 라이브러리는 sys, typing, asyncio, dataclasses(예정), json(예정)만 사용 가능
-
클래스 정의 및 match 문은 아직 미지원
-
서드파티 라이브러리는 지원 대상 아님
- 설계 목적은 단 하나, 에이전트가 작성한 코드를 안전하게 실행하는 것
Pydantic AI 통합
- Monty는 Pydantic AI의 Code Mode를 구동
- LLM이 도구 호출 대신 Python 코드를 작성하고, Monty가 이를 안전하게 실행
- 예시에서는 get_weather, get_population 같은 함수형 도구를 정의하고, LLM이 이를 호출하는 코드 작성
대안 기술 비교
- Monty는 언어 완전성은 제한적이지만, 보안·속도·단순성에서 우수
-
시작 지연 0.06ms, 무료, 설치 간단, 스냅샷 기능 지원
- 다른 기술과의 비교 요약:
-
Docker: 완전한 CPython 환경, 보안 양호하나 시작 지연 195ms
-
Pyodide: WASM 기반, 보안 약하고 시작 지연 2800ms
-
starlark-rust: 매우 제한된 언어, 빠르지만 Python과 다름
-
sandboxing 서비스: 보안 강력하나 비용·지연·설정 복잡
-
YOLO Python(exec/subprocess) : 빠르지만 보안 전무
- Monty는 파일 접근 제어, 리소스 제한, 스냅샷 기반 중단·재개 기능을 통해
AI 코드 실행용 안전한 Python 환경을 제공