v0.6 · call-tree provenance · usage metering

Lightning-fast isolated
runtimes for AI agents

Every agent sub-task gets its own sandboxed runtime. Fan out in parallel, recurse to any depth, trace every LLM call back to its root — with cost allocation billing built in. No shared state. No credential leaks. Full audit trail.

Get started free Read the docs

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
from sandy import SandyIsolatedREPL

env = SandyIsolatedREPL(api_url=SANDY_URL, api_key=KEY)
result = env.run(code="""
    # each rlm_query() spawns a fresh isolated child sandbox
    summary_a = rlm_query("Summarise: " + context["doc_a"])
    summary_b = rlm_query("Summarise: " + context["doc_b"])
    answer = {"summaries": [summary_a, summary_b], "ready": True}
""", context={"doc_a": DOC_A, "doc_b": DOC_B})

tree = env.recorder.get_call_tree()   # full provenance, every call
01
True isolation
Each sub-task runs in its own sandbox — separate filesystem, process tree, and network. No shared state between calls.
02
Parallel fan-out
Spawn dozens of sandboxes concurrently. One per rollout step, tool call, specialist agent, or tournament contestant.
03
Arbitrary recursion
Children spawn children. rlm_query() inside any sandbox automatically orchestrates the next generation.
04
Full call-tree provenance
Every LLM and RLM call stamped with run_id, call_id, depth. JSONL export for replay and audit.
05
Credentials stay on the host
LLM API keys never enter the sandbox. A host-side broker routes llm_query() calls and injects responses.
06
Cost allocation built in
Tag sandboxes with customer_id, project, or any label. Query /v1/usage/breakdown to see exact costs per customer — ready to pass through to your own billing.
59 ms spawn p50CoW snapshot restore
13.6× faster than Docker808 ms → 59 ms
< 2 ms variancedeterministic CoW
100% calls tracedrun_id · depth · parent
$ cost allocation APItag by customer · project

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