{
  "data": {
    "a": {
      "slug": "celesto",
      "name": "Celesto (formerly SmolVM)",
      "vendor": "Celesto AI, Inc.",
      "vendorUrl": "https://celesto.ai",
      "kind": "sdk",
      "category": "code-sandboxes",
      "summary": "Celesto, formerly SmolVM, is an open-source Python SDK and CLI from Celesto AI that runs disposable Firecracker or QEMU microVMs on the owner's machine for agent code, browsers and desktops, with an optional paid Celesto Cloud.",
      "url": "https://www.anchorterminal.com/tools/celesto",
      "markdownUrl": "https://www.anchorterminal.com/tools/celesto.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/celesto.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/celesto.json",
      "dns": "celesto.grade.anchorterminal.com",
      "repo": "https://github.com/CelestoAI/Celesto",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "celesto"
        }
      ],
      "auth": "none",
      "authNotes": "Local use needs no account or key. The local API server and dashboard each require a bearer token, generated at start or read from CELESTO_SERVER_TOKEN and CELESTO_DASHBOARD_TOKEN. Celesto Cloud uses an organisation-bound CELESTO_API_KEY with named permissions (see, execute, delete) set in the dashboard.",
      "pricing": "freemium",
      "pricingNotes": "The local SDK and CLI are free under Apache-2.0. Celesto Cloud bills sandboxes by the running hour from $0.015 (Micro, 1 vCPU, 2 GB) to $0.16 (XL, 8 vCPU, 32 GB), prepaid from $2.01, with a one-time $5 Micro credit and no card.",
      "priceSummary": "$0.015 / session-hr",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the repository, the docs, llms.txt or the pricing page (checked 2026-11-06). Cloud runtime is prepaid by card under Settings \u003e Billing.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 1149,
        "npmWeekly": null,
        "pypiWeekly": 699,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://celesto.ai/docs",
      "llmsTxt": "https://celesto.ai/llms.txt",
      "openapi": "https://github.com/CelestoAI/Celesto/blob/main/ts/celesto-local-server.openapi.json",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs",
        "sandbox.persist",
        "sandbox.browser"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "hosted",
        "freemium",
        "no-card",
        "free-tier",
        "apache-2.0",
        "python",
        "typescript",
        "cli",
        "microvm",
        "firecracker",
        "llms-txt",
        "openapi",
        "telemetry",
        "pre-1.0",
        "renamed"
      ],
      "lastRelease": "2026-11-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68,
        "grade": "B",
        "agentReady": false,
        "rank": 298,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 81,
          "payments": 60,
          "reliability": 66,
          "schema": 85,
          "security": 52,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Local microVM sandboxes for agent code, browsers and desktops on Linux and macOS, with a path to a hosted cloud.",
        "strengths": [
          "Apache-2.0, installs from PyPI with `celesto setup` and `celesto doctor`, and runs local microVMs with no account or key",
          "Every `--json` response has the same `ok`, `command`, `exit_code`, `data` and `error` fields, with recovery commands in errors",
          "Network modes `off`, `public` (proxy that rejects private and metadata addresses) and `restricted` with CIDR or domain allowlists",
          "Dated changelog with Security sections, breaking changes marked, and 22 PyPI releases in the 90 days to 6 November 2026",
          "OpenAPI documents for the local server (24 operations) and the cloud API (171 operations) in the repository, plus llms.txt"
        ],
        "weaknesses": [
          "Version 0.1.13 and declared pre-1.0 in SECURITY.md, with the TypeScript SDK an alpha installed from a GitHub tarball",
          "Outbound network access is open by default, and Linux TAP mode does not block every private network or metadata service",
          "Usage telemetry to PostHog is on after a first-use notice, until switched off",
          "Renamed from SmolVM on 19 September 2026 in a breaking release that removed the `smolvm` command and import path",
          "No security.txt, bug bounty or certification found, and CI results could not be read"
        ],
        "agentNotes": [
          "Pass `--json` to every `celesto` command and branch on `ok` and `exit_code`, not on printed text",
          "Create computers with unique names and delete them by exact name when the job ends, including after failures",
          "Set `internet_settings={\"mode\": \"off\"}` or `restricted` for untrusted code, since the default is open",
          "Set CELESTO_NO_TELEMETRY=1 in unattended runs if usage events must not leave the machine",
          "Never paste browser or display connection URLs into model context; possession of the URL grants control"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 81,
          "payments": 60,
          "reliability": 66,
          "schema": 85,
          "security": 52,
          "transparency": 74
        },
        "provenanceScore": 66,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install celesto \u0026\u0026 celesto setup \u0026\u0026 celesto doctor",
        "headless": {
          "create": "celesto computer create --name agent-job --json",
          "delete": "celesto computer delete agent-job --json",
          "exec": "celesto computer exec agent-job --json -- python -m pytest"
        }
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/celesto"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Cloud Micro sandbox (1 vCPU, 2 GB)",
          "unit": "session-hour",
          "usd": 0.015,
          "note": "Billed by the running hour; local use is free"
        },
        {
          "item": "Cloud XL sandbox (8 vCPU, 32 GB)",
          "unit": "session-hour",
          "usd": 0.16,
          "note": "Largest size on the pricing page"
        }
      ],
      "provenance": {
        "legalEntity": "Celesto AI, Inc.",
        "domain": "celesto.ai",
        "domainRegistered": "2025-07-13",
        "endpointOnVendorDomain": null,
        "terms": "https://celesto.ai/legal/terms",
        "privacy": "https://celesto.ai/legal/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/CelestoAI/Celesto/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The privacy policy, last updated 30 October 2026, names Celesto AI, Inc., a Delaware corporation with a Wilmington mailing address. It has no clause on automated access.",
          "celesto.ai/robots.txt allows all crawlers. docs.celesto.ai carries Content-Signal ai-train=yes, search=yes, ai-input=yes.",
          "RDAP gives celesto.ai a registration date of 13 July 2025.",
          "/.well-known/security.txt returns 404. SECURITY.md asks for private reports through GitHub's vulnerability reporting. No status page is linked from the pricing page."
        ],
        "score": 66
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/celesto.json",
      "live": {
        "slug": "celesto",
        "versions": [
          {
            "registry": "github",
            "name": "CelestoAI/Celesto",
            "version": "v0.1.13",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:13:37.416837168Z"
          },
          {
            "registry": "pypi",
            "name": "celesto",
            "version": "0.1.13",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:13:37.309276304Z"
          }
        ],
        "githubStars": 1149,
        "pypiWeekly": 699,
        "securityTxt": {
          "url": "https://celesto.ai/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-11-07T16:01:01.176888246Z"
        },
        "llmsTxt": {
          "url": "https://celesto.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:46.784166983Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/CelestoAI/Celesto/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:18:00.719411253Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8ddae4a6adbd"
          },
          {
            "url": "https://celesto.ai/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:50.868104256Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "87ce310b1db6"
          },
          {
            "url": "https://celesto.ai/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:53.107282947Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1dece6f9a42e"
          }
        ],
        "updatedAt": "2026-11-07T16:01:01.176888246Z"
      }
    },
    "answer": "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 \u0026 auth.",
    "b": {
      "slug": "sprites",
      "name": "Sprites",
      "vendor": "Fly.io",
      "vendorUrl": "https://fly.io",
      "kind": "http-api",
      "category": "code-sandboxes",
      "summary": "Sprites are hosted Linux microVMs from Fly.io that keep their disk between runs, pause when idle and wake on request. They are driven through a REST API, a CLI, four SDKs or a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/sprites",
      "markdownUrl": "https://www.anchorterminal.com/tools/sprites.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/sprites.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sprites.json",
      "dns": "sprites.grade.anchorterminal.com",
      "repo": "https://github.com/superfly/sprites-js",
      "license": "Proprietary service under the Fly.io Terms of Service. The JavaScript, Go, Python and Elixir SDKs are MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@fly/sprites"
        },
        {
          "registry": "pypi",
          "name": "sprites-py"
        }
      ],
      "auth": "api-key",
      "authNotes": "A bearer token created at sprites.dev/account after signing in with a Fly.io account, sent as `Authorization: Bearer \u003ctoken\u003e` to `https://api.sprites.dev`. Tokens belong to an organisation, and no scopes or expiry were found in the reviewed docs. The CLI signs in through a browser with `sprite org auth` or takes a token with `sprite auth setup --token`. The hosted MCP server uses OAuth with a token restricted by default to a name prefix and a capped number of Sprites.",
      "pricing": "usage",
      "pricingNotes": "$0.0385 a CPU-hour and $0.021875 a GB-hour of memory while a Sprite is active, hot storage at $0.000683 a GB-hour while awake and cold storage at $0.000027 a GB-hour while data is kept. Nothing is charged per Sprite or for bandwidth. 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. The product page also describes monthly plans with allowances, of which Hero ($100) and Mythic ($2,000) are priced (https://fly.io/sprites/, https://fly.io/pricing/, checked 2026-11-04).",
      "priceSummary": "$0.0385 / vCPU-hr",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Sprites docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 157565,
        "pypiWeekly": 58695,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.fly.io/sprites",
      "llmsTxt": "https://docs.fly.io/llms.txt",
      "openapi": "https://docs.fly.io/sprites/api/openapi.json",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs",
        "sandbox.persist"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "microvm",
        "persistent",
        "checkpoints",
        "openapi",
        "cli",
        "typescript",
        "python",
        "go",
        "elixir",
        "mcp",
        "llms-txt",
        "status-page"
      ],
      "lastRelease": "2026-10-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.5,
        "grade": "B",
        "agentReady": false,
        "rank": 419,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 80,
          "payments": 40,
          "reliability": 80,
          "schema": 74,
          "security": 61,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -2,
        "negativeNotes": [
          "2026-10-08, still on 2026-11-04: the Fly.io pricing page says of Sprites \"No plans and no tiers\", while the Sprites product page describes paid plans (Hero at $100 a month, Mythic at $2,000) that carry usage allowances and set concurrency and creation-rate limits, and links to the pricing page for \"every tier and what each includes\". Prices for the other named plans were not found. 2 points. https://fly.io/pricing.md and https://fly.io/sprites.md"
        ],
        "verdict": "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.",
        "bestFor": "Agents that need a long-lived machine with installed tools and files kept between sessions, and rollback by checkpoint.",
        "strengths": [
          "The filesystem persists across pauses, and compute billing stops about 30 seconds after activity ends, per the lifecycle docs",
          "A public OpenAPI 3.1 document covers 44 operations on sprites, exec, files, checkpoints, services and policies, with an AsyncAPI file for the WebSocket calls",
          "Connectors hold third-party credentials outside the Sprite, deny access by default and can limit which provider paths a Sprite may call",
          "Checkpoints are copy-on-write snapshots of the writable filesystem, and the last five are mounted read-only inside the Sprite",
          "Unit prices are public, $0.0385 a CPU-hour, $0.021875 a GB-hour of memory and about $0.50 a GB-month of hot storage",
          "Official SDKs for JavaScript, Go, Python and Elixir are MIT, with JavaScript and Go releases on 20 October 2026",
          "New users get a $1 trial with no credit card, and new organisations a $30 trial credit"
        ],
        "weaknesses": [
          "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",
          "Outbound network access is unrestricted by default. The DNS allowlist is opt-in and set from outside the Sprite",
          "The product page creates a Sprite with `PUT /v1/sprites/my-sprite` and a JSON `command` body, while the OpenAPI document creates with `POST /v1/sprites` and passes `cmd` as a query parameter",
          "No API changelog, deprecation policy or error-code reference was found in the reviewed documentation",
          "The pricing page says Sprites have no plans and no tiers, while the product page describes paid plans that set concurrency and creation-rate limits",
          "No scopes were found for API tokens created at sprites.dev/account. Only the MCP connector's OAuth token is restricted by default"
        ],
        "agentNotes": [
          "Create a token at sprites.dev/account after a browser signup, and send it as `Authorization: Bearer \u003ctoken\u003e` to `https://api.sprites.dev`",
          "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",
          "Set a network policy with `POST /v1/sprites/{name}/policy/network` before running untrusted code. Egress is open until one is set",
          "Processes started by exec stop on a cold wake. Define a Service for anything that must answer the request that wakes the Sprite",
          "Create a checkpoint before a restore. Restoring replaces the filesystem, ends active sessions and keeps no copy of the replaced state",
          "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",
          "Delete Sprites you no longer need. An idle Sprite still bills cold storage for the bytes it holds",
          "Set `SPRITES_CLIENT_SIGNALS=0` before the first SDK call if your operator doesn't want client-signal headers sent"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.5
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 80,
          "payments": 40,
          "reliability": 80,
          "schema": 74,
          "security": 61,
          "transparency": 54
        },
        "provenanceScore": 77,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "curl -fsSL https://sprites.dev/install.sh | sh  # CLI. SDKs: npm install @fly/sprites, pip install sprites-py",
        "http": "curl -X POST https://api.sprites.dev/v1/sprites -H \"Authorization: Bearer $SPRITES_TOKEN\" -H \"Content-Type: application/json\" -d '{\"name\": \"my-sprite\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/sprites"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "CPU time while active",
          "unit": "vcpu-hour",
          "usd": 0.0385,
          "note": "Memory extra at $0.021875 a GB-hour"
        },
        {
          "item": "Hot storage while the Sprite is awake",
          "unit": "gb-month",
          "usd": 0.5,
          "note": "Billed at $0.000683 a GB-hour, on bytes written"
        },
        {
          "item": "Cold storage while data is kept",
          "unit": "gb-month",
          "usd": 0.02,
          "note": "Billed at $0.000027 a GB-hour"
        }
      ],
      "provenance": {
        "legalEntity": "Fly.io, Inc.",
        "domain": "fly.io",
        "domainRegistered": "2004-07-15",
        "endpointOnVendorDomain": false,
        "terms": "https://fly.io/legal/terms-of-service/",
        "privacy": "https://fly.io/legal/privacy-policy/",
        "statusPage": "https://status.flyio.net",
        "changelog": "",
        "securityTxt": "valid",
        "checked": "2026-11-04",
        "notes": [
          "The Terms of Service (effective 29 April 2026) name Fly.io, Inc. and cover the website and all products and services reached through it. No separate Sprites terms were found.",
          "The Privacy Statement is effective 24 September 2026. The sub-processor list was last updated the same day.",
          "The API is at api.sprites.dev and Sprite URLs are on sprites.app, second domains of the vendor's. sprites.dev redirects to fly.io/sprites, and RDAP gives its registration date as 2025-06-03.",
          "RDAP for fly.io gives a registration date of 2004-07-15.",
          "No changelog for the Sprites API or environment was found. The Python SDK repository keeps a CHANGELOG.md.",
          "fly.io/.well-known/security.txt answered 200 on 2026-11-04 with Contact mailto:security@fly.io, Expires 2027-10-22 and Policy https://docs.fly.io/security; it returned 404 on 2026-10-08.",
          "The Terms of Service (effective 29 April 2026) and the Acceptable Use Policy, re-read on 2026-11-04, contain no ban on automated access to the website."
        ],
        "score": 77
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/sprites.json",
      "live": {
        "slug": "sprites",
        "vendorStatus": {
          "page": "https://status.flyio.net",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:22:02.771444274Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@fly/sprites",
            "version": "0.2.4",
            "seenAt": "2026-11-07T00:07:56.820882266Z"
          },
          {
            "registry": "pypi",
            "name": "sprites-py",
            "version": "0.7.2",
            "released": "2026-10-06",
            "seenAt": "2026-11-07T00:07:57.679130508Z"
          }
        ],
        "githubStars": 36,
        "npmWeekly": 155438,
        "pypiWeekly": 49028,
        "securityTxt": {
          "url": "https://fly.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-22T00:00:00.000Z",
          "checkedAt": "2026-11-07T15:59:29.148062685Z"
        },
        "llmsTxt": {
          "url": "https://docs.fly.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:01.177092827Z"
        },
        "domain": {
          "domain": "fly.io",
          "checkedAt": "2026-11-01T14:14:23.336503192Z"
        },
        "pages": [
          {
            "url": "https://fly.io/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:06.728510938Z",
            "changedAt": "2026-11-03T07:50:29.952381888Z",
            "fingerprint": "865ee02dfeeb"
          },
          {
            "url": "https://fly.io/legal/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:02.565728463Z",
            "changedAt": "2026-10-30T05:40:20.286187728Z",
            "fingerprint": "393b851b214a"
          },
          {
            "url": "https://fly.io/legal/terms-of-service/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:04.738120501Z",
            "changedAt": "2026-10-30T05:40:22.599416434Z",
            "fingerprint": "6c040370ed70"
          }
        ],
        "github": {
          "repo": "superfly/sprites-js",
          "checkedAt": "2026-11-02T09:29:16.155768113Z",
          "stars": 36,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-29T15:04:25Z",
          "openIssues": 1,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 8,
          "prsMerged90d": 30,
          "ci": {
            "branch": "main",
            "runs": 30,
            "success": 30,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-29T15:04:57Z"
          },
          "replies": {
            "sampled": 9,
            "unanswered": 1,
            "medianDays": 154.7
          }
        },
        "updatedAt": "2026-11-07T18:22:02.771444274Z"
      }
    },
    "edges": [
      {
        "by": 20,
        "category": "payments",
        "leads": "celesto",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 60,
          "b": 40
        }
      },
      {
        "by": 14,
        "category": "reliability",
        "leads": "sprites",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 66,
          "b": 80
        }
      },
      {
        "by": 11,
        "category": "schema",
        "leads": "celesto",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 85,
          "b": 74
        }
      },
      {
        "by": 9,
        "category": "security",
        "leads": "sprites",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 52,
          "b": 61
        }
      }
    ],
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Celesto AI, Inc.",
        "b": "Fly.io",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Proprietary service under the Fly.io Terms of Service. The JavaScript, Go, Python and Elixir SDKs are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-11-05",
        "b": "2026-10-20",
        "name": "Last release"
      },
      {
        "a": "2026-10-30",
        "b": "2026-04-29",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-30",
        "b": "2026-09-24",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.1k stars, 699 PyPI/wk",
        "b": "158k npm/wk, 59k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "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 \u0026 auth.",
        "question": "Which is better for AI agents, Celesto (formerly SmolVM) or Sprites?"
      },
      {
        "answer": "No hosted endpoint is listed for Celesto (formerly SmolVM). No hosted endpoint is listed for Sprites.",
        "question": "Can an agent call Celesto (formerly SmolVM) and Sprites without installing anything?"
      },
      {
        "answer": "Celesto (formerly SmolVM) is open source (Apache-2.0). No open-source release is listed for Sprites.",
        "question": "Are Celesto (formerly SmolVM) and Sprites open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 85 against 74",
          "Payments \u0026 pricing, 60 against 40"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "Local microVM sandboxes for agent code, browsers and desktops on Linux and macOS, with a path to a hosted cloud.",
        "slug": "celesto",
        "watchFor": "Version 0.1.13 and declared pre-1.0 in SECURITY.md, with the TypeScript SDK an alpha installed from a GitHub tarball"
      },
      {
        "aheadOn": [
          "Reliability, 80 against 66",
          "Security \u0026 auth, 61 against 52"
        ],
        "also": null,
        "goodFor": "Agents that need a long-lived machine with installed tools and files kept between sessions, and rollback by checkpoint.",
        "slug": "sprites",
        "watchFor": "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"
      }
    ],
    "history": {
      "celesto": null,
      "sprites": [
        {
          "causes": [
            "security",
            "evidence",
            "correction"
          ],
          "date": "2026-11-04",
          "delta": 6.9,
          "from": 58.6,
          "fromGrade": "C",
          "to": 65.5,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.3,
          "from": 58.3,
          "fromGrade": "C",
          "to": 58.6,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "sandbox.code",
      "name": "Code sandboxes"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-celesto.json",
        "title": "Amazon Bedrock AgentCore Code Interpreter vs Celesto (formerly SmolVM)",
        "url": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-celesto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-sprites.json",
        "title": "Amazon Bedrock AgentCore Code Interpreter vs Sprites",
        "url": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-celesto.json",
        "title": "Blaxel Sandboxes vs Celesto (formerly SmolVM)",
        "url": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-celesto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-sprites.json",
        "title": "Blaxel Sandboxes vs Sprites",
        "url": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-cloudflare-sandbox-sdk.json",
        "title": "Celesto (formerly SmolVM) vs Cloudflare Sandbox SDK",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-cloudflare-sandbox-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-daytona.json",
        "title": "Celesto (formerly SmolVM) vs Daytona",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-daytona"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-deltabox-lite.json",
        "title": "Celesto (formerly SmolVM) vs DeltaBox Lite",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-deltabox-lite"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-deno-sandbox.json",
        "title": "Celesto (formerly SmolVM) vs Deno Sandbox",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-deno-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-e2b.json",
        "title": "Celesto (formerly SmolVM) vs E2B",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-e2b"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-freestyle.json",
        "title": "Celesto (formerly SmolVM) vs Freestyle",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-freestyle"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-instavm.json",
        "title": "Celesto (formerly SmolVM) vs InstaVM",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-instavm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-maritime.json",
        "title": "Celesto (formerly SmolVM) vs Maritime",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-maritime"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-microsoft-execution-containers.json",
        "title": "Celesto (formerly SmolVM) vs Microsoft Execution Containers",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-microsoft-execution-containers"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-modal-sandboxes.json",
        "title": "Celesto (formerly SmolVM) vs Modal Sandboxes",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-modal-sandboxes"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-morph-cloud.json",
        "title": "Celesto (formerly SmolVM) vs Morph Cloud",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-morph-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-offscreen.json",
        "title": "Celesto (formerly SmolVM) vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-perplexity-space.json",
        "title": "Celesto (formerly SmolVM) vs SPACE",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-perplexity-space"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-runloop.json",
        "title": "Celesto (formerly SmolVM) vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-sandbox0.json",
        "title": "Celesto (formerly SmolVM) vs Sandbox0",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-sandbox0"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-together-code-sandbox.json",
        "title": "Celesto (formerly SmolVM) vs Together Code Sandbox",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-together-code-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/celesto-vs-vercel-sandbox.json",
        "title": "Celesto (formerly SmolVM) vs Vercel Sandbox",
        "url": "https://www.anchorterminal.com/compare/celesto-vs-vercel-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-sprites.json",
        "title": "Cloudflare Sandbox SDK vs Sprites",
        "url": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/daytona-vs-sprites.json",
        "title": "Daytona vs Sprites",
        "url": "https://www.anchorterminal.com/compare/daytona-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deno-sandbox-vs-sprites.json",
        "title": "Deno Sandbox vs Sprites",
        "url": "https://www.anchorterminal.com/compare/deno-sandbox-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/e2b-vs-sprites.json",
        "title": "E2B vs Sprites",
        "url": "https://www.anchorterminal.com/compare/e2b-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freestyle-vs-sprites.json",
        "title": "Freestyle vs Sprites",
        "url": "https://www.anchorterminal.com/compare/freestyle-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/instavm-vs-sprites.json",
        "title": "InstaVM vs Sprites",
        "url": "https://www.anchorterminal.com/compare/instavm-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/maritime-vs-sprites.json",
        "title": "Maritime vs Sprites",
        "url": "https://www.anchorterminal.com/compare/maritime-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-sprites.json",
        "title": "Microsoft Execution Containers vs Sprites",
        "url": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-sprites.json",
        "title": "Modal Sandboxes vs Sprites",
        "url": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/morph-cloud-vs-sprites.json",
        "title": "Morph Cloud vs Sprites",
        "url": "https://www.anchorterminal.com/compare/morph-cloud-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/offscreen-vs-sprites.json",
        "title": "Offscreen vs Sprites",
        "url": "https://www.anchorterminal.com/compare/offscreen-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-space-vs-sprites.json",
        "title": "SPACE vs Sprites",
        "url": "https://www.anchorterminal.com/compare/perplexity-space-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/runloop-vs-sprites.json",
        "title": "Runloop Devboxes vs Sprites",
        "url": "https://www.anchorterminal.com/compare/runloop-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sandbox0-vs-sprites.json",
        "title": "Sandbox0 vs Sprites",
        "url": "https://www.anchorterminal.com/compare/sandbox0-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sprites-vs-together-code-sandbox.json",
        "title": "Sprites vs Together Code Sandbox",
        "url": "https://www.anchorterminal.com/compare/sprites-vs-together-code-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sprites-vs-vercel-sandbox.json",
        "title": "Sprites vs Vercel Sandbox",
        "url": "https://www.anchorterminal.com/compare/sprites-vs-vercel-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent37-vs-celesto.json",
        "title": "Agent 37 Cloud vs Celesto (formerly SmolVM)",
        "url": "https://www.anchorterminal.com/compare/agent37-vs-celesto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent37-vs-sprites.json",
        "title": "Agent 37 Cloud vs Sprites",
        "url": "https://www.anchorterminal.com/compare/agent37-vs-sprites"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deltabox-lite-vs-sprites.json",
        "title": "DeltaBox Lite vs Sprites",
        "url": "https://www.anchorterminal.com/compare/deltabox-lite-vs-sprites"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 14,
        "celesto": 66,
        "edge": "sprites",
        "key": "reliability",
        "name": "Reliability",
        "sprites": 80,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "celesto": 85,
        "edge": "celesto",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "sprites": 74,
        "weight": 13
      },
      {
        "by": 1,
        "celesto": 69,
        "edge": "celesto",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "sprites": 68,
        "weight": 13
      },
      {
        "by": 9,
        "celesto": 52,
        "edge": "sprites",
        "key": "security",
        "name": "Security \u0026 auth",
        "sprites": 61,
        "weight": 14
      },
      {
        "by": 20,
        "celesto": 60,
        "edge": "celesto",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "sprites": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "celesto": 81,
        "edge": "celesto",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "sprites": 80,
        "weight": 7
      },
      {
        "by": 4,
        "celesto": 70,
        "edge": "celesto",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "sprites": 66,
        "weight": 7
      }
    ],
    "summary": "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 \u0026 auth. Both do code sandboxes.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "celesto": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/celesto-vs-sprites",
    "json": "https://www.anchorterminal.com/compare/celesto-vs-sprites.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/celesto-vs-sprites.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/celesto-vs-sprites.min.md"
  },
  "markdown": "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 \u0026 auth. Both do code sandboxes.\n\n- Celesto (formerly SmolVM): grade B, 68/100, rank #298 of 1486. Markdown https://www.anchorterminal.com/tools/celesto.md · JSON https://www.anchorterminal.com/api/v1/tools/celesto.json\n- Sprites: grade B, 65.5/100, rank #419 of 1486. Markdown https://www.anchorterminal.com/tools/sprites.md · JSON https://www.anchorterminal.com/api/v1/tools/sprites.json\n- Best code execution sandboxes for AI agents: https://www.anchorterminal.com/best/code-sandboxes/index.md\n- All 231 sandboxes comparisons: https://www.anchorterminal.com/compare/code-sandboxes/index.md\n\n## Which one, for what\n\n### Celesto (formerly SmolVM) (B)\n\nGood for: Local microVM sandboxes for agent code, browsers and desktops on Linux and macOS, with a path to a hosted cloud.\n\nAhead on:\n- Schema \u0026 documentation, 85 against 74\n- Payments \u0026 pricing, 60 against 40\n\nAlso in its favour:\n- No key needed to call it\n- Free to start without a card\n- Open source\n\nWatch for: Version 0.1.13 and declared pre-1.0 in SECURITY.md, with the TypeScript SDK an alpha installed from a GitHub tarball\n\n### Sprites (B)\n\nGood for: Agents that need a long-lived machine with installed tools and files kept between sessions, and rollback by checkpoint.\n\nAhead on:\n- Reliability, 80 against 66\n- Security \u0026 auth, 61 against 52\n\nWatch 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\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Celesto (formerly SmolVM) +20\n\n- 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.\n- 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.\n\n### Reliability: Sprites +14\n\n- 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.\n- 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.\n\n### Schema \u0026 documentation: Celesto (formerly SmolVM) +11\n\n- 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.\n- 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).\n\n### Security \u0026 auth: Sprites +9\n\n- 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.\n- 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.\n\n## Score by category\n\n| Category | Weight | Celesto (formerly SmolVM) | Sprites | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 66 | 80 | Sprites +14 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 74 | Celesto (formerly SmolVM) +11 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 68 | Celesto (formerly SmolVM) +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 52 | 61 | Sprites +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 40 | Celesto (formerly SmolVM) +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 81 | 80 | Celesto (formerly SmolVM) +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 66 | Celesto (formerly SmolVM) +4 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **68 · B** | **65.5 · B** | |\n\n## Facts side by side\n\n| Fact | Celesto (formerly SmolVM) | Sprites |\n| --- | --- | --- |\n| Kind | SDK + MCP | HTTP API |\n| Vendor | Celesto AI, Inc. | Fly.io |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | HTTP |\n| Auth | None | API key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 | Proprietary service under the Fly.io Terms of Service. The JavaScript, Go, Python and Elixir SDKs are MIT |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| Last release | 2026-11-05 | 2026-10-20 |\n| Terms last updated | 2026-10-30 | 2026-04-29 |\n| Privacy policy last updated | 2026-10-30 | 2026-09-24 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 1.1k stars, 699 PyPI/wk | 158k npm/wk, 59k PyPI/wk |\n\n## How the scores have moved\n\n### Celesto (formerly SmolVM)\n\nNo score change since it was listed.\n\n### Sprites\n\n- +6.9 on 4 November 2026 (C to B): security, new evidence, correction\n- +0.3 on 27 October 2026: checklist\n\n## Verdicts\n\n**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.\n\n**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.\n\n## Before you call either\n\n### Celesto (formerly SmolVM)\n\n1. Pass `--json` to every `celesto` command and branch on `ok` and `exit_code`, not on printed text\n2. Create computers with unique names and delete them by exact name when the job ends, including after failures\n3. Set `internet_settings={\"mode\": \"off\"}` or `restricted` for untrusted code, since the default is open\n4. Set CELESTO_NO_TELEMETRY=1 in unattended runs if usage events must not leave the machine\n5. Never paste browser or display connection URLs into model context; possession of the URL grants control\n\n### Sprites\n\n1. Create a token at sprites.dev/account after a browser signup, and send it as `Authorization: Bearer \u003ctoken\u003e` to `https://api.sprites.dev`\n2. 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\n3. Set a network policy with `POST /v1/sprites/{name}/policy/network` before running untrusted code. Egress is open until one is set\n4. Processes started by exec stop on a cold wake. Define a Service for anything that must answer the request that wakes the Sprite\n5. Create a checkpoint before a restore. Restoring replaces the filesystem, ends active sessions and keeps no copy of the replaced state\n6. 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\n7. Delete Sprites you no longer need. An idle Sprite still bills cold storage for the bytes it holds\n8. Set `SPRITES_CLIENT_SIGNALS=0` before the first SDK call if your operator doesn't want client-signal headers sent\n\n## Questions\n\n### Which is better for AI agents, Celesto (formerly SmolVM) or Sprites?\n\nCelesto (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 \u0026 auth.\n\n### Can an agent call Celesto (formerly SmolVM) and Sprites without installing anything?\n\nNo hosted endpoint is listed for Celesto (formerly SmolVM). No hosted endpoint is listed for Sprites.\n\n### Are Celesto (formerly SmolVM) and Sprites open source?\n\nCelesto (formerly SmolVM) is open source (Apache-2.0). No open-source release is listed for Sprites.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/celesto-vs-sprites.json, and with the fewest tokens: https://www.anchorterminal.com/compare/celesto-vs-sprites.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"celesto\", \"b\": \"sprites\"}`. From a terminal: `anchor compare celesto sprites`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/celesto.json and https://www.anchorterminal.com/api/v1/tools/sprites.json\n\n## Other comparisons with Celesto (formerly SmolVM) or Sprites\n\n- [Amazon Bedrock AgentCore Code Interpreter vs Celesto (formerly SmolVM)](https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-celesto.md)\n- [Amazon Bedrock AgentCore Code Interpreter vs Sprites](https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-sprites.md)\n- [Blaxel Sandboxes vs Celesto (formerly SmolVM)](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-celesto.md)\n- [Blaxel Sandboxes vs Sprites](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-sprites.md)\n- [Celesto (formerly SmolVM) vs Cloudflare Sandbox SDK](https://www.anchorterminal.com/compare/celesto-vs-cloudflare-sandbox-sdk.md)\n- [Celesto (formerly SmolVM) vs Daytona](https://www.anchorterminal.com/compare/celesto-vs-daytona.md)\n- [Celesto (formerly SmolVM) vs DeltaBox Lite](https://www.anchorterminal.com/compare/celesto-vs-deltabox-lite.md)\n- [Celesto (formerly SmolVM) vs Deno Sandbox](https://www.anchorterminal.com/compare/celesto-vs-deno-sandbox.md)\n- [Celesto (formerly SmolVM) vs E2B](https://www.anchorterminal.com/compare/celesto-vs-e2b.md)\n- [Celesto (formerly SmolVM) vs Freestyle](https://www.anchorterminal.com/compare/celesto-vs-freestyle.md)\n- [Celesto (formerly SmolVM) vs InstaVM](https://www.anchorterminal.com/compare/celesto-vs-instavm.md)\n- [Celesto (formerly SmolVM) vs Maritime](https://www.anchorterminal.com/compare/celesto-vs-maritime.md)\n- [Celesto (formerly SmolVM) vs Microsoft Execution Containers](https://www.anchorterminal.com/compare/celesto-vs-microsoft-execution-containers.md)\n- [Celesto (formerly SmolVM) vs Modal Sandboxes](https://www.anchorterminal.com/compare/celesto-vs-modal-sandboxes.md)\n- [Celesto (formerly SmolVM) vs Morph Cloud](https://www.anchorterminal.com/compare/celesto-vs-morph-cloud.md)\n- [Celesto (formerly SmolVM) vs Offscreen](https://www.anchorterminal.com/compare/celesto-vs-offscreen.md)\n- [Celesto (formerly SmolVM) vs SPACE](https://www.anchorterminal.com/compare/celesto-vs-perplexity-space.md)\n- [Celesto (formerly SmolVM) vs Runloop Devboxes](https://www.anchorterminal.com/compare/celesto-vs-runloop.md)\n- [Celesto (formerly SmolVM) vs Sandbox0](https://www.anchorterminal.com/compare/celesto-vs-sandbox0.md)\n- [Celesto (formerly SmolVM) vs Together Code Sandbox](https://www.anchorterminal.com/compare/celesto-vs-together-code-sandbox.md)\n- [Celesto (formerly SmolVM) vs Vercel Sandbox](https://www.anchorterminal.com/compare/celesto-vs-vercel-sandbox.md)\n- [Cloudflare Sandbox SDK vs Sprites](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-sprites.md)\n- [Daytona vs Sprites](https://www.anchorterminal.com/compare/daytona-vs-sprites.md)\n- [Deno Sandbox vs Sprites](https://www.anchorterminal.com/compare/deno-sandbox-vs-sprites.md)\n- [E2B vs Sprites](https://www.anchorterminal.com/compare/e2b-vs-sprites.md)\n- [Freestyle vs Sprites](https://www.anchorterminal.com/compare/freestyle-vs-sprites.md)\n- [InstaVM vs Sprites](https://www.anchorterminal.com/compare/instavm-vs-sprites.md)\n- [Maritime vs Sprites](https://www.anchorterminal.com/compare/maritime-vs-sprites.md)\n- [Microsoft Execution Containers vs Sprites](https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-sprites.md)\n- [Modal Sandboxes vs Sprites](https://www.anchorterminal.com/compare/modal-sandboxes-vs-sprites.md)\n- [Morph Cloud vs Sprites](https://www.anchorterminal.com/compare/morph-cloud-vs-sprites.md)\n- [Offscreen vs Sprites](https://www.anchorterminal.com/compare/offscreen-vs-sprites.md)\n- [SPACE vs Sprites](https://www.anchorterminal.com/compare/perplexity-space-vs-sprites.md)\n- [Runloop Devboxes vs Sprites](https://www.anchorterminal.com/compare/runloop-vs-sprites.md)\n- [Sandbox0 vs Sprites](https://www.anchorterminal.com/compare/sandbox0-vs-sprites.md)\n- [Sprites vs Together Code Sandbox](https://www.anchorterminal.com/compare/sprites-vs-together-code-sandbox.md)\n- [Sprites vs Vercel Sandbox](https://www.anchorterminal.com/compare/sprites-vs-vercel-sandbox.md)\n- [Agent 37 Cloud vs Celesto (formerly SmolVM)](https://www.anchorterminal.com/compare/agent37-vs-celesto.md)\n- [Agent 37 Cloud vs Sprites](https://www.anchorterminal.com/compare/agent37-vs-sprites.md)\n- [DeltaBox Lite vs Sprites](https://www.anchorterminal.com/compare/deltabox-lite-vs-sprites.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Celesto (formerly SmolVM) vs Sprites",
        "url": ""
      }
    ],
    "description": "Celesto scores 68 (B) to Sprites's 65.5 (B) for code sandboxes. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Celesto (formerly SmolVM) B 68",
      "Sprites B 65.5",
      "scores"
    ],
    "h1": "Celesto (formerly SmolVM) vs Sprites",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/celesto-vs-sprites",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Celesto vs Sprites for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/celesto-vs-sprites"
  },
  "tokens": {
    "markdown": 4950,
    "slim": 2380
  },
  "version": 1
}
