
Sandbox WASM con applicazione delle capacità per il codice degli agenti AI. Gli agenti possono solo chiamare strumenti esplicitamente forniti con vincoli definiti. Filesystem virtuale in sandbox, nessuna rete, nessuna fuga dalla shell. Un singolo binario, nessun bisogno di Docker o VM.
Questo repository è la sorgente di rilascio per il pacchetto Python amla-sandbox. Lo sviluppo avviene nel monorepo amlalabs; questo repository viene aggiornato al rilascio. Il runtime Rust che compila in amla_sandbox.wasm risiede in amla-sandbox-core; il tag di rilascio esatto contro cui è stato costruito questo pacchetto Python è registrato in .mirror-deps.json.
amla-sandbox è una sandbox WASM con controllo delle capacità per codice di agenti AI. Gli agenti possono chiamare solo gli strumenti che fornisci esplicitamente, con i vincoli che definisci. Filesystem virtuale in sandbox. Nessuna rete. Nessuna fuga dalla shell.
pip install amla-sandbox
Niente Docker. Niente VM. Un singolo binario, funziona ovunque.
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",
)
Con vincoli di capacità:
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,
)
Vedi la pagina PyPI e la directory examples/ per l'intera superficie API, le integrazioni con framework e il DSL dei vincoli.
La sandbox viene eseguita all'interno di WebAssembly con WASI per una superficie di syscall minima. Oltre all'isolamento WASM, ogni chiamata a uno strumento passa attraverso la validazione delle capacità; l'accesso è esplicitamente concesso, non implicitamente disponibile. Vedi l'Avvio rapido sopra e il README PyPI a monte per la spiegazione completa e i compromessi.
Per la maggior parte degli utenti, si consiglia l'installazione da PyPI; la wheel include il binario WASM precompilato. Se vuoi compilare la wheel da solo:
uv build
Per rigenerare l'artefatto WASM incluso nella wheel, compilalo da amla-sandbox-core al tag specificato in .mirror-deps.json, quindi posiziona il risultato in src/amla_sandbox/_wasm/amla_sandbox.wasm prima di eseguire uv build.
Vedi CONTRIBUTING.md. Le pull request contro questo mirror verranno sovrascritte al prossimo rilascio; si prega di puntare al monorepo o aprire un issue qui.
Il codice del pacchetto Python è con licenza MIT. Il runtime Rust WASM incluso è AGPL-3.0-or-later o BUSL-1.1.