
AI 에이전트 코드를 위한 기능 제어가 적용된 WASM 샌드박스. 에이전트는 명시적으로 제공되고 정의된 제약 조건이 있는 도구만 호출할 수 있습니다. 샌드박스화된 가상 파일 시스템, 네트워크 없음, 셸 이스케이프 불가. 단일 바이너리, Docker 또는 VM 불필요.
이 저장소는 amla-sandbox Python 패키지의 출시 소스입니다. 개발은 amlalabs 모노레포에서 이루어집니다; 이 저장소는 릴리스 시 업데이트됩니다. amla_sandbox.wasm으로 컴파일되는 Rust 런타임은 amla-sandbox-core에 있습니다; 이 Python 패키지가 빌드된 정확한 릴리스 태그는 .mirror-deps.json에 기록되어 있습니다.
amla-sandbox는 AI 에이전트 코드에 대한 기능 적용이 가능한 WASM 샌드박스입니다. 에이전트는 사용자가 명시적으로 제공한 도구만 호출할 수 있으며, 사용자가 정의한 제약 조건이 적용됩니다. 샌드박스화된 가상 파일 시스템. 네트워크 없음. 셸 탈출 불가.
pip install amla-sandbox
Docker 없음. VM 없음. 하나의 바이너리로 모든 곳에서 작동.
from amla_sandbox import create_sandbox_tool
sandbox = create_sandbox_tool()
# JavaScript
sandbox.run("console.log('hello'.toUpperCase())", language="javascript")
# Shell
sandbox.run("echo 'hello' | tr 'a-z' 'A-Z'", language="shell")
# With tools
def get_weather(city: str) -> dict:
return {"city": city, "temp": 72}
sandbox = create_sandbox_tool(tools=[get_weather])
sandbox.run(
"const w = await get_weather({city: 'SF'}); console.log(w);",
language="javascript",
)
기능 제약 조건 사용:
from amla_sandbox import Sandbox, ToolCallCap, ConstraintSet, Param
sandbox = Sandbox(
capabilities=[
ToolCallCap(
method_pattern="stripe/charges/*",
constraints=ConstraintSet([
Param("amount") <= 10000,
Param("currency").is_in(["USD", "EUR"]),
]),
max_calls=100,
),
],
tool_handler=my_handler,
)
전체 API 표면, 프레임워크 통합, 제약 조건 DSL에 대해서는 PyPI 페이지 및 examples/ 디렉토리를 참조하세요.
샌드박스는 최소한의 시스템 호출 표면을 위해 WASI와 함께 WebAssembly 내에서 실행됩니다. WASM 격리 위에 모든 도구 호출은 기능 검증을 거칩니다; 접근은 명시적으로 허용되며 암시적으로 제공되지 않습니다. 전체 설명 및 절충점은 위의 빠른 시작 및 업스트림 PyPI README를 참조하세요.
대부분의 사용자에게는 PyPI에서 설치하는 것이 권장됩니다; 휠에는 미리 빌드된 WASM 바이너리가 포함되어 있습니다. 직접 휠을 빌드하려면:
uv build
휠에 번들된 WASM 아티팩트를 재생성하려면 .mirror-deps.json에 고정된 태그의 amla-sandbox-core에서 빌드한 후, uv build를 실행하기 전에 결과물을 src/amla_sandbox/_wasm/amla_sandbox.wasm에 놓으세요.
CONTRIBUTING.md를 참조하세요. 이 미러에 대한 풀 리퀘스트는 다음 릴리스에서 덮어쓰기됩니다; 모노레포를 대상으로 하거나 여기에 이슈를 열어주세요.
Python 패키지 코드는 MIT 라이선스입니다. 번들된 Rust WASM 런타임은 AGPL-3.0-or-later OR BUSL-1.1입니다.