Puck.Sandbox (Puck v0.2.11)

Copy Markdown View Source

Sandbox execution environments for isolated code execution.

Puck provides two types of sandboxes for different use cases:

Runtime Sandboxes

Puck.Sandbox.Runtime manages container-based isolated environments (Docker, Fly.io). Use when you need:

  • Full OS environment with filesystem and networking
  • Long-lived containers with shell command execution
  • Heavy isolation via containers
alias Puck.Sandbox.Runtime

{:ok, sandbox} = Runtime.create({Runtime.Adapters.Test, image: "node:22-slim"})
{:ok, result} = Runtime.exec(sandbox, "node --version")
:ok = Runtime.terminate(sandbox)

Eval Sandboxes

Puck.Sandbox.Eval runs code in in-process interpreters (Lua, JavaScript). Use when you need:

  • Fast, lightweight code evaluation
  • Host callbacks for LLM tool use
  • No container overhead
alias Puck.Sandbox.Eval

{:ok, result} = Eval.eval(:lua, "return 1 + 2")
{:ok, result} = Eval.eval(:lua, """
  return search("laptop")
""", callbacks: %{"search" => &MyApp.search/1})

Comparison

RuntimeEval
IsolationContainer/processBEAM process
FilesystemYesNo
NetworkConfigurableNo
LanguagesAny (shell)Lua (more coming)
Use caseRun programsLLM tool calls