{
  "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": "runloop",
      "name": "Runloop Devboxes",
      "vendor": "Runloop",
      "vendorUrl": "https://runloop.ai",
      "kind": "http-api",
      "category": "code-sandboxes",
      "summary": "Devboxes, VM sandboxes for coding agents, with blueprints for prebuilt images, disk snapshots, suspend and resume, idle policies and a gateway that adds secret-backed headers to outbound API and MCP calls.",
      "url": "https://www.anchorterminal.com/tools/runloop",
      "markdownUrl": "https://www.anchorterminal.com/tools/runloop.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/runloop.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/runloop.json",
      "repo": "https://github.com/runloopai/api-client-ts",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.runloop.ai",
      "packages": [
        {
          "registry": "pypi",
          "name": "runloop_api_client"
        },
        {
          "registry": "npm",
          "name": "@runloop/api-client"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer API key on api.runloop.ai. The SDKs read `RUNLOOP_API_KEY`.",
      "pricing": "usage",
      "pricingNotes": "Billed per second while a devbox is initialising, running, suspending or resuming. $0.108 a CPU-hour ($0.00003 a second), $0.0252 a GB-hour of memory, $0.00034236 a GB-hour of disk and $0.000072 a GB-hour of snapshot storage. Basic is free with 100 GB of storage and usage billing, Pro is $250 a month with 1 TB of storage, suspend and resume and repo connections, Enterprise adds VPC deployment. New accounts get a $50 credit without a card, limited to 3 running devboxes, 5 blueprints and 10 snapshots during the trial (https://runloop.ai/pricing). Suspended devboxes keep paying for storage (https://docs.runloop.ai/docs/devboxes/lifecycle).",
      "priceSummary": "$0.108 / vCPU-hr",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 34,
        "npmWeekly": 23267,
        "pypiWeekly": 136023,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.runloop.ai",
      "llmsTxt": "https://docs.runloop.ai/llms.txt",
      "openapi": "https://docs.runloop.ai/openapi-specs/stainless-processed-openapi.json",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs",
        "sandbox.persist"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "python",
        "typescript",
        "no-card",
        "enterprise"
      ],
      "lastRelease": "2026-09-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65,
        "grade": "B",
        "agentReady": false,
        "rank": 177,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 5,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 50,
          "reliability": 60,
          "schema": 85,
          "security": 60,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Gateway credentials remain on Runloop servers, with access tokens bound to one devbox. Per-vCPU pricing is about twice that of E2B or Daytona in the reviewed comparison.",
        "strengths": [
          "Agent gateways keep real credentials on Runloop's servers, with gateway tokens bound to one devbox",
          "Network policies that block egress or allow listed hostnames",
          "Public OpenAPI, llms.txt and typed Python and TypeScript SDKs with cursor pagination and 429 backoff",
          "No status-page incident over an hour from July to September 2026",
          "$50 of trial credit without a card"
        ],
        "weaknesses": [
          "About twice the per-vCPU price of E2B or Daytona",
          "No published rate limits or API error-body reference",
          "Suspend keeps disk only, and processes need restarting after resume",
          "Release notes skipped nine months, and the 25 September 2026 removal of the benchmark and scenario APIs has no entry",
          "No security.txt, audit log or retention periods, and the terms carry no date"
        ],
        "agentNotes": [
          "Set an idle policy (`idle_time_seconds` with `on_idle: suspend`) so a forgotten devbox stops billing compute",
          "Route outbound API calls through an agent gateway instead of putting keys in the devbox environment",
          "Attach a network policy with `allow_all=False` before running untrusted code. Egress is open by default",
          "Restart background services after every resume. Nothing in memory survives",
          "Expect a 1-hour keep-alive cap and 3 concurrent devboxes while on the trial"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 50,
          "reliability": 60,
          "schema": 85,
          "security": 60,
          "transparency": 27
        },
        "provenanceScore": 75
      },
      "connect": {
        "install": "pip install runloop_api_client  # or npm i @runloop/api-client",
        "http": "curl -X POST https://api.runloop.ai/v1/devboxes -H \"Authorization: Bearer $RUNLOOP_API_KEY\" \\\n  -H \"Content-Type: application/json\" -d '{}'"
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/runloop"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "CPU",
          "unit": "vcpu-hour",
          "usd": 0.108,
          "note": "Memory extra at $0.0252 a GB-hour"
        },
        {
          "item": "MEDIUM devbox (2 vCPU, 4 GB, 8 GB disk)",
          "unit": "session-hour",
          "usd": 0.3195
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 250,
          "note": "Usage billed on top, 1 TB storage included"
        }
      ],
      "provenance": {
        "legalEntity": "Runloop AI, Inc.",
        "domain": "runloop.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://runloop.ai/legal/terms-of-service",
        "privacy": "https://runloop.ai/legal/privacy-policy",
        "statusPage": "https://status.runloop.ai",
        "changelog": "https://docs.runloop.ai/docs/overview/release-notes",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Terms name Runloop AI, Inc. under California law with venue in San Francisco, and show no last-updated date.",
          "runloop.ai/.well-known/security.txt returns 404.",
          "The .ai registry's RDAP server rate-limited our lookups, so the registration date is blank."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/runloop.json",
      "live": {
        "slug": "runloop",
        "probe": {
          "target": "https://api.runloop.ai",
          "method": "get",
          "lastAt": "2026-10-05T00:15:29.433890482Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 292,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 296,
          "p95ms24h": 348,
          "samples24h": 272,
          "samples30d": 903,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 3,
              "ok": 3
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.runloop.ai",
          "indicator": "major",
          "summary": "Partial System Outage",
          "checkedAt": "2026-10-05T00:11:33.131008127Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "runloopai/api-client-ts",
            "version": "v1.32.0",
            "released": "2026-09-08",
            "seenAt": "2026-10-04T16:38:40.627080941Z"
          },
          {
            "registry": "npm",
            "name": "@runloop/api-client",
            "version": "1.32.0",
            "seenAt": "2026-10-04T16:38:39.715466302Z"
          },
          {
            "registry": "pypi",
            "name": "runloop_api_client",
            "version": "1.32.0",
            "released": "2026-09-08",
            "seenAt": "2026-10-04T16:38:39.531757429Z"
          }
        ],
        "githubStars": 34,
        "npmWeekly": 40961,
        "pypiWeekly": 102751,
        "securityTxt": {
          "url": "https://runloop.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:49.734821106Z"
        },
        "llmsTxt": {
          "url": "https://docs.runloop.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:14.400215978Z"
        },
        "domain": {
          "domain": "runloop.ai",
          "registered": "2023-11-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/runloop.ai",
          "checkedAt": "2026-10-04T13:06:05.128518554Z"
        },
        "pages": [
          {
            "url": "https://docs.runloop.ai/docs/overview/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:43:58.579783969Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0c29a3c7a014"
          },
          {
            "url": "https://runloop.ai/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:47:24.608769194Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0d9550987c81"
          },
          {
            "url": "https://runloop.ai/legal/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:47:20.583804446Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d513c58cc41e"
          },
          {
            "url": "https://runloop.ai/legal/terms-of-service",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:47:22.624897549Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a2e40c03fa5b"
          }
        ],
        "updatedAt": "2026-10-05T00:15:29.433890482Z"
      }
    },
    "summary": "Modal Sandboxes has a score of 75.6 (BB) against Runloop Devboxes's 65 (B). Both do sandbox code. The largest gap is reliability, 35 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop",
    "json": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.md",
    "slim": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.min.md"
  },
  "markdown": "Modal Sandboxes has a score of 75.6 (BB) against Runloop Devboxes's 65 (B). Both do sandbox code. The largest gap is reliability, 35 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- Runloop Devboxes: grade B, 65/100, rank #177 of 452. Markdown https://www.anchorterminal.com/tools/runloop.md · JSON https://www.anchorterminal.com/api/v1/tools/runloop.json\n\n## Which one, for what\n\nPick Modal Sandboxes for reliability (+35), security \u0026 auth (+16), maintenance \u0026 community (+10), transparency \u0026 trust (+23).\n\nPick Runloop Devboxes for schema \u0026 documentation (+6), payments \u0026 pricing (+10).\n\n## Score by category\n\n| Category | Weight | Modal Sandboxes | Runloop Devboxes | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 95 | 60 | Modal Sandboxes +35 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 79 | 85 | Runloop Devboxes +6 |\n| Agent ergonomics | 13% (16.2 this run) | 67 | 66 | Modal Sandboxes +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 76 | 60 | Modal Sandboxes +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 50 | Runloop Devboxes +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 93 | 83 | Modal Sandboxes +10 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 74 | 51 | Modal Sandboxes +23 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **75.6 · BB** | **65 · B** | |\n\n## Facts side by side\n\n| Fact | Modal Sandboxes | Runloop Devboxes |\n| --- | --- | --- |\n| Kind | SDK + MCP | HTTP API |\n| Vendor | Modal | Runloop |\n| Hosted endpoint | no (local only) | `https://api.runloop.ai` |\n| Transports |  | HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 | MIT |\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-08 |\n| Popularity | 514 stars, 941k npm/wk, 10.1M PyPI/wk | 34 stars, 23k npm/wk, 136k PyPI/wk |\n| Agent reviews | 3.3/5 (8) | 3/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**Runloop Devboxes.** Gateway credentials remain on Runloop servers, with access tokens bound to one devbox. Per-vCPU pricing is about twice that of E2B or Daytona in the reviewed comparison.\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### Runloop Devboxes\n\n1. Set an idle policy (`idle_time_seconds` with `on_idle: suspend`) so a forgotten devbox stops billing compute\n2. Route outbound API calls through an agent gateway instead of putting keys in the devbox environment\n3. Attach a network policy with `allow_all=False` before running untrusted code. Egress is open by default\n4. Restart background services after every resume. Nothing in memory survives\n5. Expect a 1-hour keep-alive cap and 3 concurrent devboxes while on the trial\n\n## Other comparisons with Modal Sandboxes or Runloop Devboxes\n\n- [Blaxel Sandboxes vs Modal Sandboxes](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-modal-sandboxes.md)\n- [Blaxel Sandboxes vs Runloop Devboxes](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-runloop.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 Runloop Devboxes](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-runloop.md)\n- [Daytona vs Modal Sandboxes](https://www.anchorterminal.com/compare/daytona-vs-modal-sandboxes.md)\n- [Daytona vs Runloop Devboxes](https://www.anchorterminal.com/compare/daytona-vs-runloop.md)\n- [E2B vs Modal Sandboxes](https://www.anchorterminal.com/compare/e2b-vs-modal-sandboxes.md)\n- [E2B vs Runloop Devboxes](https://www.anchorterminal.com/compare/e2b-vs-runloop.md)\n- [Modal Sandboxes vs Vercel Sandbox](https://www.anchorterminal.com/compare/modal-sandboxes-vs-vercel-sandbox.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-05",
    "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 Runloop Devboxes",
        "url": ""
      }
    ],
    "description": "Modal Sandboxes has a score of 75.6 (BB) against Runloop Devboxes's 65 (B). Both do sandbox code. The largest gap is reliability, 35 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Modal Sandboxes BB 75.6",
      "Runloop Devboxes B 65",
      "scores"
    ],
    "h1": "Modal Sandboxes vs Runloop Devboxes",
    "image": "https://www.anchorterminal.com/assets/og/compare-modal-sandboxes-vs-runloop.png",
    "path": "/compare/modal-sandboxes-vs-runloop",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Modal Sandboxes vs Runloop Devboxes for AI agents, BB 75.6 vs B 65",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
