프로젝트 소개

Monty는 Rust로 구현된 안전한 Python 샌드박스로, AI 모델이 생성한 코드를 실행하기 위해 설계되었습니다. 실행마다 컨테이너를 생성하는 대신, 실행 중인 풀에서 1ms 미만으로 시작되는 경량 인터프리터를 제공하여 컨테이너 기반 샌드박싱의 지연 시간, 복잡성, 비용을 줄이는 것을 목표로 합니다. 이 프로젝트는 두 가지 형태로 제공됩니다: MIT 라이선스의 Python 3.14 샌드박스로 패키지로 배포되는 OSS Monty와, 동일한 샌드박스를 WebSocket 뒤에서 서비스로 실행하는 상용 서버인 Full Monty입니다. README에 따르면 새로운 OSS 샌드박스는 실행 중인 풀에서 1ms 미만, Full Monty는 약 2ms가 소요되며, 샌드박스 서비스의 약 1500ms와 비교됩니다. 설계상 샌드박스에는 파일시스템, 환경 변수, 네트워크 접근이 포함되지 않습니다. 코드는 호출자가 명시적으로 전달한 함수와 마운트를 통해서만 호스트에 도달합니다. README는 모델이 작성한 스니펫이 호스트 제공 `nutrition` 함수를 호출하는 예시를 통해 이를 설명하며, 샌드박스는 함수의 반환 값만 받습니다. 설치는 Python(`uv add pydantic-monty`), JavaScript/TypeScript(`npm install @pydantic/monty`), Rust(`cargo add monty`)에서 가능합니다. 상용 Full Monty는 동일한 워커를 컨테이너 이미지로 실행합니다. 문서는 지연 시간 측정을 포함한 소개, Docker, Pyodide, WASI, 샌드박싱 서비스와 같은 대안과의 비교, Python, JavaScript, Rust용 퀵스타트, 보안 모델, 리소스 제한, 스냅샷, 지원되는 Python 하위 집합을 포함한 개념을 다룹니다. Monty는 Pydantic AI에서 Code Mode를 실행하는 데 사용되며, Go(gomonty) 및 Dart/Flutter(dart_monty)용 커뮤니티 바인딩이 존재합니다. Pydantic AI, Pydantic Logfire, Logfire AI Gateway와 함께 Pydantic Stack의 일부입니다.