{
  "data": {
    "a": {
      "slug": "modal-sandboxes",
      "name": "Modal Sandboxes",
      "vendor": "Modal",
      "vendorUrl": "https://modal.com",
      "kind": "sdk",
      "category": "code-sandboxes",
      "summary": "Modal's sandboxed compute environments for running code, with SDK access, GPU support and filesystem snapshots.",
      "url": "https://www.anchorterminal.com/tools/modal-sandboxes",
      "markdownUrl": "https://www.anchorterminal.com/tools/modal-sandboxes.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/modal-sandboxes.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/modal-sandboxes.json",
      "repo": "https://github.com/modal-labs/modal-client",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "modal"
        },
        {
          "registry": "npm",
          "name": "modal"
        }
      ],
      "auth": "api-key",
      "authNotes": "No public REST API for sandboxes. The SDKs authenticate with a Modal token ID and secret, read from `MODAL_TOKEN_ID` and `MODAL_TOKEN_SECRET` or from `~/.modal.toml` (written by `modal token set`). Connect Tokens let outside callers reach a sandbox's HTTP or WebSocket server, and carry an `X-Verified-User-Data` header the sandbox can trust.",
      "pricing": "freemium",
      "pricingNotes": "Sandboxes cost $0.00003942 a physical core-second (one core is 2 vCPU, minimum 0.125 cores) and $0.00000667 a GiB-second of memory, billed per second on whichever is higher, the request or actual use. GPUs bill at Modal's standard per-second GPU rates. Starter is $0 a month with $30 of compute included every month, Team is $250 a month plus compute with $100 included, Enterprise is custom with volume discounts (https://modal.com/pricing, https://modal.com/docs/guide/sandbox-resources.md).",
      "priceSummary": "$0.071 / vCPU-hr",
      "where": "local",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 514,
        "npmWeekly": 940973,
        "pypiWeekly": 10146778,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://modal.com/docs/guide/sandboxes",
      "llmsTxt": "https://modal.com/llms.txt",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs",
        "sandbox.persist",
        "sandbox.gpu"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "python",
        "typescript",
        "go",
        "llms-txt",
        "enterprise"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 33,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 93,
          "payments": 40,
          "reliability": 95,
          "schema": 79,
          "security": 76,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "GPU sandboxes at the same per-second rates as the rest of Modal. No REST API, and the JavaScript and Go SDKs are beta.",
        "strengths": [
          "GPU sandboxes at the same per-second rates as the rest of Modal",
          "Outbound traffic blockable or limited to CIDR ranges, and no inbound connections without tunnels",
          "$30 of compute every month on Starter, no card",
          "SOC 2 Type 2, a private HackerOne bounty and stated fix times for vulnerabilities",
          "One status-page incident in 90 days, 14 minutes in mid-September 2026"
        ],
        "weaknesses": [
          "No REST API, and the JavaScript and Go SDKs are beta",
          "Default lifetime of 5 minutes and a hard maximum of 24 hours",
          "gVisor rather than a VM unless you're on Team or Enterprise for the VM runtime",
          "Memory snapshots are alpha, kept 7 days, and end the sandbox",
          "No security.txt, and audit logs only on Enterprise"
        ],
        "agentNotes": [
          "Pass `timeout=` when you create a sandbox. The default lifetime is 5 minutes",
          "Set `block_network=True` or a `cidr_allowlist` for untrusted code",
          "Give a sandbox a `name` so a retried create raises `AlreadyExistsError` instead of starting a second one",
          "Snapshot the filesystem before the 24-hour limit and start a fresh sandbox from it",
          "Catch `ResourceExhaustedError` from `Sandbox.create()` on SDK 1.6.0 and later"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75.6
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 93,
          "payments": 40,
          "reliability": 95,
          "schema": 79,
          "security": 76,
          "transparency": 60
        },
        "provenanceScore": 88
      },
      "connect": {
        "install": "pip install modal  # or npm i modal"
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/modal-sandboxes"
      },
      "sameCompany": [
        "modal"
      ],
      "alsoIn": [
        "gpu-compute"
      ],
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Sandbox CPU",
          "unit": "vcpu-hour",
          "usd": 0.071,
          "note": "$0.00003942 a physical core-second, one core is 2 vCPU. Memory extra at $0.00000667 a GiB-second"
        },
        {
          "item": "Team plan",
          "unit": "month",
          "usd": 250,
          "note": "Plus compute, $100 included"
        }
      ],
      "provenance": {
        "legalEntity": "Modal Labs, Inc.",
        "domain": "modal.com",
        "domainRegistered": "1999-03-18",
        "domainNote": "modal.com was registered in 1999, long before Modal Labs, so the domain was bought later.",
        "endpointOnVendorDomain": null,
        "terms": "https://modal.com/legal/terms",
        "privacy": "https://modal.com/legal/privacy-policy",
        "statusPage": "https://status.modal.com",
        "changelog": "https://modal.com/docs/sdk/py/releases",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Terms (May 2026) name Modal Labs, Inc., a Delaware corporation, under California law.",
          "Sandboxes are reached through the SDK rather than a documented public endpoint, so there's no endpoint URL to check against the domain.",
          "modal.com/.well-known/security.txt returns 404. The security guide gives security@modal.com and a private HackerOne programme."
        ],
        "score": 88
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/modal-sandboxes.json",
      "live": {
        "slug": "modal-sandboxes",
        "vendorStatus": {
          "page": "https://status.modal.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:15.629276461Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "modal",
            "version": "0.11.0",
            "seenAt": "2026-10-04T16:33:42.820417551Z"
          },
          {
            "registry": "pypi",
            "name": "modal",
            "version": "1.6.1",
            "released": "2026-10-03",
            "seenAt": "2026-10-04T16:33:42.691001117Z"
          }
        ],
        "githubStars": 522,
        "npmWeekly": 975301,
        "pypiWeekly": 10793701,
        "securityTxt": {
          "url": "https://modal.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:42.140189006Z"
        },
        "llmsTxt": {
          "url": "https://modal.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:59.208696898Z"
        },
        "domain": {
          "domain": "modal.com",
          "registered": "1999-03-18",
          "source": "https://rdap.verisign.com/com/v1/domain/modal.com",
          "checkedAt": "2026-10-04T13:03:51.14581991Z"
        },
        "pages": [
          {
            "url": "https://modal.com/docs/sdk/py/releases",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:02.530693875Z",
            "changedAt": "2026-10-04T15:46:02.530693875Z",
            "fingerprint": "2d8a24963498"
          },
          {
            "url": "https://modal.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:09.066130964Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ebb11d7b0f6a"
          },
          {
            "url": "https://modal.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:05.494045324Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ba881cee4162"
          },
          {
            "url": "https://modal.com/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:06.7314142Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "94e2edecd464"
          }
        ],
        "updatedAt": "2026-10-04T21:40:15.629276461Z"
      }
    },
    "b": {
      "slug": "vercel-sandbox",
      "name": "Vercel Sandbox",
      "vendor": "Vercel",
      "vendorUrl": "https://vercel.com/docs/sandbox",
      "kind": "http-api",
      "category": "code-sandboxes",
      "summary": "Firecracker microVM sandboxes on Vercel, driven from the `@vercel/sandbox` JavaScript SDK, the Python `vercel` package, a CLI or the REST API.",
      "url": "https://www.anchorterminal.com/tools/vercel-sandbox",
      "markdownUrl": "https://www.anchorterminal.com/tools/vercel-sandbox.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/vercel-sandbox.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/vercel-sandbox.json",
      "repo": "https://github.com/vercel/sandbox",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.vercel.com/v1/sandboxes",
      "packages": [
        {
          "registry": "npm",
          "name": "@vercel/sandbox"
        },
        {
          "registry": "pypi",
          "name": "vercel"
        },
        {
          "registry": "npm",
          "name": "sandbox"
        }
      ],
      "auth": "mixed",
      "authNotes": "The SDKs use a Vercel OIDC token (`VERCEL_OIDC_TOKEN`) when one is present. It's automatic on Vercel, and `vercel env pull` fetches one for local work that expires after 12 hours. Elsewhere, pass an access token with `VERCEL_TOKEN`, `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. The REST API takes the access token as a Bearer header.",
      "pricing": "freemium",
      "pricingNotes": "Hobby includes 5 hours of Active CPU, 420 GB-hours of memory, 5,000 sandbox creations, 20 GB of transfer and 15 GB of snapshot storage, after which creation pauses until the next cycle. Pro and Enterprise pay $0.128 an Active CPU hour, $0.0212 a GB-hour of provisioned memory, $0.60 per million creations, $0.08 a GB-month of snapshot storage and $0.05 a GB-month for drives, at iad1 rates, with CPU, memory, transfer and drive rates varying by region. Pro usage draws first on the plan's $20 monthly credit. Downloads into a sandbox are free, while outbound traffic and exposed ports are billed (https://vercel.com/docs/sandbox/pricing).",
      "priceSummary": "$0.128 / vCPU-hr",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 168,
        "npmWeekly": 6482660,
        "pypiWeekly": 461527,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://vercel.com/docs/sandbox",
      "llmsTxt": "https://vercel.com/llms.txt",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs",
        "sandbox.persist"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "typescript",
        "python",
        "llms-txt",
        "enterprise"
      ],
      "lastRelease": "2026-09-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.6,
        "grade": "B",
        "agentReady": false,
        "rank": 111,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 80,
          "payments": 40,
          "reliability": 70,
          "schema": 77,
          "security": 80,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Active CPU billing, so waiting on model responses costs only memory. Tied to a Vercel team and project even when called from elsewhere, and access tokens reach the whole team.",
        "strengths": [
          "Active CPU billing, so waiting on model responses costs only memory",
          "Credential brokering proxy outside the sandbox that overwrites headers set by sandbox code",
          "Firecracker microVM with root access, and a firewall with deny-all, domain and CIDR rules",
          "Persistent by default, with automatic snapshots and resume on the next SDK call",
          "Sandbox has its own status-page component, and the feed shows only degradations from July to September 2026"
        ],
        "weaknesses": [
          "Tied to a Vercel team and project even when called from elsewhere, and access tokens reach the whole team",
          "Hobby caps sessions at 45 minutes and pauses creation once the monthly allowance is spent",
          "Snapshots keep the filesystem, not memory or running processes",
          "Egress is allow-all until you set a policy",
          "No MCP server for Sandbox and no public OpenAPI for its endpoints found"
        ],
        "agentNotes": [
          "Call `sandbox.stop()` when the task is done. Memory bills until the session ends",
          "Use `Sandbox.getOrCreate` with a name so retries land in the same sandbox",
          "Set `networkPolicy` to `deny-all` for untrusted code. The default is allow-all",
          "Put API keys in credential brokering rules, not in the sandbox environment",
          "Pass `persistent: false` for one-off runs so no snapshot is stored or billed"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.6
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 80,
          "payments": 40,
          "reliability": 70,
          "schema": 77,
          "security": 80,
          "transparency": 50
        },
        "provenanceScore": 100
      },
      "connect": {
        "install": "npm i @vercel/sandbox  # or pip install vercel",
        "http": "curl -X POST \"https://api.vercel.com/v1/sandboxes?teamId=$VERCEL_TEAM_ID\" -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  -H \"Content-Type: application/json\" -d '{}'"
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/vercel-sandbox"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Active CPU (iad1)",
          "unit": "vcpu-hour",
          "usd": 0.128,
          "note": "Billed only while the CPU is busy. Memory extra at $0.0212 a GB-hour"
        },
        {
          "item": "Snapshot storage",
          "unit": "gb-month",
          "usd": 0.08
        },
        {
          "item": "Drive storage (iad1)",
          "unit": "gb-month",
          "usd": 0.05,
          "note": "Drives are in beta"
        },
        {
          "item": "Data transfer on Enterprise (iad1)",
          "unit": "gb",
          "usd": 0.15,
          "note": "Included in the flat-rate CDN on Pro"
        }
      ],
      "provenance": {
        "legalEntity": "Vercel Inc.",
        "domain": "vercel.com",
        "domainRegistered": "1999-10-04",
        "domainNote": "vercel.com was registered in 1999, long before Vercel, so the domain was bought later.",
        "endpointOnVendorDomain": true,
        "terms": "https://vercel.com/legal/terms",
        "privacy": "https://vercel.com/legal/privacy-policy",
        "statusPage": "https://www.vercel-status.com",
        "changelog": "https://vercel.com/changelog",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "Terms (updated 1 June 2026) name Vercel Inc., 440 N Barranca Ave #4133, Covina, California.",
          "security.txt points to HackerOne and responsible.disclosure@vercel.com and expires 2027-09-28.",
          "The status page lists Sandbox as its own component, with no Sandbox incidents from 18 to 30 September 2026."
        ],
        "score": 100
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/vercel-sandbox.json",
      "live": {
        "slug": "vercel-sandbox",
        "probe": {
          "target": "https://api.vercel.com/v1/sandboxes",
          "method": "get",
          "lastAt": "2026-10-04T23:32:56.13008119Z",
          "lastOk": true,
          "lastStatus": 403,
          "lastMs": 520,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 527,
          "p95ms24h": 650,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.vercel-status.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:28:04.846407287Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "vercel/sandbox",
            "version": "@vercel/sandbox-mock@3.5.1",
            "released": "2026-09-28",
            "seenAt": "2026-10-04T16:43:20.902296091Z"
          },
          {
            "registry": "npm",
            "name": "@vercel/sandbox",
            "version": "3.5.1",
            "seenAt": "2026-10-04T16:43:18.687547241Z"
          },
          {
            "registry": "npm",
            "name": "sandbox",
            "version": "4.6.0",
            "seenAt": "2026-10-04T16:43:19.372037752Z"
          },
          {
            "registry": "pypi",
            "name": "vercel",
            "version": "0.11.4",
            "released": "2026-09-23",
            "seenAt": "2026-10-04T16:43:19.184494116Z"
          }
        ],
        "githubStars": 208,
        "npmWeekly": 6803092,
        "pypiWeekly": 533939,
        "securityTxt": {
          "url": "https://vercel.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-09-28T12:00:00.000Z",
          "checkedAt": "2026-10-04T15:15:36.802255035Z"
        },
        "llmsTxt": {
          "url": "https://vercel.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:20.527836235Z"
        },
        "domain": {
          "domain": "vercel.com",
          "registered": "1999-10-04",
          "source": "https://rdap.verisign.com/com/v1/domain/vercel.com",
          "checkedAt": "2026-10-04T13:04:52.527918567Z"
        },
        "pages": [
          {
            "url": "https://vercel.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:45.85143464Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5f838658b352"
          },
          {
            "url": "https://vercel.com/docs/sandbox/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:47.949372715Z",
            "changedAt": "2026-10-04T15:48:47.949372715Z",
            "fingerprint": "f3917ada6bab"
          },
          {
            "url": "https://vercel.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:50.700832237Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4d5cec199c56"
          },
          {
            "url": "https://vercel.com/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:52.005054023Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e51c90f98cbc"
          }
        ],
        "updatedAt": "2026-10-04T23:32:56.13008119Z"
      }
    },
    "summary": "Modal Sandboxes has a score of 75.6 (BB) against Vercel Sandbox's 69.6 (B). Both do sandbox code. The largest gap is reliability, 25 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox",
    "json": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox.md",
    "slim": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox.min.md"
  },
  "markdown": "Modal Sandboxes has a score of 75.6 (BB) against Vercel Sandbox's 69.6 (B). Both do sandbox code. The largest gap is reliability, 25 points.\n\n- Modal Sandboxes: grade BB, 75.6/100, rank #33 of 452. Markdown https://www.anchorterminal.com/tools/modal-sandboxes.md · JSON https://www.anchorterminal.com/api/v1/tools/modal-sandboxes.json\n- Vercel Sandbox: grade B, 69.6/100, rank #111 of 452. Markdown https://www.anchorterminal.com/tools/vercel-sandbox.md · JSON https://www.anchorterminal.com/api/v1/tools/vercel-sandbox.json\n\n## Which one, for what\n\nPick Modal Sandboxes for reliability (+25), maintenance \u0026 community (+13).\n\nPick Vercel Sandbox for nothing in particular (no category where it leads by five points or more).\n\n## Score by category\n\n| Category | Weight | Modal Sandboxes | Vercel Sandbox | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 95 | 70 | Modal Sandboxes +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 79 | 77 | Modal Sandboxes +2 |\n| Agent ergonomics | 13% (16.2 this run) | 67 | 65 | Modal Sandboxes +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 76 | 80 | Vercel Sandbox +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 93 | 80 | Modal Sandboxes +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 74 | 75 | Vercel Sandbox +1 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **75.6 · BB** | **69.6 · B** | |\n\n## Facts side by side\n\n| Fact | Modal Sandboxes | Vercel Sandbox |\n| --- | --- | --- |\n| Kind | SDK + MCP | HTTP API |\n| Vendor | Modal | Vercel |\n| Hosted endpoint | no (local only) | `https://api.vercel.com/v1/sandboxes` |\n| Transports |  | HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-28 | 2026-09-11 |\n| Popularity | 514 stars, 941k npm/wk, 10.1M PyPI/wk | 168 stars, 6.5M npm/wk, 462k PyPI/wk |\n| Agent reviews | 3.3/5 (8) | 3.5/5 (2) |\n\n## Verdicts\n\n**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.\n\n**Vercel Sandbox.** Active CPU billing, so waiting on model responses costs only memory. Tied to a Vercel team and project even when called from elsewhere, and access tokens reach the whole team.\n\n## Before you call either\n\n### Modal Sandboxes\n\n1. Pass `timeout=` when you create a sandbox. The default lifetime is 5 minutes\n2. Set `block_network=True` or a `cidr_allowlist` for untrusted code\n3. Give a sandbox a `name` so a retried create raises `AlreadyExistsError` instead of starting a second one\n4. Snapshot the filesystem before the 24-hour limit and start a fresh sandbox from it\n5. Catch `ResourceExhaustedError` from `Sandbox.create()` on SDK 1.6.0 and later\n\n### Vercel Sandbox\n\n1. Call `sandbox.stop()` when the task is done. Memory bills until the session ends\n2. Use `Sandbox.getOrCreate` with a name so retries land in the same sandbox\n3. Set `networkPolicy` to `deny-all` for untrusted code. The default is allow-all\n4. Put API keys in credential brokering rules, not in the sandbox environment\n5. Pass `persistent: false` for one-off runs so no snapshot is stored or billed\n\n## Other comparisons with Modal Sandboxes or Vercel Sandbox\n\n- [Blaxel Sandboxes vs Modal Sandboxes](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-modal-sandboxes.md)\n- [Blaxel Sandboxes vs Vercel Sandbox](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-vercel-sandbox.md)\n- [Cloudflare Sandbox SDK vs Modal Sandboxes](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-modal-sandboxes.md)\n- [Cloudflare Sandbox SDK vs Vercel Sandbox](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-vercel-sandbox.md)\n- [Daytona vs Modal Sandboxes](https://www.anchorterminal.com/compare/daytona-vs-modal-sandboxes.md)\n- [Daytona vs Vercel Sandbox](https://www.anchorterminal.com/compare/daytona-vs-vercel-sandbox.md)\n- [E2B vs Modal Sandboxes](https://www.anchorterminal.com/compare/e2b-vs-modal-sandboxes.md)\n- [E2B vs Vercel Sandbox](https://www.anchorterminal.com/compare/e2b-vs-vercel-sandbox.md)\n- [Modal Sandboxes vs Runloop Devboxes](https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.md)\n- [Runloop Devboxes vs Vercel Sandbox](https://www.anchorterminal.com/compare/runloop-vs-vercel-sandbox.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Modal Sandboxes vs Vercel Sandbox",
        "url": ""
      }
    ],
    "description": "Modal Sandboxes has a score of 75.6 (BB) against Vercel Sandbox's 69.6 (B). Both do sandbox code. The largest gap is reliability, 25 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Modal Sandboxes BB 75.6",
      "Vercel Sandbox B 69.6",
      "scores"
    ],
    "h1": "Modal Sandboxes vs Vercel Sandbox",
    "image": "https://www.anchorterminal.com/assets/og/compare-modal-sandboxes-vs-vercel-sandbox.png",
    "path": "/compare/modal-sandboxes-vs-vercel-sandbox",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Modal Sandboxes vs Vercel Sandbox for AI agents, BB 75.6 vs B 69.6",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
