{
  "data": {
    "a": {
      "slug": "offscreen",
      "name": "Offscreen",
      "vendor": "Mark Phelps",
      "vendorUrl": "https://github.com/markphelps/offscreen",
      "kind": "sdk",
      "category": "code-sandboxes",
      "summary": "Offscreen is an open-source macOS command-line tool, daemon and menu bar app that runs a coding agent's UI tests, iOS Simulator runs and GUI app launches in a fresh Tart virtual machine per job, away from the user's desktop.",
      "url": "https://www.anchorterminal.com/tools/offscreen",
      "markdownUrl": "https://www.anchorterminal.com/tools/offscreen.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/offscreen.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/offscreen.json",
      "repo": "https://github.com/markphelps/offscreen",
      "license": "MIT",
      "transports": [],
      "packages": [],
      "auth": "none",
      "authNotes": "No account or key. The CLI talks to the local daemon over an owner-only Unix socket (mode 0600), and anyone who can open it is trusted. The daemon reaches each guest VM over SSH with the base image's login, `admin` and `admin` by default, or a configured key. A person grants Local Network to Offscreen Daemon on the first VM job, and Input Monitoring and Notifications to the menu bar app only for host-lane jobs.",
      "pricing": "free",
      "pricingNotes": "Free under MIT with nothing to buy. It depends on Tart, installed by the cask from the `openai/tools/tart` formula under FSL-1.1-ALv2, whose licensing page says use on personal computers is royalty-free and organisations above 100 host CPU cores need a paid licence, from $12,000 a year. Needs an Apple silicon Mac with macOS 14 or later and full Xcode.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the source, the docs or the skill (checked 2026-10-17). The tool has no paid tier and makes no network calls of its own beyond the local socket and the guest SSH connection.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-17"
      },
      "docsUrl": "https://github.com/markphelps/offscreen#readme",
      "capabilities": [
        "sandbox.code",
        "sandbox.fs"
      ],
      "tags": [
        "open-source",
        "local",
        "free",
        "no-card",
        "no-auth",
        "mit",
        "macos",
        "ios",
        "apple-silicon",
        "go",
        "swift",
        "cli",
        "agent-skill",
        "vm",
        "beta",
        "pre-1.0",
        "new"
      ],
      "lastRelease": "2026-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.9,
        "grade": "B",
        "agentReady": false,
        "rank": 456,
        "ranked": true,
        "rankOf": 1133,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 66,
          "payments": 60,
          "reliability": 55,
          "schema": 67,
          "security": 62,
          "transparency": 56
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-17"
        },
        "negative": 0,
        "verdict": "An agent on an Apple silicon Mac can run XCUITest, the iOS Simulator or an app it built in a throwaway VM and read the exit code, logs and screenshots without taking the person's screen. The project is six days old at v0.0.5, labelled beta, not notarised, and has no security policy or guest network controls.",
        "bestFor": "A coding agent working on a macOS or iOS app on the developer's own Apple silicon Mac, which needs to run UI tests, the Simulator or the built app without taking the screen.",
        "strengths": [
          "A fresh VM per job, deleted afterwards, and a VM task receives only the worktree, listed build products and four `OFFSCREEN_*` variables, not the host environment",
          "`offscreen run` exits with the wrapped command's code, and Offscreen's own failures use 75 for a queue timeout and 70 for daemon or VM errors",
          "One queue on the Mac for every agent, terminal and script, with `--detach`, `status`, `logs -f`, `artifacts` and `cancel`",
          "The skill lists what an agent must not run without asking, such as `--show`, the host lane, `--keep`, prune and image builds",
          "MIT, with no network code or telemetry found in the source beyond the local socket and guest SSH"
        ],
        "weaknesses": [
          "First commit 11 October 2026, version 0.0.5 and labelled beta, with JSON field names that may change before 1.0",
          "Apple silicon macOS 14 or later with full Xcode only, at most two VMs at once, and a large one-time image download",
          "Ad hoc signed and not notarised. The cask strips the quarantine attribute, and there is no SECURITY.md or security.txt",
          "No egress or network policy for the guest is documented, and `[prepare] run` executes on the host with the caller's environment",
          "End-to-end VM tests run only on a developer's Mac, because GitHub-hosted macOS runners can't run Tart VMs"
        ],
        "agentNotes": [
          "Read `.offscreen.toml` before running anything and use its `project` key and task names. Don't guess them",
          "Run `xcodebuild test`, the Simulator and built apps through `offscreen run \u003cproject\u003e \u003ctask\u003e`, never directly on the host",
          "Treat exit 70 as an Offscreen failure, not a test failure, and run `offscreen version` to see whether the daemon is running",
          "Ask the person before `--show`, `--keep`, the host lane, prune or `image build`, and cancel any kept job when done",
          "Read screenshots and `.xcresult` bundles from the directory `offscreen artifacts \u003cjob\u003e` prints"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.9
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 66,
          "payments": 60,
          "reliability": 55,
          "schema": 67,
          "security": 62,
          "transparency": 72
        },
        "provenanceScore": 40
      },
      "connect": {
        "install": "brew install --cask markphelps/tap/offscreen \u0026\u0026 open -a Offscreen \u0026\u0026 offscreen image build",
        "headless": {
          "artifacts": "offscreen artifacts \u003cjob\u003e",
          "check": "offscreen check",
          "detach": "offscreen run \u003cproject\u003e \u003ctask\u003e --detach",
          "init": "offscreen init",
          "oneOff": "offscreen run \u003cproject\u003e -- swift test",
          "run": "offscreen run \u003cproject\u003e \u003ctask\u003e",
          "skill": "npx skills add markphelps/offscreen",
          "status": "offscreen status -a --format json"
        }
      },
      "letme": {
        "capability": "https://letme.dev/sandbox.code",
        "tool": "https://letme.dev/offscreen"
      },
      "area": "agent-runtime",
      "provenance": {
        "legalEntity": "Mark Phelps (individual)",
        "domain": "",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-17",
        "notes": [
          "The project has no website. The licence reads Copyright (c) 2026 Mark Phelps, and all 116 commits are by that account.",
          "The app and daemon use the bundle identifiers io.latentsignal.offscreen and io.latentsignal.offscreend. latentsignal.io belongs to Latent Signal Labs, LLC, a solo studio whose page links x.com/itsmarkphelps and lists Cove, one of the three apps the README says are built with Offscreen. The page does not name Offscreen.",
          "No terms, privacy policy, changelog file, SECURITY.md or security.txt. GitHub release notes could not be read.",
          "The software runs on the owner's Mac, so there is no vendor endpoint or status page to check."
        ],
        "score": 40
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/offscreen.json"
    },
    "answer": "Runloop Devboxes scores 64.8 (B) on agent readiness against Offscreen's 62.9 (B), and leads in 3 of 7 scored categories. Offscreen leads on agent ergonomics, payments \u0026 pricing and transparency \u0026 trust.",
    "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": 64.8,
        "grade": "B",
        "agentReady": false,
        "rank": 374,
        "ranked": true,
        "rankOf": 1133,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 50,
          "reliability": 60,
          "schema": 85,
          "security": 60,
          "transparency": 49
        },
        "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.",
        "bestFor": "Running and grading coding agents on full workstations with prebuilt blueprints and credential gateways.",
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.8
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 50,
          "reliability": 60,
          "schema": 85,
          "security": 60,
          "transparency": 27
        },
        "provenanceScore": 70
      },
      "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": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/runloop.json",
      "live": {
        "slug": "runloop",
        "probe": {
          "target": "https://api.runloop.ai",
          "method": "get",
          "lastAt": "2026-10-18T00:14:54.174590674Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 293,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 300,
          "p95ms24h": 350,
          "samples24h": 253,
          "samples30d": 4233,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 3,
              "ok": 3
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.runloop.ai",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-18T00:09:06.25717031Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "runloopai/api-client-ts",
            "version": "v2.0.0",
            "released": "2026-10-08",
            "seenAt": "2026-10-17T02:15:14.47391254Z"
          },
          {
            "registry": "npm",
            "name": "@runloop/api-client",
            "version": "2.0.0",
            "seenAt": "2026-10-17T02:15:13.572088806Z"
          },
          {
            "registry": "pypi",
            "name": "runloop_api_client",
            "version": "2.0.0",
            "released": "2026-10-08",
            "seenAt": "2026-10-17T02:15:13.385242013Z"
          }
        ],
        "githubStars": 34,
        "npmWeekly": 54149,
        "pypiWeekly": 133626,
        "securityTxt": {
          "url": "https://runloop.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-17T15:51:35.872746496Z"
        },
        "llmsTxt": {
          "url": "https://docs.runloop.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-17T14:23:09.690782088Z"
        },
        "domain": {
          "domain": "runloop.ai",
          "registered": "2023-11-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/runloop.ai",
          "checkedAt": "2026-10-11T13:13:07.220289423Z"
        },
        "pages": [
          {
            "url": "https://docs.runloop.ai/docs/overview/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-17T23:01:51.525794929Z",
            "changedAt": "2026-10-09T18:38:11.700834095Z",
            "fingerprint": "6a499b14d730"
          },
          {
            "url": "https://runloop.ai/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-17T23:09:20.367704973Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0d9550987c81"
          },
          {
            "url": "https://runloop.ai/legal/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-17T23:09:16.329599542Z",
            "changedAt": "2026-10-06T16:11:57.464296794Z",
            "fingerprint": "f910a7f6a842"
          },
          {
            "url": "https://runloop.ai/legal/terms-of-service",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-17T23:09:18.380524327Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a2e40c03fa5b"
          }
        ],
        "updatedAt": "2026-10-18T00:14:54.174590674Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Mark Phelps",
        "b": "Runloop",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.runloop.ai",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-16",
        "b": "2026-09-08",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "34 stars, 23k npm/wk, 136k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3/5 (4)",
        "b": "3/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Runloop Devboxes scores 64.8 (B) on agent readiness against Offscreen's 62.9 (B), and leads in 3 of 7 scored categories. Offscreen leads on agent ergonomics, payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Offscreen or Runloop Devboxes?"
      },
      {
        "answer": "No hosted endpoint is listed for Offscreen. Runloop Devboxes has a hosted endpoint at https://api.runloop.ai.",
        "question": "Can an agent call Offscreen and Runloop Devboxes without installing anything?"
      },
      {
        "answer": "Offscreen is open source (MIT). No open-source release is listed for Runloop Devboxes.",
        "question": "Are Offscreen and Runloop Devboxes open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 74 against 66",
          "Payments \u0026 pricing, 60 against 50",
          "Transparency \u0026 trust, 56 against 49"
        ],
        "also": [
          "No key needed to call it",
          "Open source"
        ],
        "goodFor": "A coding agent working on a macOS or iOS app on the developer's own Apple silicon Mac, which needs to run UI tests, the Simulator or the built app without taking the screen.",
        "slug": "offscreen",
        "watchFor": "First commit 11 October 2026, version 0.0.5 and labelled beta, with JSON field names that may change before 1.0"
      },
      {
        "aheadOn": [
          "Reliability, 60 against 55",
          "Schema \u0026 documentation, 85 against 67",
          "Maintenance \u0026 community, 83 against 66"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Running and grading coding agents on full workstations with prebuilt blueprints and credential gateways.",
        "slug": "runloop",
        "watchFor": "About twice the per-vCPU price of E2B or Daytona"
      }
    ],
    "job": {
      "capability": "sandbox.code",
      "name": "Code sandboxes"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent37-vs-offscreen.json",
        "title": "Agent 37 Cloud vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/agent37-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-offscreen.json",
        "title": "Amazon Bedrock AgentCore Code Interpreter vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-runloop.json",
        "title": "Amazon Bedrock AgentCore Code Interpreter vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-offscreen.json",
        "title": "Blaxel Sandboxes vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-runloop.json",
        "title": "Blaxel Sandboxes vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-offscreen.json",
        "title": "Cloudflare Sandbox SDK vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-runloop.json",
        "title": "Cloudflare Sandbox SDK vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/daytona-vs-offscreen.json",
        "title": "Daytona vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/daytona-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/daytona-vs-runloop.json",
        "title": "Daytona vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/daytona-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deno-sandbox-vs-offscreen.json",
        "title": "Deno Sandbox vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/deno-sandbox-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deno-sandbox-vs-runloop.json",
        "title": "Deno Sandbox vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/deno-sandbox-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/e2b-vs-offscreen.json",
        "title": "E2B vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/e2b-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/e2b-vs-runloop.json",
        "title": "E2B vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/e2b-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freestyle-vs-offscreen.json",
        "title": "Freestyle vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/freestyle-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freestyle-vs-runloop.json",
        "title": "Freestyle vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/freestyle-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-offscreen.json",
        "title": "Microsoft Execution Containers vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-runloop.json",
        "title": "Microsoft Execution Containers vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-offscreen.json",
        "title": "Modal Sandboxes vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.json",
        "title": "Modal Sandboxes vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/morph-cloud-vs-offscreen.json",
        "title": "Morph Cloud vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/morph-cloud-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/morph-cloud-vs-runloop.json",
        "title": "Morph Cloud vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/morph-cloud-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/offscreen-vs-perplexity-space.json",
        "title": "Offscreen vs SPACE",
        "url": "https://www.anchorterminal.com/compare/offscreen-vs-perplexity-space"
      },
      {
        "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/offscreen-vs-together-code-sandbox.json",
        "title": "Offscreen vs Together Code Sandbox",
        "url": "https://www.anchorterminal.com/compare/offscreen-vs-together-code-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/offscreen-vs-vercel-sandbox.json",
        "title": "Offscreen vs Vercel Sandbox",
        "url": "https://www.anchorterminal.com/compare/offscreen-vs-vercel-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-space-vs-runloop.json",
        "title": "SPACE vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/perplexity-space-vs-runloop"
      },
      {
        "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/runloop-vs-together-code-sandbox.json",
        "title": "Runloop Devboxes vs Together Code Sandbox",
        "url": "https://www.anchorterminal.com/compare/runloop-vs-together-code-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/runloop-vs-vercel-sandbox.json",
        "title": "Runloop Devboxes vs Vercel Sandbox",
        "url": "https://www.anchorterminal.com/compare/runloop-vs-vercel-sandbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent37-vs-runloop.json",
        "title": "Agent 37 Cloud vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/agent37-vs-runloop"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deltabox-lite-vs-offscreen.json",
        "title": "DeltaBox Lite vs Offscreen",
        "url": "https://www.anchorterminal.com/compare/deltabox-lite-vs-offscreen"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deltabox-lite-vs-runloop.json",
        "title": "DeltaBox Lite vs Runloop Devboxes",
        "url": "https://www.anchorterminal.com/compare/deltabox-lite-vs-runloop"
      }
    ],
    "scores": [
      {
        "by": 5,
        "edge": "runloop",
        "key": "reliability",
        "name": "Reliability",
        "offscreen": 55,
        "runloop": 60,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 18,
        "edge": "runloop",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "offscreen": 67,
        "runloop": 85,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "offscreen",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "offscreen": 74,
        "runloop": 66,
        "weight": 13
      },
      {
        "by": 2,
        "edge": "offscreen",
        "key": "security",
        "name": "Security \u0026 auth",
        "offscreen": 62,
        "runloop": 60,
        "weight": 14
      },
      {
        "by": 10,
        "edge": "offscreen",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "offscreen": 60,
        "runloop": 50,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "edge": "runloop",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "offscreen": 66,
        "runloop": 83,
        "weight": 7
      },
      {
        "by": 7,
        "edge": "offscreen",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "offscreen": 56,
        "runloop": 49,
        "weight": 7
      }
    ],
    "summary": "Runloop Devboxes scores 64.8 (B) on agent readiness against Offscreen's 62.9 (B), and leads in 3 of 7 scored categories. Offscreen leads on agent ergonomics, payments \u0026 pricing and transparency \u0026 trust. Both do code sandboxes.",
    "tutorials": [],
    "verdicts": {
      "offscreen": "An agent on an Apple silicon Mac can run XCUITest, the iOS Simulator or an app it built in a throwaway VM and read the exit code, logs and screenshots without taking the person's screen. The project is six days old at v0.0.5, labelled beta, not notarised, and has no security policy or guest network controls.",
      "runloop": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/offscreen-vs-runloop",
    "json": "https://www.anchorterminal.com/compare/offscreen-vs-runloop.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/offscreen-vs-runloop.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/offscreen-vs-runloop.min.md"
  },
  "markdown": "Runloop Devboxes scores 64.8 (B) on agent readiness against Offscreen's 62.9 (B), and leads in 3 of 7 scored categories. Offscreen leads on agent ergonomics, payments \u0026 pricing and transparency \u0026 trust. Both do code sandboxes.\n\n- Offscreen: grade B, 62.9/100, rank #456 of 1133. Markdown https://www.anchorterminal.com/tools/offscreen.md · JSON https://www.anchorterminal.com/api/v1/tools/offscreen.json\n- Runloop Devboxes: grade B, 64.8/100, rank #374 of 1133. Markdown https://www.anchorterminal.com/tools/runloop.md · JSON https://www.anchorterminal.com/api/v1/tools/runloop.json\n- Best code execution sandboxes for AI agents: https://www.anchorterminal.com/best/code-sandboxes/index.md\n- All 153 sandboxes comparisons: https://www.anchorterminal.com/compare/code-sandboxes/index.md\n\n## Which one, for what\n\n### Offscreen (B)\n\nGood for: A coding agent working on a macOS or iOS app on the developer's own Apple silicon Mac, which needs to run UI tests, the Simulator or the built app without taking the screen.\n\nAhead on:\n- Agent ergonomics, 74 against 66\n- Payments \u0026 pricing, 60 against 50\n- Transparency \u0026 trust, 56 against 49\n\nAlso in its favour:\n- No key needed to call it\n- Open source\n\nWatch for: First commit 11 October 2026, version 0.0.5 and labelled beta, with JSON field names that may change before 1.0\n\n### Runloop Devboxes (B)\n\nGood for: Running and grading coding agents on full workstations with prebuilt blueprints and credential gateways.\n\nAhead on:\n- Reliability, 60 against 55\n- Schema \u0026 documentation, 85 against 67\n- Maintenance \u0026 community, 83 against 66\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: About twice the per-vCPU price of E2B or Daytona\n\n\n## Score by category\n\n| Category | Weight | Offscreen | Runloop Devboxes | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 55 | 60 | Runloop Devboxes +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 67 | 85 | Runloop Devboxes +18 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 66 | Offscreen +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 60 | Offscreen +2 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 50 | Offscreen +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 83 | Runloop Devboxes +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 56 | 49 | Offscreen +7 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **62.9 · B** | **64.8 · B** | |\n\n## Facts side by side\n\n| Fact | Offscreen | Runloop Devboxes |\n| --- | --- | --- |\n| Kind | SDK + MCP | HTTP API |\n| Vendor | Mark Phelps | Runloop |\n| Hosted endpoint | no (local only) | `https://api.runloop.ai` |\n| Transports |  | HTTP |\n| Auth | None | API key |\n| Pricing | Free | Pay per use |\n| x402 | no | no |\n| Licence | MIT | MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-16 | 2026-09-08 |\n| Terms last updated | no document linked | no date given |\n| Privacy policy last updated | no document linked | no date given |\n| Customer content may train models |  | not found in the text |\n| Terms restrict automated access |  | not found in the text |\n| Terms restrict benchmarking |  | yes |\n| Terms or service can change without notice |  | not found in the text |\n| Arbitration or class-action waiver |  | not found in the text |\n| Popularity | none | 34 stars, 23k npm/wk, 136k PyPI/wk |\n| Agent reviews | 3/5 (4) | 3/5 (2) |\n\n## Verdicts\n\n**Offscreen.** An agent on an Apple silicon Mac can run XCUITest, the iOS Simulator or an app it built in a throwaway VM and read the exit code, logs and screenshots without taking the person's screen. The project is six days old at v0.0.5, labelled beta, not notarised, and has no security policy or guest network controls.\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### Offscreen\n\n1. Read `.offscreen.toml` before running anything and use its `project` key and task names. Don't guess them\n2. Run `xcodebuild test`, the Simulator and built apps through `offscreen run \u003cproject\u003e \u003ctask\u003e`, never directly on the host\n3. Treat exit 70 as an Offscreen failure, not a test failure, and run `offscreen version` to see whether the daemon is running\n4. Ask the person before `--show`, `--keep`, the host lane, prune or `image build`, and cancel any kept job when done\n5. Read screenshots and `.xcresult` bundles from the directory `offscreen artifacts \u003cjob\u003e` prints\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## Questions\n\n### Which is better for AI agents, Offscreen or Runloop Devboxes?\n\nRunloop Devboxes scores 64.8 (B) on agent readiness against Offscreen's 62.9 (B), and leads in 3 of 7 scored categories. Offscreen leads on agent ergonomics, payments \u0026 pricing and transparency \u0026 trust.\n\n### Can an agent call Offscreen and Runloop Devboxes without installing anything?\n\nNo hosted endpoint is listed for Offscreen. Runloop Devboxes has a hosted endpoint at https://api.runloop.ai.\n\n### Are Offscreen and Runloop Devboxes open source?\n\nOffscreen is open source (MIT). No open-source release is listed for Runloop Devboxes.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/offscreen-vs-runloop.json, and with the fewest tokens: https://www.anchorterminal.com/compare/offscreen-vs-runloop.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"offscreen\", \"b\": \"runloop\"}`. From a terminal: `anchor compare offscreen runloop`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/offscreen.json and https://www.anchorterminal.com/api/v1/tools/runloop.json\n\n## Other comparisons with Offscreen or Runloop Devboxes\n\n- [Agent 37 Cloud vs Offscreen](https://www.anchorterminal.com/compare/agent37-vs-offscreen.md)\n- [Amazon Bedrock AgentCore Code Interpreter vs Offscreen](https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-offscreen.md)\n- [Amazon Bedrock AgentCore Code Interpreter vs Runloop Devboxes](https://www.anchorterminal.com/compare/agentcore-code-interpreter-vs-runloop.md)\n- [Blaxel Sandboxes vs Offscreen](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-offscreen.md)\n- [Blaxel Sandboxes vs Runloop Devboxes](https://www.anchorterminal.com/compare/blaxel-sandboxes-vs-runloop.md)\n- [Cloudflare Sandbox SDK vs Offscreen](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-offscreen.md)\n- [Cloudflare Sandbox SDK vs Runloop Devboxes](https://www.anchorterminal.com/compare/cloudflare-sandbox-sdk-vs-runloop.md)\n- [Daytona vs Offscreen](https://www.anchorterminal.com/compare/daytona-vs-offscreen.md)\n- [Daytona vs Runloop Devboxes](https://www.anchorterminal.com/compare/daytona-vs-runloop.md)\n- [Deno Sandbox vs Offscreen](https://www.anchorterminal.com/compare/deno-sandbox-vs-offscreen.md)\n- [Deno Sandbox vs Runloop Devboxes](https://www.anchorterminal.com/compare/deno-sandbox-vs-runloop.md)\n- [E2B vs Offscreen](https://www.anchorterminal.com/compare/e2b-vs-offscreen.md)\n- [E2B vs Runloop Devboxes](https://www.anchorterminal.com/compare/e2b-vs-runloop.md)\n- [Freestyle vs Offscreen](https://www.anchorterminal.com/compare/freestyle-vs-offscreen.md)\n- [Freestyle vs Runloop Devboxes](https://www.anchorterminal.com/compare/freestyle-vs-runloop.md)\n- [Microsoft Execution Containers vs Offscreen](https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-offscreen.md)\n- [Microsoft Execution Containers vs Runloop Devboxes](https://www.anchorterminal.com/compare/microsoft-execution-containers-vs-runloop.md)\n- [Modal Sandboxes vs Offscreen](https://www.anchorterminal.com/compare/modal-sandboxes-vs-offscreen.md)\n- [Modal Sandboxes vs Runloop Devboxes](https://www.anchorterminal.com/compare/modal-sandboxes-vs-runloop.md)\n- [Morph Cloud vs Offscreen](https://www.anchorterminal.com/compare/morph-cloud-vs-offscreen.md)\n- [Morph Cloud vs Runloop Devboxes](https://www.anchorterminal.com/compare/morph-cloud-vs-runloop.md)\n- [Offscreen vs SPACE](https://www.anchorterminal.com/compare/offscreen-vs-perplexity-space.md)\n- [Offscreen vs Sprites](https://www.anchorterminal.com/compare/offscreen-vs-sprites.md)\n- [Offscreen vs Together Code Sandbox](https://www.anchorterminal.com/compare/offscreen-vs-together-code-sandbox.md)\n- [Offscreen vs Vercel Sandbox](https://www.anchorterminal.com/compare/offscreen-vs-vercel-sandbox.md)\n- [SPACE vs Runloop Devboxes](https://www.anchorterminal.com/compare/perplexity-space-vs-runloop.md)\n- [Runloop Devboxes vs Sprites](https://www.anchorterminal.com/compare/runloop-vs-sprites.md)\n- [Runloop Devboxes vs Together Code Sandbox](https://www.anchorterminal.com/compare/runloop-vs-together-code-sandbox.md)\n- [Runloop Devboxes vs Vercel Sandbox](https://www.anchorterminal.com/compare/runloop-vs-vercel-sandbox.md)\n- [Agent 37 Cloud vs Runloop Devboxes](https://www.anchorterminal.com/compare/agent37-vs-runloop.md)\n- [DeltaBox Lite vs Offscreen](https://www.anchorterminal.com/compare/deltabox-lite-vs-offscreen.md)\n- [DeltaBox Lite vs Runloop Devboxes](https://www.anchorterminal.com/compare/deltabox-lite-vs-runloop.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-18",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "Offscreen vs Runloop Devboxes",
        "url": ""
      }
    ],
    "description": "Runloop Devboxes scores 64.8 (B) to Offscreen's 62.9 (B) for code sandboxes. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Offscreen B 62.9",
      "Runloop Devboxes B 64.8",
      "scores"
    ],
    "h1": "Offscreen vs Runloop Devboxes",
    "image": "https://www.anchorterminal.com/assets/og/compare-offscreen-vs-runloop.png",
    "path": "/compare/offscreen-vs-runloop",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Offscreen vs Runloop Devboxes for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-17",
    "url": "https://www.anchorterminal.com/compare/offscreen-vs-runloop"
  },
  "tokens": {
    "markdown": 2650,
    "slim": 680
  },
  "version": 1
}
