From 7069fa225d9c831e1f3f26fce2fb7087b34233e5 Mon Sep 17 00:00:00 2001 From: didericis Date: Sat, 18 Jul 2026 06:28:26 -0400 Subject: [PATCH] docs(research): add long-running posture axis to the sandbox landscape Adds a "Long-running posture" row to the comparison table and an addendum note contrasting the two models: E2B and CubeSandbox are ephemeral-per-task (5-min default timeout, tier-capped continuous runtime, duration via pause/resume + reconnect-by-id), while bot-bottle bottles are persistent, named, and supervised by default. For agents that run for hours/days this posture difference matters more than the isolation primitive. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01YBCHap11yGAKuKfsehNPaD --- docs/research/agent-sandbox-landscape.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/research/agent-sandbox-landscape.md b/docs/research/agent-sandbox-landscape.md index 2a1eb02..78c289d 100644 --- a/docs/research/agent-sandbox-landscape.md +++ b/docs/research/agent-sandbox-landscape.md @@ -220,6 +220,7 @@ claim that the monetization positioning leans on. See the addendum. | Agent target | Claude Code | Generic (demo) | Generic | Multi-agent wrapper | Generic (+ Claude/OpenAI SDKs) | Claude focus | Generic | Claude + Cursor (MCP/Skills) | Generic (AGENTS.md) | E2B-compatible (platform builders) | | Network policy | Default-deny via own egress scanner + per-bottle allowlist + content DLP + gitleaks on git push | Capability model only | Limited | Not addressed | Default-deny + allowlist + secret-injecting proxy | Default-deny + logging | Per-VM net (unverified) | Not documented | Off by default + allowlist | Default-deny allowlist + instant egress block + audit logs + per-sandbox tokens (eBPF) + credential vault | | Parallel agents | Yes (one bottle per agent) | n/a | Not addressed | One at a time | Multiple VMs | Yes (dashboard) | SDK-level | SDK-level | Architectural | Yes (2,000+/host claimed) | +| Long-running posture | Persistent by default (named, supervised) | n/a (demo) | Session (up while in use) | Per-invocation | Ephemeral VM per run | Per-run (versioned) | Ephemeral + snapshot/fork | Ephemeral / on-demand | Named persistent by default | Ephemeral + auto pause/resume | | Config | JSON manifest (bottles + agents) | Programmatic refs | CLI wizard | Profile files / shell fns | CLI / SDK | DSL + CLI + SDK | SDK | CLI / SDK / MCP | TOML Smolfile | E2B-compatible SDK | | Maturity | Active May 2026 | Research (2022+) | Early (~66 ⭐) | Active (~1.4k ⭐) | Experimental (~574 ⭐) | Private preview | YC, ~4.7k ⭐ | YC, ~6k ⭐, beta | ~3.1k ⭐ | Tencent, prod, ~10.4k ⭐ | @@ -333,6 +334,22 @@ distinctive: injected credentials (they can't leak if they were never present), but it is not a substitute for content inspection of everything else. +**Long-running posture — a sharper axis than raw isolation.** E2B and +CubeSandbox are *ephemeral-per-task* by design; a long-running agent is an +architected pattern on top, not the default. E2B: 5-minute default +timeout, continuous runtime tier-capped (~1h Hobby / ~24h Pro), duration +achieved via **pause/resume** (preserves filesystem + memory + processes; +reconnect by sandbox ID via `Sandbox.connect()`; resume resets the timeout +to 5 min; auto-pause via `on_timeout: "pause"`). CubeSandbox mirrors this +(E2B drop-in) with first-class auto pause/resume and hundred-ms +checkpoint/fork — and, self-hosted, sets its own timeout policy with no +vendor tier caps. bot-bottle inverts the model: a bottle is **persistent, +named, and supervised by default** — long-running *is* the default, not a +session-management loop over pause/resume. smolmachines is the other +persistent-by-default project in this set. For anyone building agents that +run for hours/days, this posture difference matters more than the +isolation primitive. + Why it still doesn't collide head-on: 1. **Shape.** CubeSandbox is a *multi-tenant service for platform