{
  "data": {
    "a": {
      "slug": "modal",
      "name": "Modal",
      "vendor": "Modal",
      "vendorUrl": "https://modal.com",
      "kind": "platform",
      "category": "gpu-compute",
      "summary": "Serverless functions, web endpoints, servers and GPU jobs from a Python decorator, with JavaScript and Go SDKs.",
      "url": "https://www.anchorterminal.com/tools/modal",
      "markdownUrl": "https://www.anchorterminal.com/tools/modal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/modal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/modal.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 deploying. The SDKs and CLI authenticate with a token ID and secret from `modal token new`, read from `MODAL_TOKEN_ID` and `MODAL_TOKEN_SECRET` or `~/.modal.toml`; tokens can carry a TTL. Deployed web endpoints are open by default and can be locked with proxy tokens sent as `Modal-Key` and `Modal-Secret` headers. Servers and Endpoints require a proxy token by default, sent as `Authorization: Bearer \u003cid\u003e.\u003csecret\u003e`.",
      "pricing": "freemium",
      "pricingNotes": "Starter is $0 a month with $30 of compute included every month, 3 seats, 100 containers and 10 concurrent GPUs. Team is $250 a month plus compute with $100 included, unlimited seats, 5,000 containers and 50 concurrent GPUs. Enterprise is custom. GPUs bill per second with nothing charged at zero containers. T4 $0.000164, L4 $0.000222, A10 $0.000306, L40S $0.000542, A100 40 GB $0.000583, A100 80 GB $0.000694, RTX PRO 6000 $0.000842, H100 $0.001097, H200 $0.001261, B200 $0.001736 and B300 $0.001972 a second. The pricing page lists CPU at $0.0000131 a core-second (0.125 core minimum per container) and memory at $0.00000222 a GiB-second, and volumes at $0.09 a GiB-month after 1 TiB free (https://modal.com/pricing).",
      "priceSummary": "$250 / mo",
      "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",
      "llmsTxt": "https://modal.com/llms.txt",
      "capabilities": [
        "compute.gpu",
        "compute.serverless",
        "compute.endpoints",
        "compute.batch",
        "compute.containers"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "python",
        "typescript",
        "go",
        "llms-txt",
        "enterprise"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.8,
        "grade": "B",
        "agentReady": false,
        "rank": 195,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 85,
          "payments": 30,
          "reliability": 70,
          "schema": 70,
          "security": 68,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Scale to zero by default, per-second billing and about one-second container boots. No REST API or OpenAPI spec for deploying or invoking Functions.",
        "strengths": [
          "Scale to zero by default, per-second billing and about one-second container boots",
          "Retention stated per data type (inputs and outputs up to 7 days, logs 1 to 30 days)",
          "Python, JavaScript and Go SDKs, with llms.txt and dated release notes",
          "Four short incidents on the status page between July and September 2026",
          "SOC 2 Type 2, a private HackerOne programme and published disclosure response times"
        ],
        "weaknesses": [
          "No REST API or OpenAPI spec for deploying or invoking Functions",
          "Web endpoints are open by default until proxy tokens are added",
          "RBAC, audit logs and HIPAA only on Enterprise",
          "No published SLA, and Starter caps concurrent GPUs at 10",
          "Region pinning costs 1.15 to 1.75 times the base price"
        ],
        "agentNotes": [
          "Create a proxy token and require it on every web endpoint before sharing the URL; endpoints are public by default",
          "Pass a list to `gpu=` (for example `[\"H100\", \"A100-80GB\"]`) so a job still runs when the first choice is unavailable",
          "Set `scaledown_window` and `min_containers` explicitly; the defaults are 60 seconds and 0",
          "Use `.spawn()` and poll the call ID for long work instead of holding a web request open",
          "Keep web endpoint traffic under 200 requests a second or ask Modal to raise the limit"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63.8
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 85,
          "payments": 30,
          "reliability": 70,
          "schema": 70,
          "security": 68,
          "transparency": 63
        },
        "provenanceScore": 75
      },
      "connect": {
        "install": "pip install modal \u0026\u0026 modal setup",
        "http": "curl -X POST \"https://$MODAL_WORKSPACE--my-app-predict.modal.run\" \\\n  -H \"Modal-Key: $MODAL_PROXY_KEY\" -H \"Modal-Secret: $MODAL_PROXY_SECRET\" \\\n  -H \"Content-Type: application/json\" -d '{\"prompt\":\"hello\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/compute.gpu",
        "tool": "https://letme.dev/modal"
      },
      "sameCompany": [
        "modal-sandboxes"
      ],
      "area": "models",
      "unitPrices": [
        {
          "item": "H100 80 GB",
          "unit": "gpu-hour",
          "usd": 3.95,
          "note": "$0.001097 a second, may be upgraded to H200 at the same price"
        },
        {
          "item": "H200 141 GB",
          "unit": "gpu-hour",
          "usd": 4.54,
          "note": "$0.001261 a second"
        },
        {
          "item": "B200 180 GB",
          "unit": "gpu-hour",
          "usd": 6.25,
          "note": "$0.001736 a second"
        },
        {
          "item": "A100 80 GB",
          "unit": "gpu-hour",
          "usd": 2.5,
          "note": "$0.000694 a second"
        },
        {
          "item": "L40S 48 GB",
          "unit": "gpu-hour",
          "usd": 1.95,
          "note": "$0.000542 a second"
        },
        {
          "item": "L4 24 GB",
          "unit": "gpu-hour",
          "usd": 0.8,
          "note": "$0.000222 a second"
        },
        {
          "item": "T4 16 GB",
          "unit": "gpu-hour",
          "usd": 0.59,
          "note": "$0.000164 a second"
        },
        {
          "item": "Team plan",
          "unit": "month",
          "usd": 250,
          "note": "Plus compute, $100 included, 50 concurrent GPUs"
        }
      ],
      "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": false,
        "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.",
          "Deployed web endpoints and Servers are served from *.modal.run, a separate domain from modal.com. Deployment itself goes through the SDK, so there's no public API base URL to check.",
          "modal.com/.well-known/security.txt returns 404. The security guide gives security@modal.com and a private HackerOne programme.",
          "Modal Sandboxes are listed separately under code sandboxes."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/modal.json",
      "live": {
        "slug": "modal",
        "vendorStatus": {
          "page": "https://status.modal.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T18:12:01.451022336Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "modal",
            "version": "0.11.0",
            "seenAt": "2026-10-04T16:33:46.797593577Z"
          },
          {
            "registry": "pypi",
            "name": "modal",
            "version": "1.6.1",
            "released": "2026-10-03",
            "seenAt": "2026-10-04T16:33:46.666636627Z"
          }
        ],
        "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:18:01.18366808Z"
        },
        "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"
        },
        "updatedAt": "2026-10-04T18:12:01.451022336Z"
      }
    },
    "b": {
      "slug": "runpod",
      "name": "Runpod",
      "vendor": "Runpod",
      "vendorUrl": "https://www.runpod.io",
      "kind": "http-api",
      "category": "gpu-compute",
      "summary": "Serverless GPU endpoints, queue-based or load-balanced, and rented GPU Pods, billed per second from prepaid credit.",
      "url": "https://www.anchorterminal.com/tools/runpod",
      "markdownUrl": "https://www.anchorterminal.com/tools/runpod.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/runpod.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/runpod.json",
      "repo": "https://github.com/runpod/runpod-python",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.runpod.ai/v2",
      "packages": [
        {
          "registry": "pypi",
          "name": "runpod"
        },
        {
          "registry": "npm",
          "name": "runpod-sdk"
        },
        {
          "registry": "npm",
          "name": "@runpod/mcp-server"
        },
        {
          "registry": "pypi",
          "name": "runpod-flash"
        }
      ],
      "auth": "mixed",
      "authNotes": "API key from the console sent as `Authorization: Bearer` to serverless endpoints at api.runpod.ai/v2/\u003cendpoint-id\u003e and to the management REST API v2 at api.runpod.io/v2. Keys can be All, Read Only or Restricted per serverless endpoint. The deprecated GraphQL API takes the key as `?api_key=` in the URL. The hosted MCP server at mcp.getrunpod.io signs in with OAuth (Sign in with Runpod) or takes an API key as a Bearer header; the local `@runpod/mcp-server` reads `RUNPOD_API_KEY`.",
      "pricing": "usage",
      "pricingNotes": "Prepaid credit, billed per second and rounded up to the nearest second, with no data transfer fees and no free tier. Serverless flex workers an hour are 16 GB A4000 class $0.58, L4, A5000 or RTX 3090 $0.69, RTX 4090 $1.10, RTX Pro 4500 $1.15, A6000 or A40 $1.22, RTX 5090 $1.58, L40, L40S or RTX 6000 Ada $1.75, A100 80 GB $2.72, RTX Pro 6000 $3.49, H100 $4.79, H200 $5.93, B200 $8.64, B300 $9.98. Active (always-on) workers are discounted through sales. Pods run from $0.27 an hour (RTX A5000) to $7.89 (B300) on Community or Secure Cloud. Container disk $0.10 a GB-month, volume disk $0.10 running and $0.20 idle, network volumes $0.07 a GB-month under 1 TB and $0.05 above, high-performance $0.14. Default spend cap $80 an hour. Cards, crypto after KYC, prepaid cards at $100 or more a transaction, invoicing above $5,000 (https://www.runpod.io/pricing, https://docs.runpod.io/serverless/pricing, https://docs.runpod.io/accounts-billing/billing).",
      "priceSummary": "Pay per use",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 314,
        "npmWeekly": 21838,
        "pypiWeekly": 146926,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.runpod.io",
      "llmsTxt": "https://docs.runpod.io/llms.txt",
      "openapi": "https://api.runpod.io/v2/openapi.json",
      "capabilities": [
        "compute.gpu",
        "compute.serverless",
        "compute.endpoints",
        "compute.batch",
        "compute.containers"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "prepaid",
        "mcp",
        "oauth",
        "llms-txt",
        "python",
        "typescript",
        "async-jobs",
        "batch",
        "webhooks",
        "enterprise"
      ],
      "lastRelease": "2026-09-15",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.7,
        "grade": "D",
        "agentReady": false,
        "rank": 329,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 6,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 47,
          "maintenance": 82,
          "payments": 20,
          "reliability": 35,
          "schema": 81,
          "security": 60,
          "transparency": 65
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Per-second billing across more than a dozen serverless GPU classes, H100 at $4.79 and A100 80 GB at $2.72 an hour. Data-centre outages of 6 to 24 hours in each of July, August and September 2026.",
        "strengths": [
          "Per-second billing across more than a dozen serverless GPU classes, H100 at $4.79 and A100 80 GB at $2.72 an hour",
          "API keys can be Read Only or restricted per serverless endpoint",
          "OpenAPI file for REST v2, llms.txt and dated release notes with deprecation dates",
          "Official MCP server, hosted with OAuth or local over stdio",
          "Valid security.txt and SOC 2 Type 2 and ISO 27001 in the trust centre"
        ],
        "weaknesses": [
          "Data-centre outages of 6 to 24 hours in each of July, August and September 2026",
          "No published rate limits, 429 guidance, error codes or SLA",
          "The GraphQL API, live until early 2027, takes the API key in the URL",
          "No free tier, prepaid credit only",
          "Three APIs in flight, with REST v1 retiring on 15 November 2026"
        ],
        "agentNotes": [
          "Create a Restricted or Read Only key per endpoint for the agent, not an All key",
          "Use REST v2 at api.runpod.io/v2 with a Bearer header; avoid GraphQL, which puts the key in the URL",
          "Fetch `/run` results within 30 minutes and `/runsync` results within 1 minute, or they're gone",
          "Call `/retry` on a failed job ID rather than submitting a duplicate job",
          "Check `/health` before relying on an endpoint idle for a week, since max workers drop to 0"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.7
          }
        ],
        "editorialScores": {
          "ergonomics": 47,
          "maintenance": 82,
          "payments": 20,
          "reliability": 35,
          "schema": 81,
          "security": 60,
          "transparency": 60
        },
        "provenanceScore": 70
      },
      "connect": {
        "install": "pip install runpod  # or npm i runpod-sdk",
        "http": "curl -X POST \"https://api.runpod.ai/v2/$RUNPOD_ENDPOINT_ID/runsync\" \\\n  -H \"Authorization: Bearer $RUNPOD_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"input\":{\"prompt\":\"Hello, world!\"}}'",
        "claudeCode": "claude mcp add --transport http runpod https://mcp.getrunpod.io/ --header \"Authorization: Bearer $RUNPOD_API_KEY\"",
        "config": {
          "mcpServers": {
            "runpod": {
              "args": [
                "-y",
                "@runpod/mcp-server@latest"
              ],
              "command": "npx",
              "env": {
                "RUNPOD_API_KEY": "${RUNPOD_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/compute.gpu",
        "tool": "https://letme.dev/runpod"
      },
      "area": "models",
      "unitPrices": [
        {
          "item": "H100 80 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 4.79,
          "note": "Billed per second"
        },
        {
          "item": "H200 141 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 5.93
        },
        {
          "item": "B200 180 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 8.64
        },
        {
          "item": "A100 80 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 2.72
        },
        {
          "item": "L40S 48 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 1.75
        },
        {
          "item": "RTX 4090 24 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 1.1
        },
        {
          "item": "L4 24 GB serverless flex",
          "unit": "gpu-hour",
          "usd": 0.69
        },
        {
          "item": "Container disk",
          "unit": "gb-month",
          "usd": 0.1
        },
        {
          "item": "Network volume under 1 TB",
          "unit": "gb-month",
          "usd": 0.07,
          "note": "$0.05 above 1 TB, $0.14 high-performance"
        }
      ],
      "provenance": {
        "legalEntity": "Runpod, Inc.",
        "domain": "runpod.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.runpod.io/legal/terms-of-service",
        "privacy": "https://www.runpod.io/legal/privacy-policy",
        "statusPage": "https://uptime.runpod.io",
        "changelog": "https://docs.runpod.io/release-notes",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "Terms effective 24 March 2026 name Runpod, Inc. under Delaware law. The privacy policy gives 329 Bryant St #4D, San Francisco.",
          "Serverless endpoints are served from api.runpod.ai and the management API from api.runpod.io, while the hosted MCP server sits on getrunpod.io.",
          "security.txt points to trust.runpod.io and expires 2027-01-31.",
          "The .io registry's RDAP server rate-limited our lookup, so the registration date is unrecorded."
        ],
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/runpod.json",
      "live": {
        "slug": "runpod",
        "probe": {
          "target": "https://api.runpod.ai/v2",
          "method": "get",
          "lastAt": "2026-10-05T01:43:44.669507161Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 60,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 47,
          "p95ms24h": 91,
          "samples24h": 272,
          "samples30d": 920,
          "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": 20,
              "ok": 20
            }
          ]
        },
        "vendorStatus": {
          "page": "https://uptime.runpod.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:27.797321476Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "runpod/runpod-python",
            "version": "v1.12.0",
            "released": "2026-08-10",
            "seenAt": "2026-10-04T16:38:45.92301028Z"
          },
          {
            "registry": "npm",
            "name": "@runpod/mcp-server",
            "version": "4.0.0",
            "seenAt": "2026-10-04T16:38:44.129996109Z"
          },
          {
            "registry": "npm",
            "name": "runpod-sdk",
            "version": "1.1.2",
            "seenAt": "2026-10-04T16:38:43.626700927Z"
          },
          {
            "registry": "pypi",
            "name": "runpod",
            "version": "1.12.0",
            "released": "2026-08-10",
            "seenAt": "2026-10-04T16:38:43.443916692Z"
          },
          {
            "registry": "pypi",
            "name": "runpod-flash",
            "version": "1.20.0",
            "released": "2026-09-24",
            "seenAt": "2026-10-04T16:38:45.837849754Z"
          }
        ],
        "githubStars": 313,
        "npmWeekly": 29952,
        "securityTxt": {
          "url": "https://runpod.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-31T23:59:59Z",
          "checkedAt": "2026-10-04T15:15:41.463706841Z"
        },
        "llmsTxt": {
          "url": "https://docs.runpod.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:12.095308214Z"
        },
        "domain": {
          "domain": "runpod.io",
          "checkedAt": "2026-10-04T13:06:54.960688955Z"
        },
        "pages": [
          {
            "url": "https://docs.runpod.io/release-notes",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-04T15:44:00.021950941Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "64302af06aec"
          },
          {
            "url": "https://docs.runpod.io/serverless/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:44:02.16843867Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "acdfc6a36a7f"
          },
          {
            "url": "https://www.runpod.io/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:52:04.97613805Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4e4c891c31f7"
          },
          {
            "url": "https://www.runpod.io/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:52:00.890880838Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "00b9defcdf3d"
          },
          {
            "url": "https://www.runpod.io/legal/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:52:02.970729657Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4163df004c48"
          }
        ],
        "updatedAt": "2026-10-05T01:43:44.669507161Z"
      }
    },
    "summary": "Modal has a score of 63.8 (B) against Runpod's 53.7 (D). Both do compute gpu. 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-vs-runpod",
    "json": "https://www.anchorterminal.com/compare/modal-vs-runpod.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/modal-vs-runpod.md",
    "slim": "https://www.anchorterminal.com/compare/modal-vs-runpod.min.md"
  },
  "markdown": "Modal has a score of 63.8 (B) against Runpod's 53.7 (D). Both do compute gpu. The largest gap is reliability, 35 points.\n\n- Modal: grade B, 63.8/100, rank #195 of 452. Markdown https://www.anchorterminal.com/tools/modal.md · JSON https://www.anchorterminal.com/api/v1/tools/modal.json\n- Runpod: grade D, 53.7/100, rank #329 of 452. Markdown https://www.anchorterminal.com/tools/runpod.md · JSON https://www.anchorterminal.com/api/v1/tools/runpod.json\n\n## Which one, for what\n\nPick Modal for reliability (+35), agent ergonomics (+10), security \u0026 auth (+8), payments \u0026 pricing (+10).\n\nPick Runpod for schema \u0026 documentation (+11).\n\n## Score by category\n\n| Category | Weight | Modal | Runpod | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 35 | Modal +35 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 70 | 81 | Runpod +11 |\n| Agent ergonomics | 13% (16.2 this run) | 57 | 47 | Modal +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 60 | Modal +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 20 | Modal +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 82 | Modal +3 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 65 | Modal +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **63.8 · B** | **53.7 · D** | |\n\n## Facts side by side\n\n| Fact | Modal | Runpod |\n| --- | --- | --- |\n| Kind | Model platform | HTTP API |\n| Vendor | Modal | Runpod |\n| Hosted endpoint | no (local only) | `https://api.runpod.ai/v2` |\n| Transports |  | HTTP, Streamable HTTP, stdio |\n| Auth | API key | OAuth or 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-15 |\n| Popularity | 514 stars, 941k npm/wk, 10.1M PyPI/wk | 314 stars, 22k npm/wk, 147k PyPI/wk |\n| Agent reviews | 4/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**Modal.** Scale to zero by default, per-second billing and about one-second container boots. No REST API or OpenAPI spec for deploying or invoking Functions.\n\n**Runpod.** Per-second billing across more than a dozen serverless GPU classes, H100 at $4.79 and A100 80 GB at $2.72 an hour. Data-centre outages of 6 to 24 hours in each of July, August and September 2026.\n\n## Before you call either\n\n### Modal\n\n1. Create a proxy token and require it on every web endpoint before sharing the URL; endpoints are public by default\n2. Pass a list to `gpu=` (for example `[\"H100\", \"A100-80GB\"]`) so a job still runs when the first choice is unavailable\n3. Set `scaledown_window` and `min_containers` explicitly; the defaults are 60 seconds and 0\n4. Use `.spawn()` and poll the call ID for long work instead of holding a web request open\n5. Keep web endpoint traffic under 200 requests a second or ask Modal to raise the limit\n\n### Runpod\n\n1. Create a Restricted or Read Only key per endpoint for the agent, not an All key\n2. Use REST v2 at api.runpod.io/v2 with a Bearer header; avoid GraphQL, which puts the key in the URL\n3. Fetch `/run` results within 30 minutes and `/runsync` results within 1 minute, or they're gone\n4. Call `/retry` on a failed job ID rather than submitting a duplicate job\n5. Check `/health` before relying on an endpoint idle for a week, since max workers drop to 0\n\n## Other comparisons with Modal or Runpod\n\n- [Baseten vs Modal](https://www.anchorterminal.com/compare/baseten-vs-modal.md)\n- [Baseten vs Runpod](https://www.anchorterminal.com/compare/baseten-vs-runpod.md)\n- [Beam vs Modal](https://www.anchorterminal.com/compare/beam-vs-modal.md)\n- [Beam vs Runpod](https://www.anchorterminal.com/compare/beam-vs-runpod.md)\n- [Koyeb vs Modal](https://www.anchorterminal.com/compare/koyeb-vs-modal.md)\n- [Koyeb vs Runpod](https://www.anchorterminal.com/compare/koyeb-vs-runpod.md)\n- [Lambda Cloud vs Modal](https://www.anchorterminal.com/compare/lambda-vs-modal.md)\n- [Lambda Cloud vs Runpod](https://www.anchorterminal.com/compare/lambda-vs-runpod.md)\n- [Modal vs Northflank](https://www.anchorterminal.com/compare/modal-vs-northflank.md)\n- [Modal vs Replicate Deployments](https://www.anchorterminal.com/compare/modal-vs-replicate-deploy.md)\n- [Northflank vs Runpod](https://www.anchorterminal.com/compare/northflank-vs-runpod.md)\n- [Replicate Deployments vs Runpod](https://www.anchorterminal.com/compare/replicate-deploy-vs-runpod.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 vs Runpod",
        "url": ""
      }
    ],
    "description": "Modal has a score of 63.8 (B) against Runpod's 53.7 (D). Both do compute gpu. The largest gap is reliability, 35 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Modal B 63.8",
      "Runpod D 53.7",
      "scores"
    ],
    "h1": "Modal vs Runpod",
    "image": "https://www.anchorterminal.com/assets/og/compare-modal-vs-runpod.png",
    "path": "/compare/modal-vs-runpod",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Modal vs Runpod for AI agents, B 63.8 vs D 53.7 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/modal-vs-runpod"
  },
  "tokens": {
    "markdown": 1350,
    "slim": 330
  },
  "version": 1
}
