v0.6 · call-tree provenance · usage metering

Lightning-fast isolated
runtimes for AI agents

Secure, isolated sandboxes for every agent sub-task. Fan out in parallel, recurse safely, and trace every LLM call back to its root, with no shared state and no credential leaks.

>10×

faster than Docker

See methodology ↓

Docker 808 ms
Sandy fork 59 ms

Host: familiar sandbox API

from sandy import Sandbox

sb = Sandbox.create()
sb.files.write("job.py", "print(sum(range(10)))")
print(sb.commands.run("python job.py").stdout)
sb.kill()

Benchmarks

Numbers, not claims

n=10, bare-metal Firecracker · KVM host

Spawn latency p50
Docker container init + Python startup 808 ms
Sandy fork CoW snapshot restore 59 ms
Sandy ready fork + agentd /health 93 ms
0200ms400ms600ms808ms
variance < 2 ms across 10 runs
13.6× faster spawn · 8.7× faster to ready
10 children parallel vs sequential
Sequential spawns 10 × 59 ms 595 ms
Parallel fan-out all start simultaneously ~60 ms
0150ms300ms450ms595ms
wall time = single-child time regardless of N
10× faster wall time: N children, same latency as 1

Recursive agents: host + guest (no string soup)

# host
from sandy import SandyIsolatedREPL

with SandyIsolatedREPL(context_payload=docs) as env:
    result = env.execute_code(PARENT)
    tree = env.get_call_tree()
# guest (PARENT): each call = child sandbox
summaries = rlm_query_batched([
    f"Summarise:\n{doc}" for doc in context["docs"]
])
answer = {"summaries": summaries}

How it works

Float like a butterfly, work like a bee

Light sandboxes. Fast spawn. Children that work in parallel, then leave a full call tree behind.

Fast

Fork in tens of ms. Fan out without waiting in line.

CoW snapshot restore. Parallel children, wall time stays near one spawn.

Isolated

Every sub-agent gets a sealed runtime. No shared state. No keys inside.

Separate filesystem, process tree, and network. Host broker for LLM calls.

Traceable

The whole tree walks home as JSONL: who called whom, at what depth, for how much.

run_id, call_id, depth, parent links, cost tags for pass-through billing.

Demo use cases

What can you build?

Each demo spawns multiple child sandboxes via rlm_query() and returns a full call-tree.

Recursive summarisation

Two (or three) passages summarised in parallel child sandboxes, merged by the parent into a single brief.

2–3 children · max-depth 2

Debate

Three child sandboxes argue FOR, AGAINST, and as JUDGE on a given topic. The judge delivers a verdict.

3 children · parallel

Code review

Four specialist reviewers (security, performance, correctness, and style) each analyse a code snippet independently.

4 children · parallel

Tournament

N contestants each solve a coding problem independently. A judge child selects the winner and explains its reasoning.

N children · configurable