
Песочница WASM с контролем возможностей для кода ИИ-агентов. Агенты могут вызывать только явно предоставленные инструменты с заданными ограничениями. Изолированная виртуальная файловая система, без сети, без побега из оболочки. Один бинарный файл, не требует Docker или ВМ.
Этот репозиторий является исходным для выпуска Python-пакета amla-sandbox. Разработка ведется в монорепозитории amlalabs; этот репозиторий обновляется при выпуске. Rust-рантайм, компилируемый в amla_sandbox.wasm, находится в amla-sandbox-core; точный тег выпуска, под которым был собран этот Python-пакет, записан в .mirror-deps.json.
amla-sandbox — это WASM-песочница с принудительным контролем возможностей для кода AI-агентов. Агенты могут вызывать только те инструменты, которые вы явно предоставили, с заданными вами ограничениями. Виртуальная файловая система в изолированной среде. Нет сети. Нет доступа к оболочке.
pip install amla-sandbox
Никакого Docker. Никакой виртуальной машины. Один бинарник, работает везде.
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,
)
Смотрите страницу на PyPI и каталог examples/ для полного обзора API, интеграций с фреймворками и DSL ограничений.
Песочница работает внутри WebAssembly с WASI для минимального набора системных вызовов. Поверх изоляции WASM каждый вызов инструмента проходит проверку возможностей; доступ явно предоставляется, а не подразумевается. Смотрите Быстрый старт выше и README на PyPI для полного объяснения и компромиссов.
Для большинства пользователей рекомендуется установка из PyPI; wheel включает предварительно собранный WASM-бинарник. Если вы хотите собрать wheel самостоятельно:
uv build
Чтобы пересоздать WASM-артефакт, встроенный в wheel, соберите его из amla-sandbox-core по тегу, указанному в .mirror-deps.json, затем поместите результат в src/amla_sandbox/_wasm/amla_sandbox.wasm перед запуском uv build.
Смотрите CONTRIBUTING.md. Pull request'ы к этому зеркалу будут перезаписаны при следующем выпуске; направляйте их в монорепозиторий или открывайте issue здесь.
Код Python-пакета лицензирован под MIT. Встроенный Rust WASM-рантайм — под AGPL-3.0-or-later ИЛИ BUSL-1.1.