Head to head · Code sandboxes · October 2026 research run

Celesto (formerly SmolVM) vs Sprites

Celesto (formerly SmolVM) scores 68 (B) on agent readiness against Sprites's 65.5 (B), and leads in 5 of 7 scored categories. Sprites leads on reliability and security & auth. Both do code sandboxes.

Best code execution sandboxes for AI agents · All 231 sandboxes 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

  • Schema & documentation, 85 against 74
  • Payments & pricing, 60 against 40

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

Sprites B

Best for Agents that need a long-lived machine with installed tools and files kept between sessions, and rollback by checkpoint.

Ahead on

  • Reliability, 80 against 66
  • Security & auth, 61 against 52

Watch for

Five partial Sprites incidents on the status page since 30 August 2026, including 7 hours 28 minutes of intermittent API failures on 23 September and 75 minutes of unreachable Sprite URLs on 11 October

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) +20

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.

Sprites 40

No x402, MPP or L402 (0). Unit prices are public without a login, $0.0385 a CPU-hour, $0.021875 a GB-hour of memory, $0.000683 a GB-hour of hot storage and $0.000027 a GB-hour of cold storage (20). The product page and the pricing page now say every new user gets a $1 free trial with no credit card, invoices under $5 are waived, and new organisations get a $30 trial credit (20; was 10). A person signs up with a Fly.io account in a browser and creates the token (0). 0 + 20 + 20 + 0 = 40.

Reliability Sprites +14

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.

Sprites 80

Hosted lines. status.flyio.net runs on incident.io with history and a Sprites component (20). Five Sprites incidents since 6 August, each partial in its own text, so minor under this run's reading. Deletion jobs failed for 47 minutes on 30 August, "a subset of Sprites users" had API errors for 1 hour 38 minutes on 2 September, intermittent API failures starting near SJC ran 7 hours 28 minutes on 23 September, creates failed in regions outside Europe for 28 minutes on 8 October, and "some or all" Sprite URLs on sprites.app were unavailable for about 75 minutes on 11 October after a certificate error (20; was 5, which isn't a checklist value). The product page gives creation limits of 10 a minute on pay-as-you-go and 60 to 240 on plans, and 100 running Sprites on the Hero plan. No general request limits were found in the docs (10). The docs and the OpenAPI document list no 429 response and no idempotency keys; the Go SDK reads Retry-After and X-RateLimit headers on a 429 and names a sprite_creation_rate_limited code, so Retry-After handling alone (10; was 7). Fly.io's published Service Level Agreement applies to the Services for customers on an Enterprise plan, with 99.9 per cent monthly availability and service credits of 10 to 30 per cent, and excludes no product, so it is read as covering Sprites (10; was 5, which isn't a checklist value). No beta or preview label was found on Sprites, so the surface is read as generally available, though the API document is version 0.1.12 and the SDKs are 0.x (10; was 8, which isn't a checklist value). 20 + 20 + 10 + 10 + 10 + 10 = 80.

Schema & documentation Celesto (formerly SmolVM) +11

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.

Sprites 74

A public OpenAPI 3.1 document with 44 operations and 59 schemas, plus an AsyncAPI file for the WebSocket calls (25). llms.txt and a Markdown copy of every docs page (10). Concept pages say when to use Services, Tasks and checkpoints and when not to, while operation descriptions are one line each (15). Request bodies have required fields and examples, but the document has 6 enums and no schema for error bodies (10). 116 examples in the OpenAPI document. Error responses are a status code and a short phrase, and the product page's create and exec examples disagree with the OpenAPI document (8). Paths are versioned under /v1. No API changelog was found, and only the Python SDK keeps a changelog file (6).

Security & auth Sprites +9

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.

Sprites 61

Bearer tokens are created and removed at sprites.dev/account per organisation, with no scopes found. The MCP connector uses OAuth, and its default token can only create a capped number of Sprites under a name prefix (22). Sprite URLs are private by default, Connectors deny by default and can limit provider paths, and a privileges policy can drop capabilities. The network allowlist is opt-in, so egress is open by default (15). Connectors keep provider credentials out of the Sprite and the MCP page describes what its tools can destroy. No prompt-injection guidance was found (9). No audit log of API calls was found in the reviewed documentation (0). fly.io now publishes a security.txt (Contact security@fly.io, Expires 2027-10-22, Policy docs.fly.io/security), and the policy says reports are acknowledged within 3 business days. SOC 2 Type 2 and named third-party penetration testers. No bug bounty, which the policy confirms, and no advisories for the Sprites SDKs in OSV (15; was 13). 22 + 15 + 9 + 0 + 15 = 61.

Score by category

CategoryWeight this runCelesto (formerly SmolVM)SpritesEdge
Reliability16%206680Sprites +14
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28574Celesto (formerly SmolVM) +11
Agent ergonomics13%16.26968Celesto (formerly SmolVM) +1
Security & auth14%17.55261Sprites +9
Payments & pricing10%12.56040Celesto (formerly SmolVM) +20
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88180Celesto (formerly SmolVM) +1
Transparency & trust7%8.87066Celesto (formerly SmolVM) +4
Negative events≤150-2
TotalB 68/100B 65.5/100

Facts side by side

FactCelesto (formerly SmolVM)Sprites
KindSDK + MCPHTTP API
VendorCelesto AI, Inc.Fly.io
Hosted endpointno (local only)no (local only)
TransportsHTTP
AuthNoneAPI key
PricingFreemiumPay per use
x402nono
LicenceApache-2.0Proprietary service under the Fly.io Terms of Service. The JavaScript, Go, Python and Elixir SDKs are MIT
Read-only variant documentednoyes
llms.txtyesyes
Last release2026-11-052026-10-20
Terms last updated2026-10-302026-04-29
Privacy policy last updated2026-10-302026-09-24
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/wk158k npm/wk, 59k PyPI/wk

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.

Sprites

A Sprite keeps a 100 GB ext4 disk between runs, bills compute only while active and can be checkpointed and restored through a published OpenAPI contract. The status page records five partial Sprites incidents since August, one lasting over seven hours, and outbound network access is unrestricted until a policy is set.

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

Sprites

  1. Create a token at sprites.dev/account after a browser signup, and send it as Authorization: Bearer <token> to https://api.sprites.dev
  2. Follow the OpenAPI document, not the product page example. Create with POST /v1/sprites and a JSON name, and run commands with POST /v1/sprites/{name}/exec using cmd query parameters
  3. Set a network policy with POST /v1/sprites/{name}/policy/network before running untrusted code. Egress is open until one is set
  4. Processes started by exec stop on a cold wake. Define a Service for anything that must answer the request that wakes the Sprite
  5. Create a checkpoint before a restore. Restoring replaces the filesystem, ends active sessions and keeps no copy of the replaced state
  6. Sprite creation is limited to 10 a minute on pay-as-you-go. The Go SDK reads Retry-After and the error code sprite_creation_rate_limited on a 429
  7. Delete Sprites you no longer need. An idle Sprite still bills cold storage for the bytes it holds
  8. Set SPRITES_CLIENT_SIGNALS=0 before the first SDK call if your operator doesn't want client-signal headers sent

Questions

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

Celesto (formerly SmolVM) scores 68 (B) on agent readiness against Sprites's 65.5 (B), and leads in 5 of 7 scored categories. Sprites leads on reliability and security & auth.

Can an agent call Celesto (formerly SmolVM) and Sprites without installing anything?

No hosted endpoint is listed for Celesto (formerly SmolVM). No hosted endpoint is listed for Sprites.

Are Celesto (formerly SmolVM) and Sprites open source?

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

Other comparisons with Celesto (formerly SmolVM) or Sprites

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.