{"id":"agent-sandbox","slug":"agent-sandbox","name":"Secure code sandbox for agents","shortName":"Secure code sandbox for agents","problemStatement":"Execute untrusted LLM-generated code safely.","whenNotTopPick":"Need persistent full IDE workspaces — Daytona. Python jobs that aren't untrusted REPL — Modal.","categoryIds":["cat-sandboxes-browsers"],"depotPickProviderId":"e2b","depotPickRationale":"privacy/isolation capability + dx + reliability.","runnersUpIds":["modal","daytona","fly-machines","upstash-box"],"weights":{"capabilityFit":0.2,"pricePerformance":0.12,"latencyReliability":0.12,"developerDx":0.12,"privacyPosture":0.25,"lockInRisk":0.09,"maturity":0.1},"methodologyNotes":"privacy/isolation capability + dx + reliability.","tags":["agent"],"depth":{"whenNotToUse":{"text":"Need persistent full IDE workspaces — Daytona. Python jobs that aren't untrusted REPL — Modal.","source":"editorial `whenNotTopPick` (data/jtbds.json)"},"whenNotToUseReason":null,"runnerUp":{"providerId":"modal","name":"Modal","overallForJob":8.23,"pickOverallForJob":8.47,"beatsPickOn":["pricePerformance","developerDx","maturity"],"source":"first resolvable entry of the job's editorially ranked `runnersUpIds`; scores are stored job-weighted scores"},"runnerUpReason":null,"lockIn":{"pickLockInRisk":4,"runnerUpLockInRisk":4.5,"scale":"0–10 stored curated estimate; higher = more lock-in (worse)","pickExitSignals":[],"runnerUpExitSignals":[],"pickNotes":[],"selfHostFallback":[{"id":"e2b-sdk","name":"E2B SDK","license":"Apache-2.0","sourceUrl":"https://github.com/e2b-dev/e2b/blob/main/LICENSE"},{"id":"firecracker","name":"Firecracker","license":"Apache-2.0","sourceUrl":"https://raw.githubusercontent.com/firecracker-microvm/firecracker/main/LICENSE"},{"id":"gvisor","name":"gVisor","license":"Apache-2.0","sourceUrl":"https://raw.githubusercontent.com/google/gvisor/master/LICENSE"}],"migration":"The pick has lower stored lock-in risk than runner-up Modal (4 vs 4.5). Self-host fallback listed for this job: E2B SDK, Firecracker, gVisor.","migrationReason":null,"derivedFrom":"stored lockInRisk scores, provider tags (oss, self-host, openai-compat, open-models), free rows that list this job, and verbatim provider notes. No migration guide was invented."}},"freshness":{"pick":{"score":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"lastReviewed":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"sourceCheck":{"checkedAt":"2026-10-27","sourceUrls":2,"sourcesReachable":2,"pricingRows":13,"pricingRowsReconfirmed":1,"note":"A source re-check confirms the page is reachable and, for pricing rows, that the stored amount and SKU name appear on it. It does not re-derive or change the score.","reason":null}}},"depotPick":{"id":"e2b","slug":"e2b","name":"E2B","tagline":"Depot default code sandbox for agents. Use for untrusted code; Daytona when you need persistent…","overall":8.47},"runnersUp":[{"id":"modal","slug":"modal","name":"Modal","tagline":"Depot darling for Python agent backends and bursty GPU jobs. If you think in functions not VMs, start here.","overall":8.23},{"id":"daytona","slug":"daytona","name":"Daytona","tagline":"Choose when agents need sticky filesystems and full dev environments. E2B for disposable code exec. Confirm…","overall":8.13},{"id":"fly-machines","slug":"fly-machines","name":"Fly Machines","tagline":"DIY sandbox substrate with global edge. Prefer E2B unless you need custom machine control.","overall":8.09},{"id":"upstash-box","slug":"upstash-box","name":"Upstash Box","tagline":"Interesting E2B peer for freezeable agent computers. Keep medium until preview exits; production default…","overall":7.5}]}