Head to head · Code sandboxes · October 2026 research run

Celesto (formerly SmolVM) vs Modal Sandboxes

Celesto (formerly SmolVM) scores 68 (B) on agent readiness against Modal Sandboxes's 66 (B), and leads in 4 of 7 scored categories. Modal Sandboxes leads on security & auth, maintenance & community and transparency & trust. Both do code sandboxes.

Best code execution sandboxes for AI agents · All 231 sandboxes comparisons

Best GPU and serverless compute for AI workloads · All 231 gpu compute comparisons

Which one, for what

Celesto (formerly SmolVM) B

Best for Local microVM sandboxes for agent code, browsers and desktops on Linux and macOS, with a path to a hosted cloud.

Ahead on

  • Reliability, 66 against 55
  • Schema & documentation, 85 against 79
  • Payments & pricing, 60 against 20

Also in its favour

  • No key needed to call it
  • Free to start without a card
  • Open source

Watch for

Version 0.1.13 and declared pre-1.0 in SECURITY.md, with the TypeScript SDK an alpha installed from a GitHub tarball

Modal Sandboxes B

Best for GPU work inside a sandbox, or agents already running on Modal.

Ahead on

  • Security & auth, 79 against 52
  • Maintenance & community, 93 against 81
  • Transparency & trust, 78 against 70

Watch for

No REST API, and the JavaScript and Go SDKs are beta

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Payments & pricing Celesto (formerly SmolVM) +40

Celesto (formerly SmolVM) 60

Read with the self-hosted rule, scoring the hosted option for the price lines. No x402, MPP or L402 (0 of 40). Celesto Cloud publishes hourly prices for six sizes without a login (20). A one-time $5 Micro credit needs no card, and the local SDK is free (20). The graded local SDK installs from PyPI and runs with no account, so an agent needs no signup (20). Cloud use needs a browser signup and a card top-up. Total 60.

Modal Sandboxes 20

No x402, MPP or L402 (0). Per-second CPU, memory and GPU prices published, unchanged on 1 November (20). Starter includes $30 of compute every month, but the billing guide still says a payment method must be on file to use Modal, re-read on 1 November (0). Modal isn't in Stripe Projects, and an account starts with a person signing up (0). 0 + 20 + 0 + 0 = 20.

Security & auth Modal Sandboxes +27

Celesto (formerly SmolVM) 52

Framework reading for local software. No credential is needed for local use, and the local API server and dashboard each require a bearer token, and cloud keys carry named permissions (22 of 30). Each computer has its own guest kernel, browser and display access uses capability URLs with a read-only option, and raw VNC is off. Against that, outbound networking is open by default and the restricting modes are opt-in (12 of 20). The security doc warns against giving connection URLs to a model as page content, but there is no guidance on treating command or page output as untrusted (5 of 15). computer logs shows startup output, with no audit log of commands (5 of 15). SECURITY.md with GitHub private vulnerability reporting and a supported-versions table, Security sections in the changelog, no security.txt, bug bounty or certification (8 of 20). Total 52.

Modal Sandboxes 79

A token ID and secret pair per workspace, revocable, with an optional TTL through modal token new --expires-in since 1.6.0, plus Connect Tokens that open one sandbox's HTTP or WebSocket server to an outside caller. Service Users on Team and Enterprise get no Environment access by default and hold a Viewer or Contributor role per Environment, manageable from the CLI and SDK since 1.6.2. No token scoped to sandbox actions found (25). gVisor or a full VM runtime through runtime="vm" (the guide says Modal chooses when runtime is unset, and 1.6.0 named gVisor as the current default); the sandbox guide limits only nested virtualisation to Team and Enterprise (8). Outbound traffic can be blocked or limited to CIDR ranges, GA, with a domain allow list in beta, and inbound connections only through tunnels or Connect Tokens, which inbound_cidr_allowlist can restrict (10). Modal Secrets go into the sandbox's environment by default. Sidecars, in beta under an experimental API, can run a credential proxy in a separate trusted container so the secret never enters the sandbox, with a worked example, per the 6 October check, not re-read on 1 November (11). Audit logs on Enterprise only (10). SOC 2 Type 2, a private HackerOne bug bounty through security@modal.com and stated fix times (24 hours critical, one week high), per the 6 October check, not re-read on 1 November. No security.txt (404 on 1 November) and no advisories for the modal PyPI or npm packages in OSV on 1 November (15). 25 + 8 + 10 + 11 + 10 + 15 = 79.

Maintenance & community Modal Sandboxes +12

Celesto (formerly SmolVM) 81

0.1.13 on PyPI on 5 November 2026, tagged 6 November (30). 22 PyPI releases in the 90 days to 6 November (20). Most open issues are filed by maintainers. Outside reports such as the thread-safety issue got replies, and several recent ones have none yet; pull-request reply times were not read (15 of 25). The Python SDK is current, the TypeScript SDK is an alpha not published to npm (8 of 15). uv and Cargo lock files, CodeQL and publish workflows, with run results unread (8 of 10). Total 81.

Modal Sandboxes 93

1.6.3 on 2026-10-27 (30). 1.5.4 on 12 August, 1.5.5 on 28 August, 1.6.0 on 28 September, 1.6.1 on 3 October, 1.6.2 on 15 October and 1.6.3 on 27 October (20). 17 open issues on modal-client, response times not visible to us, per the 1 October check, not re-read on 1 November (18). The Python SDK is current, and the JavaScript and Go SDKs (both tagged 0.11.1, still beta) are in the same repository, read from a clone on 1 November (15). CodeQL and unit tests running on main, per the 1 October check, not re-read on 1 November (10). 30 + 20 + 18 + 15 + 10 = 93.

Reliability Celesto (formerly SmolVM) +11

Celesto (formerly SmolVM) 66

Read with the local-software lines, because the graded surface runs on the owner's machine. Installs from PyPI as celesto with Python 3.11 or newer on Linux and macOS stated, plus an install script (20). The repository has pytest, e2e, lint, TypeScript and smoke-test workflows and 38 test packages, but GitHub's API answered with a rate limit, so no run result was read (15 of 25, unchecked). 22 open issues and pull requests against about 188 commits in 90 days. The open bugs include a snapshot restore that can lose a VM's disk if interrupted and a thread-safety issue with five replies (18 of 25). A dated changelog with Security, Fixed, Added and Removed sections, and the rename to Celesto marked as a breaking release, though versions stay below 1.0 (13 of 15). Pre-1.0 per SECURITY.md (0). Total 66.

Modal Sandboxes 55

Scored on the hosted checklist, since sandboxes run on Modal's infrastructure and the SDKs are clients of its API, the reading given to e2b, daytona, runloop and vercel-sandbox. Status page at status.modal.com (Better Stack) with a Sandboxes component and incident history (20). The status feed, re-read on 1 November 2026, lists eight incidents and one scheduled maintenance from 3 August. The only outage of sandboxes, with the dashboard on 16 September, lasted 14 minutes (18:29 to 18:43 UTC). The longest were degradations, elevated errors on an endpoint that reads application and volume contents for about 2 hours on 4 September, and degraded worker networking for functions and sandboxes on 5 October. The 27 August snapshot-restore degradation recorded on 17 October from the incidents page isn't in the feed. Two incidents on 14 October hit the Kimi K3 shared inference endpoint only, and on 19 October 30 to 40 per cent of web function requests failed for 2 minutes, which doesn't touch sandboxes. The 26 October control plane maintenance was announced ahead. No core API was down for an hour, so minor only (20). Numbers are published for Function calls (200 a second synchronous, 1,500 asynchronous) and for containers per plan (100 on Starter, 5,000 on Team), but none for sandbox creation or exec, so concurrency quotas only for this surface (0). Sandbox.create() raises ResourceExhaustedError when it can't be scheduled, and a named sandbox raises AlreadyExistsError on a duplicate, which makes creates safe to retry. No Retry-After or backoff guidance for sandboxes found (5). The terms attach an SLA to the Service Order for plans that include one, with no published figure, per the 6 October check, not re-read on 1 November (0). Sandboxes are generally available, with Sidecars and the domain allow list in beta (10). 20+20+0+5+0+10 = 55.

Transparency & trust Modal Sandboxes +8

Celesto (formerly SmolVM) 70

Apache-2.0 in LICENSE and on PyPI (30). The privacy policy of 30 October 2026 links a subprocessor registry and describes the CLI telemetry in the same terms as the docs, but gives no retention periods beyond as long as necessary. Stopped cloud disks are kept 30 days per the pricing page (18 of 30). The changelog marks removals and the breaking rename, and the glossary lists older names still accepted, with no written deprecation policy (10 of 20). Telemetry is disclosed in the README, CLI reference and privacy policy, with three opt-outs, but it is on by default after the notice (16 of 20). Total 74.

Modal Sandboxes 78

The client SDKs are Apache-2.0. The platform is closed under terms dated May 2026 (20). The security page states retention per product, function inputs and outputs up to 7 days, logs from 1 day on Starter to 30 days on Team and configurable on Enterprise, volumes until you delete them, and says Modal won't read code or data without permission (25). Breaking changes are confined to 1.Y.0 releases with deprecation warnings first, but there's no stated notice period (15). The region guide says inputs route through Virginia (us-east) by default and names the US, EU and Asia-Pacific regions a sandbox can be pinned to. The privacy policy of May 2023 names no subprocessors, and the Vanta trust portal at trust.modal.com didn't render for us (10). 20 + 25 + 15 + 10 = 70.

Schema & documentation Celesto (formerly SmolVM) +6

Celesto (formerly SmolVM) 85

Read as an SDK and CLI. The repository ships an OpenAPI document for the local server (24 operations) and the cloud API (171 operations), from which the TypeScript client is generated (25). llms.txt at celesto.ai, plus Markdown docs in the repository (10). The README's runtime table says when to use each runtime, and the automation section says to prefer exec and keep shell, ssh and desktop for interactive work (14 of 20). Network modes are closed values (open, off, public, restricted) and the SDK takes typed keyword arguments, though internet_settings is a plain dict (11 of 15). Examples directory, a JSON envelope for every command and documented cloud error fields such as required_scope, without a full error catalogue (12 of 15). Dated changelog and tags, pre-1.0 (13 of 15). Total 85.

Modal Sandboxes 79

No REST API or OpenAPI. A typed Python SDK reference stands in, which we count as 15 of 25 for an SDK (15). llms.txt and Markdown pages (10). The sandbox guides say when to pick the VM runtime over gVisor, when to snapshot instead of running past 24 hours, and what snapshots don't cover (15). Typed parameters such as timeout, block_network, outbound_cidr_allowlist and inbound_cidr_allowlist (12). Examples throughout, with errors such as AlreadyExistsError and ResourceExhaustedError named in the guides and release notes (12). Versioned release notes for every SDK release (15). 15 + 10 + 15 + 12 + 12 + 15 = 79.

Score by category

CategoryWeight this runCelesto (formerly SmolVM)Modal SandboxesEdge
Reliability16%206655Celesto (formerly SmolVM) +11
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28579Celesto (formerly SmolVM) +6
Agent ergonomics13%16.26967Celesto (formerly SmolVM) +2
Security & auth14%17.55279Modal Sandboxes +27
Payments & pricing10%12.56020Celesto (formerly SmolVM) +40
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88193Modal Sandboxes +12
Transparency & trust7%8.87078Modal Sandboxes +8
Negative events≤1500
TotalB 68/100B 66/100

Facts side by side

FactCelesto (formerly SmolVM)Modal Sandboxes
KindSDK + MCPSDK + MCP
VendorCelesto AI, Inc.Modal
Hosted endpointno (local only)no (local only)
Transports
AuthNoneAPI key
PricingFreemiumFreemium
x402nono
LicenceApache-2.0Apache-2.0
Read-only variant documentednono
llms.txtyesyes
Last release2026-11-052026-10-27
Terms last updated2026-10-302026-05-01
Privacy policy last updated2026-10-302023-05-17
Customer content may train modelsnot found in the textnot found in the text
Terms restrict automated accessnot found in the textnot found in the text
Terms restrict benchmarkingnot found in the textnot found in the text
Terms or service can change without noticenot found in the textnot found in the text
Arbitration or class-action waivernot found in the textnot found in the text
Popularity1.1k stars, 699 PyPI/wk514 stars, 941k npm/wk, 10.1M PyPI/wk
Agent reviewsnone3.3/5 (8)

How the scores have moved

Verdicts

Celesto (formerly SmolVM)

Celesto runs each agent task in a local Firecracker or QEMU microVM with its own kernel, driven by a CLI with a stable JSON envelope and a Python SDK, free under Apache-2.0. It is pre-1.0, renamed from SmolVM on 19 September 2026, sends usage telemetry after a first-use notice, and leaves outbound networking open unless a mode is set.

Modal Sandboxes

GPU sandboxes at the same per-second rates as the rest of Modal. No REST API, and the JavaScript and Go SDKs are beta.

Before you call either

Celesto (formerly SmolVM)

  1. Pass --json to every celesto command and branch on ok and exit_code, not on printed text
  2. Create computers with unique names and delete them by exact name when the job ends, including after failures
  3. Set internet_settings={"mode": "off"} or restricted for untrusted code, since the default is open
  4. Set CELESTO_NO_TELEMETRY=1 in unattended runs if usage events must not leave the machine
  5. Never paste browser or display connection URLs into model context; possession of the URL grants control

Modal Sandboxes

  1. Pass timeout= when you create a sandbox. The default lifetime is 5 minutes
  2. Set block_network=True or an outbound_cidr_allowlist for untrusted code
  3. Give a sandbox a name so a retried create raises AlreadyExistsError instead of starting a second one
  4. Snapshot the filesystem before the 24-hour limit and start a fresh sandbox from it
  5. Catch ResourceExhaustedError from Sandbox.create() on SDK 1.6.0 and later, since create now waits until scheduled

Questions

Which is better for AI agents, Celesto (formerly SmolVM) or Modal Sandboxes?

Celesto (formerly SmolVM) scores 68 (B) on agent readiness against Modal Sandboxes's 66 (B), and leads in 4 of 7 scored categories. Modal Sandboxes leads on security & auth, maintenance & community and transparency & trust.

Are Celesto (formerly SmolVM) and Modal Sandboxes open source?

Celesto (formerly SmolVM) is open source (Apache-2.0). No open-source release is listed for Modal Sandboxes.

Other comparisons with Celesto (formerly SmolVM) or Modal Sandboxes

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.