{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": false,
  "fork": true,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": true,
  "persist_scope": null,
  "volumes": true,
  "auto_stop_idle": false,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": true,
  "vm_isolation": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": false,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "open_internet": true,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "gpu": false,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": true,
  "wake_on_request": false,
  "live_resize": true,
  "fork_running": true,
  "memory_snapshot_fork": false,
  "webhooks": null,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "usage_api": false,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "own_agent_api": false,
  "fast_boot": true,
  "strong_isolation": true,
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": true,
  "secret_proxy_any": true,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "vercel-sandbox",
  "checked": "2026-09-30",
  "company": "Vercel Inc.",
  "ownership": {
   "value": "independent",
   "parent": null,
   "source": "https://en.wikipedia.org/wiki/Vercel",
   "quote": "Founded 2015 ; 11 years ago (2015) Founder Guillermo Rauch Headquarters San Francisco, California, U.S. ... Key people Guillermo Rauch (CEO)"
  },
  "stage": {
   "value": "series-d+",
   "source": "https://en.wikipedia.org/wiki/Vercel",
   "quote": "In September 2025, Vercel raised $300 million in a Series F funding round co-led by Accel and GIC, valuing the company at $9.3 billion.",
   "confidence": "high",
   "note": "Last priced round is a Series F (name implies prior D/E rounds occurred, e.g. the May 2024 round is cited as 'Series E' by Reuters); mapped to series-d+ per the fixed stage vocabulary which tops out there."
  },
  "accelerators": [],
  "total_funding_usd": {
   "value": null,
   "status": "unknown"
  },
  "last_round": {
   "type": "series-f",
   "amount_usd": 300000000,
   "date": "2025-09",
   "leads": [
    "Accel",
    "GIC"
   ],
   "status": "confirmed",
   "source": "https://en.wikipedia.org/wiki/Vercel",
   "quote": "In September 2025, Vercel raised $300 million in a Series F funding round co-led by Accel and GIC, valuing the company at $9.3 billion."
  },
  "investors": [
   "Accel",
   "GIC",
   "8VC",
   "IVP (Institutional Venture Partners)",
   "Operator Collective",
   "Salesforce Ventures",
   "SV Angel"
  ],
  "portfolio_listings": [
   {
    "source": "8VC",
    "company": "Vercel",
    "batch": "Series C+",
    "how": "domain"
   },
   {
    "source": "IVP (Institutional Venture Partners)",
    "company": "Vercel",
    "batch": null,
    "how": "domain"
   },
   {
    "source": "Operator Collective",
    "company": "Vercel",
    "batch": null,
    "how": "domain"
   },
   {
    "source": "Salesforce Ventures",
    "company": "Vercel",
    "batch": null,
    "how": "domain"
   },
   {
    "source": "SV Angel",
    "company": "Vercel",
    "batch": null,
    "how": "domain"
   }
  ],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": 550,
   "source": "https://en.wikipedia.org/wiki/Vercel"
  },
  "note": "Not a Y Combinator company: https://www.ycombinator.com/companies/vercel returns 404, so no accelerator listed. Vercel (founded 2015 as ZEIT by Guillermo Rauch, still CEO) is an independent, VC-backed private company; prior rounds include a Series C ($102M, 2021) and a Series E ($250M, May 2024, $3.25B valuation) before the Series F ($300M, Sept 2025, $9.3B valuation) co-led by Accel and GIC. Sandbox is one product within the broader Vercel platform (Next.js hosting, v0, AI SDK), so any company-wide revenue figure (if found) would not isolate Sandbox's own revenue."
 },
 "id": "vercel-sandbox",
 "name": "Vercel Sandbox",
 "url": "https://vercel.com/docs/sandbox/pricing",
 "category": "agent-sandbox",
 "isolation": "firecracker",
 "modes": [
  {
   "key": "on-demand",
   "label": "On-demand, iad1 / cle1 / pdx1 (base rate)",
   "pricing": "resource",
   "vcpu_h": 0.128,
   "ram_gib_h": 0.0212,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Active CPU $0.128/vCPU-h (I/O and LLM wait not billed) + provisioned memory $0.0212/GB-h for full session wall-clock incl. idle. Memory fixed 2 GB/vCPU. 1-minute minimum applies to memory per session; Active CPU metering granularity unpublished. Creation fee $0.60/1M Sandbox.create() calls (resume is not a creation). Same unit rates Pro and Enterprise. Basis check 2026-09-28: Active CPU = 'The amount of time your code actively uses the CPU' (I/O wait excluded); memory = 'The memory allocated to your sandbox (in GB) multiplied by the time it runs' (https://vercel.com/docs/sandbox/pricing). No idle auto-stop: 'when a session times out, Vercel stops it', but the timeout is wall-clock (default 5 min) and 'A session is billed for the full time it runs, even while idle' (https://vercel.com/kb/guide/vercel-sandbox-duration-and-persistence), so auto_stop_idle stays false. Same basis for all region modes.",
   "regions": [
    "us"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-bom1",
   "label": "Region pinned: bom1 (Mumbai)",
   "pricing": "resource",
   "vcpu_h": 0.14,
   "ram_gib_h": 0.0232,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.20/GB (on-demand); drives $0.0543/GB-mo.",
   "regions": [
    "asia"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-yul1",
   "label": "Region pinned: yul1 (Montreal)",
   "pricing": "resource",
   "vcpu_h": 0.147,
   "ram_gib_h": 0.0243,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.15/GB.",
   "regions": [
    "other"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-sin1-arn1",
   "label": "Region pinned: sin1 (Singapore) / arn1 (Stockholm)",
   "pricing": "resource",
   "vcpu_h": 0.16,
   "ram_gib_h": 0.0266,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer sin1 $0.16/GB, arn1 $0.15/GB.",
   "regions": [
    "asia",
    "eu"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-dub1",
   "label": "Region pinned: dub1 (Dublin)",
   "pricing": "resource",
   "vcpu_h": 0.168,
   "ram_gib_h": 0.0278,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.15/GB.",
   "regions": [
    "eu"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-icn1",
   "label": "Region pinned: icn1 (Seoul)",
   "pricing": "resource",
   "vcpu_h": 0.169,
   "ram_gib_h": 0.028,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.35/GB (highest of all regions; card network block uses iad1 $0.15).",
   "regions": [
    "asia"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-hkg1",
   "label": "Region pinned: hkg1 (Hong Kong)",
   "pricing": "resource",
   "vcpu_h": 0.176,
   "ram_gib_h": 0.0292,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.16/GB.",
   "regions": [
    "asia"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-lhr1-cdg1",
   "label": "Region pinned: lhr1 (London) / cdg1 (Paris)",
   "pricing": "resource",
   "vcpu_h": 0.177,
   "ram_gib_h": 0.0292,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.15/GB.",
   "regions": [
    "eu"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-sfo1",
   "label": "Region pinned: sfo1 (San Francisco)",
   "pricing": "resource",
   "vcpu_h": 0.177,
   "ram_gib_h": 0.0294,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.15/GB.",
   "regions": [
    "us"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-syd1",
   "label": "Region pinned: syd1 (Sydney)",
   "pricing": "resource",
   "vcpu_h": 0.18,
   "ram_gib_h": 0.0298,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.16/GB.",
   "regions": [
    "other"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-fra1",
   "label": "Region pinned: fra1 (Frankfurt)",
   "pricing": "resource",
   "vcpu_h": 0.184,
   "ram_gib_h": 0.0304,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.15/GB.",
   "regions": [
    "eu"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-cpt1",
   "label": "Region pinned: cpt1 (Cape Town)",
   "pricing": "resource",
   "vcpu_h": 0.2,
   "ram_gib_h": 0.0332,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.28/GB.",
   "regions": [
    "other"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-kix1-hnd1",
   "label": "Region pinned: kix1 (Osaka) / hnd1 (Tokyo)",
   "pricing": "resource",
   "vcpu_h": 0.202,
   "ram_gib_h": 0.0334,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.16/GB.",
   "regions": [
    "asia"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  },
  {
   "key": "region-gru1",
   "label": "Region pinned: gru1 (Sao Paulo), most expensive",
   "pricing": "resource",
   "vcpu_h": 0.221,
   "ram_gib_h": 0.0366,
   "cpu_basis": "active",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    2,
    2
   ],
   "ram_fixed_per_vcpu": 2,
   "vcpu_options": [
    1,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    30,
    32
   ],
   "min_vcpu": 1,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 60,
   "granularity_s": null,
   "start_fee": 6e-7,
   "boot_overhead_s": 0,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Data transfer $0.22/GB; drives $0.0891/GB-mo. 1.73x iad1 on CPU and memory.",
   "regions": [
    "other"
   ],
   "features": {
    "isolation": "firecracker"
   },
   "flags": []
  }
 ],
 "storage": {
  "included_disk_gib": 64,
  "disk_gib_month": null,
  "disk_billed_when_stopped": false,
  "snapshot_gib_month": 0.08,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": 1000,
  "egress_gib": 0.15,
  "ipv4_month": null,
  "ipv4_available": false,
  "internet": {
   "default": "configurable",
   "evidence": [
    {
     "quote": "allow-all ... Default policy. This gives the sandbox unrestricted access to the public Internet.",
     "url": "https://vercel.com/docs/sandbox/concepts/firewall"
    },
    {
     "quote": "Sandbox Data Transfer | 20 GB/month ... Once you exceed your included limit on Hobby, sandbox creation is paused until the next billing cycle.",
     "url": "https://vercel.com/docs/sandbox/pricing"
    },
    {
     "quote": "Data your sandbox downloads from the internet, such as packages, Git repositories, artifacts, and datasets, is free.",
     "url": "https://vercel.com/docs/sandbox/pricing"
    }
   ]
  }
 },
 "plans": [
  {
   "name": "Hobby",
   "fee": 0,
   "fee_is_credit": false,
   "included_usd": 12.55,
   "per_seat": 0,
   "concurrency": 10,
   "max_session_h": 0.75,
   "max_vcpu": 4,
   "max_ram_gib": 8,
   "sizes_allowed": null,
   "note": "Allotment is in units, not dollars: 5 Active-CPU h + 420 GB-h memory + 5,000 creations + 20 GB transfer per month (= ~$12.55 at iad1 rates: 0.64 + 8.904 + 0.003 + 3.00); 15 GB snapshot + 15 GB drive storage lifetime. HARD STOP: no overage; creation paused until 30 days after first use once any quota is exceeded. vCPU allocation 20-40/min. One Hobby team per account; non-commercial. Verifier 2026-09-28: marked trial_only because the engine would bill usage above included_usd as overage, which Hobby cannot incur ('You will not be charged for any additional usage. Once you exceed the quotas, sandbox creation is paused', https://vercel.com/docs/sandbox/pricing), and Hobby is non-commercial.",
   "flags": [],
   "trial_only": true,
   "egress_cap_gib": 20
  },
  {
   "name": "Pro",
   "fee": 20,
   "fee_is_credit": true,
   "included_usd": 0,
   "per_seat": 20,
   "concurrency": 10000,
   "max_session_h": 24,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "note": "$20 platform fee = $20 monthly usage credit shared across ALL Vercel products (expires monthly), 1 deploying seat included, extra deploying seats $20/mo, viewers free. Sandbox data transfer covered by Flat Rate CDN included tier (1 TB + 1M CDN requests, shared with site CDN traffic); exceeding moves to $20/$100/$300 tiers next cycle. vCPU allocation 150 -> 5,000/min. Spend management soft (alerts; optional pause of production deployments).",
   "flags": []
  },
  {
   "name": "Enterprise",
   "fee": null,
   "fee_is_credit": null,
   "included_usd": null,
   "per_seat": null,
   "concurrency": 10000,
   "max_session_h": 24,
   "max_vcpu": 32,
   "max_ram_gib": 64,
   "sizes_allowed": null,
   "note": "Custom contract / Flexible Commitment prepaid balance. Same published unit rates as Pro but NO Flat Rate CDN bundle for sandbox transfer: $0.15/GB iad1 (up to $0.35/GB icn1). Secure Compute (static egress IPs, VPC peering) Enterprise-only, network fee unpublished, Private Data Transfer $0.15/GB. Higher concurrency via sales; control plane 100k req/min.",
   "flags": [
    "sales"
   ]
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 0
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": false,
  "gpu_types": [],
  "snapshot": "fs",
  "pause_resume": true,
  "fork": true,
  "persistent_disk": true,
  "volumes": true,
  "auto_stop_idle": false,
  "max_session_h": 24,
  "custom_image": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "regions": [
   "us",
   "asia",
   "other",
   "eu"
  ],
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": true,
  "wake_on_request": false,
  "live_resize": true,
  "fork_running": true,
  "memory_snapshot_fork": false,
  "webhooks": null,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "isolation": "firecracker",
  "image_oci": true,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "egress_allowlist_level": "both",
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": "any-http",
  "volume_attach": true,
  "volume_shared": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "static-datacenter",
  "own_agent_api": false,
  "fast_boot": true,
  "open_internet": true,
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": 12.96,
  "cold_start_ms": 420.54,
  "burst_tti_ms": 452.89,
  "dax_s": 75.41
 },
 "perf_source": "StarSling hpc-sandbox-benchmarks, run 36498291449 (2026-09-29), Node.js V8 Web Tooling p50 at a 4 vCPU / 8 GB target",
 "knobs": [
  {
   "id": "timeout_tail",
   "label": "Billed time vs. work time (Vercel doesn't stop idle sandboxes: 1× = you stop each one when its work ends)",
   "kind": "slider",
   "min": 1,
   "max": 2,
   "step": 0.05,
   "default": 1,
   "unit": "×",
   "options": null,
   "effect": "hours_factor",
   "modes": null,
   "why": "Vercel has no idle auto-stop: provisioned memory bills for the full session wall-clock (idle included) until stop() or the timeout (default 5 min, extendable to the plan max of 24 h Pro/Ent). Active CPU is not billed while idle, so the factor slightly overstates CPU. Default 1 = stop() when work ends; 2x ceiling is a judgment call. Regions are already separate modes, so no region knob.",
   "source": "https://vercel.com/docs/sandbox/pricing"
  }
 ],
 "caveats": [
  "Memory is billed on provisioned size for the whole session wall-clock (idle included); only CPU is active-billed. There is no idle auto-stop: sessions run until the timeout (default 5 min, extendable to plan max) or stop().",
  "Regional rates taken from the regionalPricing data embedded in the pricing page (fetched 2026-09-28); per-region data-transfer and drive rates also differ, but the card network block uses iad1 ($0.15/GB).",
  "Hobby included_usd (12.55) is a dollar-equivalent of unit quotas at iad1 rates; Hobby cannot incur overage (hard stop), and the 15 GB snapshot quota is lifetime, not monthly.",
  "Pro egress: free 1,000 GiB is the Flat Rate CDN included tier, shared with the team's CDN/Fast Data/Blob transfer; beyond it Vercel moves you to a higher tier ($20/mo for 50 TB) the next cycle rather than per-GB. egress_gib 0.15 is the on-demand/Enterprise iad1 rate. Enterprise has no free bundle.",
  "Exposed-port traffic is billable in both directions; downloads from the internet are free since 2026-07-17.",
  "Persistence is on by default: every stop creates a new filesystem snapshot ($0.08/GB-month, daily-average metering since 2026-08-31) that expires 30 days after last use by default and survives sandbox deletion. Without keepLastSnapshots {count:1} retained GiB can be many times the live filesystem size. Whether snapshot size is full, incremental or compressed is undocumented.",
  "Active CPU metering granularity is unpublished (granularity_s null). min_billed_seconds 60 applies to provisioned memory only (1-minute minimum increments per session).",
  "Max session 24 h (Pro/Ent; 5 h before 2026-06-16), 45 min Hobby; sessions resume automatically from snapshot, but processes/memory are lost on every restart.",
  "Pro $20 credit is shared with other Vercel usage (Functions, CDN, etc.), so it may not be available to Sandbox.",
  "Spend management is soft; its only automatic action pauses production deployments, and docs do not state that it stops running sandboxes. Checks run every few minutes.",
  "Enterprise platform fee, discounts and commitment minimums are unpublished.",
  "Drives (beta): $0.05/GB-month logical used size + $0.0015/GB reads + $0.004/GB writes in iad1 (regional); not modelled in the card.",
  "No dedicated public IPv4; static egress IPs only via Enterprise Secure Compute. ssh=false: the only shell is the CLI 'sandbox connect' (aliases ssh, shell), authenticated with a Vercel token, not a real sshd; no raw TCP inbound to run one yourself.",
  "open_source=false refers to the platform; the SDK, CLI and managed image Dockerfiles are open source.",
  "computesdk dax env reported 8 logical CPUs / 16.25 GiB.",
  "Verifier 2026-09-28: Hobby plan set trial_only (engine skips it): it is a hard-capped, non-commercial free allotment with no pay-as-you-go overage, so it cannot be the cheapest 'plan' for a paid workload. Small workloads that fit entirely inside the Hobby quotas would cost $0 there.",
  "vCPU allocation-rate quotas (Hobby 20-40 vCPU/min; Pro/Enterprise 150 vCPU/min ramping +500/min to 5,000/min) and the 20/s deletion quota are not modelled (https://vercel.com/docs/sandbox/pricing).",
  "Engine applies min_billed_seconds=60 to CPU as well as memory; Vercel documents the 1-minute minimum for provisioned memory only, so very short sessions are slightly overestimated.",
  "Per-region data transfer and drive charges differ even where CPU/RAM are equal (e.g. transfer cpt1 $0.28, icn1 $0.35, gru1 $0.22, bom1 $0.20, hkg1/kix1/hnd1/sin1/syd1 $0.16 vs $0.15/GB elsewhere; drive $0.05-$0.0891/GB-month; reads $0.0015-0.0021/GB, writes $0.004-0.0056/GB). The card applies the $0.15/GB base rate to every region mode; drive storage/IO is not modelled and is separate from snapshot $0.08/GB-month. Calculator check of all 19 regions matched the docs table (patch v5-calculators, 2026-09-28).",
  "Retained state: the 2026-03-26 persistent-sandboxes beta post says automatically persisted state on stop \"is not charged\"; the current pricing page bills Snapshot Storage at $0.08/GB-month for snapshots (explicit snapshots page) and does not say whether automatic persistence is billed. The card applies $0.08 to all retained state (conservative); automatic persistence may be free. Network: downloads from the internet are free, but outbound data AND all traffic to/from exposed ports (requests and responses) are billable. Memory rate history: $0.0106/GB-h on 2026-01-20, $0.0212 by 2026-02-12 (exact day unknown). (patch v8-history, re-checked vercel.com/docs/sandbox/pricing and the changelog 2026-09-28)",
  "Re-verified 2026-09-28 (https://vercel.com/docs/sandbox/pricing, last_updated 2026-09-10): max session duration Hobby 45 min, Pro 24 h, Enterprise 24 h (changelog \"Vercel Sandbox can now run for up to 24 hours\" replaced the old 5 h cap); the limit is per session and resets on stop/resume. Pro max_session_h 24 is correct.",
  "Features check 2026-09-28: nested_virt null -> false. Docs: \"Each sandbox runs in its own Firecracker microVM with a dedicated kernel\" (vercel.com/docs/sandbox/concepts); Firecracker test_nv.py asserts guests have no nested virtualization (/dev/kvm absent).",
  "Resolved 2026-09-29: automatic persistence snapshots ARE billed as Snapshot Storage ($0.08/GB-month); the earlier 'automatic persistence may be free' uncertainty (2026-03-26 beta post) is superseded by the current persistent-sandboxes doc. snapshot_gib_month 0.08 applies to all retained state.",
  "Fork semantics: Sandbox.fork() of a running source forks its latest saved snapshot, not live memory (memory_snapshot_fork false confirmed; fork_running stays null because the live state is not carried)."
 ],
 "sources": [
  "https://vercel.com/docs/sandbox/pricing",
  "https://vercel.com/docs/sandbox/concepts",
  "https://vercel.com/docs/sandbox/concepts/persistent-sandboxes",
  "https://vercel.com/docs/sandbox/concepts/snapshots",
  "https://vercel.com/docs/sandbox/concepts/secure-compute",
  "https://vercel.com/docs/plans/pro-plan",
  "https://vercel.com/docs/pricing/flat-rate-cdn",
  "https://vercel.com/docs/pricing/regional-pricing",
  "https://vercel.com/docs/pricing/flex-commit",
  "https://vercel.com/docs/spend-management",
  "https://vercel.com/docs/networking/secure-compute",
  "https://vercel.com/kb/guide/vercel-sandbox-duration-and-persistence",
  "https://vercel.com/changelog/data-downloaded-by-vercel-sandbox-is-now-free",
  "https://vercel.com/changelog/vercel-sandbox-now-calculates-snapshot-storage-costs-daily",
  "https://vercel.com/changelog/vercel-sandbox-can-now-run-for-up-to-24-hours",
  "https://vercel.com/changelog/vercel-sandbox-is-now-globally-available",
  "https://www.computesdk.com/benchmarks/sandboxes/",
  "https://vercel.com/changelog/vercel-sandbox-persistent-sandboxes-beta",
  "https://github.com/firecracker-microvm/firecracker/blob/main/tests/integration_tests/security/test_nv.py"
 ],
 "fleet": {
  "default_max_instances": 10,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": "self-serve",
  "raise_time_days": null,
  "verification": null,
  "tiers": "Hobby 10; Pro 10,000; Enterprise 10,000 published default/custom contract.",
  "notes": "10 fits Hobby within usage allowances; 50/300/1,000 fit Pro quota without inferred sales gate. Allocation-rate limits 40 vCPU/min Hobby and 5,000/min Pro are not aggregate vCPU quotas. Enterprise higher/custom via sales; no quota approval SLA.",
  "sources": [
   "https://vercel.com/docs/sandbox/pricing"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 2,
  "source": "checked against the provider's live pricing and docs pages"
 },
 "feature_evidence": {
  "ssh": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/cli-reference",
   "quote": "Start an interactive shell in an existing sandbox. [aliases: `ssh`, `shell`]",
   "note": "`sandbox connect` (aliases ssh, shell) is a CLI shell authenticated with a Vercel token (--token), not an sshd you can reach with a standard ssh client; exposed ports are HTTPS-only (raw_tcp_inbound false), so you cannot run your own sshd either. Set false for consistency with other cards that treat CLI-only shells as no SSH (blaxel, azure-container-apps-sandboxes, aws-fargate).",
   "checked": "2026-10-14"
  },
  "snapshot_auto": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/snapshots",
   "quote": "When you call `stop()` or the timeout expires, the session stops. For a [persistent sandbox](/docs/sandbox/concepts/persistent-sandboxes) (the default), Vercel captures its filesystem and creates a snapshot automatically before the sandbox shuts down.",
   "note": "Triggered by stop() or session timeout; default on (persistent:true, SDK v2+), opt out with persistent:false. Filesystem only, no memory/processes: next session boots from the snapshot and an onResume hook is provided 'to restart background services'. Auto-snapshots billed as Snapshot Storage ($0.08/GB-month), expire 30 days after last use by default.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/snapshots",
   "quote": "You can also snapshot a running sandbox at any time by calling `snapshot()`, which captures its current filesystem before stopping the session.",
   "note": "SDK/CLI/REST (POST /v2/sandboxes/sessions/{sessionId}/snapshot). Filesystem only, no memory; snapshot() stops the session. New sandboxes can boot from it ('You can create or fork any number of sandboxes from the same snapshot'); Sandbox.fork() forks from the source's latest snapshot. Region-bound.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "Run untrusted code, test full Linux workflows, and manage files, ports, snapshots, drives, sessions, and network policy from Node.js applications.",
   "note": "The full SDK reference (Sandbox, SandboxUser, Session, FileSystem, Command, NetworkPolicy, Snapshot, Drive classes) has no agent/prompt/conversation API; only runCommand exec + log streaming. Harness integrations are third-party guides (Cursor Cloud Agents, Devin Outposts, Herdr, Hermes, TanStack AI, OpenAI Agents API, Claude Managed Agents self-hosted tools, Harbor). Vercel's own agent framework 'eve' runs the agent loop outside the sandbox (sandbox = tool env), so it is not a harness-inside-sandbox API. Claude Code/Codex/OpenCode are preinstalled in the universal image (agent_harnesses).",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/firewall",
   "quote": "User-defined policies deny traffic by default and let you allow specific destinations. You can define:\n\n- **Allowed domains**: Allow traffic by domain (for example, `api.example.com` or `*.example.com`)",
   "note": "Modes allow-all (default) / deny-all (incl. DNS) / user-defined: domain allowlist with wildcards (SNI-based, plus Postgres STARTTLS), CIDR allow (subnets.allow) and CIDR deny (subnets.deny). Updatable on a running sandbox without restart; enforced by the Vercel firewall outside the microVM; available on Hobby. Caveat documented: SNI-only matching allows domain fronting; allowed CIDRs bypass domain rules.",
   "checked": "2026-09-29",
   "level": "both"
  },
  "egress_http_rules": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/firewall",
   "quote": "Each rule can define [matchers](#matchers) on the path, method, query parameters, and headers. When defined, only matching requests are transformed.",
   "note": "Partial: HTTP matchers (path/method/query/headers; exact/prefix/regex) select which requests get credential injection (transform) or forwarding to your own proxy (forwardURL), and transform can rewrite headers (e.g. pin Host). But 'Matchers never block traffic' - to allow only certain paths you must forward the domain to your own proxy and reject there. No native provider-side HTTP deny rules.",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "`sandbox.domain()` resolves a publicly accessible URL for a port you exposed during creation. It throws if the port is not registered to a route, so include the port in the `ports` array when creating the sandbox",
   "note": "Only control is choosing which ports (up to 15) are exposed, updatable via sandbox.update({ports}). Exposed ports are public and unauthenticated ('Exposed ports are accessible via a public URL, so be mindful of what services you run'); no token/password protection or inbound IP allowlist documented. Private networking to your AWS VPC only via Enterprise Secure Compute.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": true,
   "source": null,
   "quote": null,
   "note": "Each sandbox is a Firecracker microVM 'with a dedicated kernel' and sudo; docs list VPN clients, Docker and FUSE as supported system-privileged workloads, which implies NET_ADMIN in its own kernel. nftables/iptables not explicitly documented.",
   "checked": "2026-09-29",
   "derived": true
  },
  "secret_proxy": {
   "value": "any-http",
   "source": "https://vercel.com/docs/sandbox/concepts/firewall",
   "quote": "Credentials brokering injects credentials into egressing traffic. The secrets never enter the sandbox, so code running inside it cannot exfiltrate them.",
   "note": "Configured per allowed domain via networkPolicy transform (arbitrary headers, any HTTPS host, with path/method/header matchers); firewall terminates TLS for those domains with a per-sandbox CA. HTTP(S) only: 'Credentials brokering and other request transformations are not supported on Postgres connections'; SSH/non-TLS traffic passes through unmodified. forwardURL lets you add your own proxy (with a Vercel OIDC token) for other schemes.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/drives",
   "quote": "Files written to a drive persist after the sandbox stops. Mount the same drive in a later run to pick up where you left off, even when starting from a different sandbox environment. You can mount up to four drives in a sandbox, each at its own path alongside the sandbox's own filesystem.",
   "note": "Drives, public beta since 2026-09-23 (Hobby/Pro/Enterprise): network-backed, default max 1 TiB (1 GiB Hobby), up to 16 TiB, single region, $0.05/GB-month + read/write per-GB. Also user-run FUSE mounts (e.g. Mountpoint for S3).",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/concepts/drives",
   "quote": "Drives are mounted as read-write by default. Only one sandbox at a time can mount a given drive as read-write: use [snapshots](#snapshots) for shared access.",
   "note": "Read-only sharing only: many sandboxes can concurrently mount point-in-time read-only drive snapshots ('Snapshots allow multiple sandboxes to mount the same drive concurrently'), which don't see later writes. Concurrent read-write sharing is not supported (except via user-run FUSE to an external store like S3).",
   "checked": "2026-09-29"
  },
  "anti_bot": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox",
   "quote": "Use the Vercel Sandbox JavaScript SDK to create isolated Linux microVMs on demand. Run untrusted code, test full Linux workflows, and manage files, ports, snapshots, drives, sessions, and network policy from Node.js applications.",
   "note": "not offered: outside the product's scope. Vercel Sandbox is a general-purpose Firecracker microVM code-execution environment (no browser/desktop feature), not a browser-automation/scraping product; no stealth/fingerprinting-evasion feature is documented.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox",
   "quote": "Use the Vercel Sandbox JavaScript SDK to create isolated Linux microVMs on demand. Run untrusted code, test full Linux workflows, and manage files, ports, snapshots, drives, sessions, and network policy from Node.js applications.",
   "note": "not offered: outside the product's scope. Sandbox has no browser/CAPTCHA-solving feature; it is a Linux compute sandbox for running commands/code.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "static-datacenter",
   "source": "https://vercel.com/docs/networking/secure-compute",
   "quote": "When you enable Secure Compute on your project, your deployments and build container get their own dedicated network with static IP addresses in a region you choose. ... Once created, your network includes: A pair of dedicated IP addresses ... AWS account ID ... AWS region ...",
   "note": "Default sandboxes egress from shared Vercel datacenter IPs (dynamic, no dedicated IP: public_ipv4/ipv4_available false). Enterprise-only Secure Compute attaches a sandbox to a dedicated network with static IPs inside an AWS VPC ('You can attach a Vercel Sandbox to a Secure Compute network to send its public-internet traffic through static IPs', https://vercel.com/docs/sandbox/concepts/secure-compute) — still datacenter (AWS), not residential/mobile.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "Sandbox.fork() creates a new sandbox seeded from the current snapshot of an existing one. ... If the source has no current snapshot, the fork falls back to a fresh create with the source's image plus the copied config.",
   "note": "Nothing in the fork() reference requires the source sandbox to be stopped first; fork() reads the source's latest saved filesystem snapshot while the source can keep running. It does not carry live memory/process state (that is memory_snapshot_fork=false) - only the source's continued execution, not memory-fork, is what fork_running captures here.",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": false,
   "source": "https://vercel.com/kb/guide/vercel-sandbox-duration-and-persistence",
   "quote": "when a session times out, Vercel stops it",
   "note": "A stopped/timed-out sandbox does not resume itself when an inbound request arrives at its exposed port; resuming requires an explicit SDK/API/CLI call (e.g. Sandbox.get() followed by a new session, or sandbox.update()/resume) from your own backend. There is no serverless-style auto-wake on incoming HTTP traffic.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": true,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "sandbox.update() updates any mutable parameter on the sandbox. ... resources.vcpus | number | No | New vCPU count (memory auto-scales to 2048 MB per vCPU).",
   "note": "sandbox.update({resources:{vcpus}}) changes vCPU (and auto-scaled memory) on an existing sandbox object. The doc explicitly calls out other fields (networkId, mounts, failoverRegions) as applying only to the sandbox's next session, but gives no such caveat for resources.vcpus, implying it takes effect on the current running session without recreating the sandbox; this isn't stated in so many words, hence medium confidence.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox",
   "quote": "Use the Vercel Sandbox JavaScript SDK to create isolated Linux microVMs on demand. Run untrusted code, test full Linux workflows, and manage files, ports, snapshots, drives, sessions, and network policy from Node.js applications.",
   "note": "not offered: outside the product's scope. Sandbox's own SDK/API (Sandbox, Session, Command, FileSystem, etc.) only exposes command execution/file/network management, not a prompt/agent-loop API for a Vercel-run task agent. Vercel's separate 'Vercel Agent' product (code review/observability) and 'eve' framework are not APIs to drive an agent running inside a Sandbox instance.",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": true,
   "source": "https://vercel.com/docs/agent-resources/vercel-mcp/tools/sandboxes",
   "quote": "Vercel MCP server ... Sandboxes: create_sandboxes_v2, create_sandboxes_v3, create_sandboxes_v4, list_sandboxes, get_named_sandbox, run_session_command, get_session_command_logs, kill_session_command, stop_session, list_sessions, get_session, create_sandboxes_sessions_by_session_id_snapshot_v3, list_session_snapshots, update_session_network_policy, read_session_file, write_session_files, extend_session_timeout ...",
   "note": "Vercel ships a first-party MCP server ('Vercel MCP', beta) whose tool catalog includes a dedicated 'Sandboxes' tool group covering create/list/run-command/snapshot/stop for Vercel Sandbox, alongside tools for the rest of the Vercel platform (deployments, domains, etc.).",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "`Sandbox.fork()` creates a new sandbox seeded from the current snapshot of an existing one. ... If the source has no current snapshot, the fork falls back to a fresh create with the source's `image` plus the copied config.",
   "note": "Fork clones the source's latest filesystem snapshot, not live memory/process state; there is no in-memory/live fork. Confirms memory_snapshot_fork=false.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/concepts",
   "quote": "Each sandbox runs in its own Firecracker microVM with a dedicated kernel, so you can run processes that require system-level privileges without affecting other sandboxes or the host.",
   "note": "Firecracker microVMs do not expose /dev/kvm or nested-virtualization support to guests (confirmed by Firecracker's own test_nv.py, which asserts nested virt is absent). No Vercel doc offers KVM-in-sandbox.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox",
   "quote": "Run untrusted or agent-generated code in isolated Linux microVMs. Use Vercel Sandbox for agent workflows, debugging, and one-off commands.",
   "note": "Vercel Sandbox is a headless Linux microVM code-execution product (CLI/SDK exec + filesystem + ports); the Features list on the docs/pricing pages has no VNC/RDP/streamed-desktop capability of any kind.",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox",
   "quote": "Run untrusted or agent-generated code in isolated Linux microVMs. Use Vercel Sandbox for agent workflows, debugging, and one-off commands.",
   "note": "No first-party managed/pre-installed browser is documented as a sandbox feature; the product surface (Features list, SDK reference) covers exec/files/ports/snapshots/drives/network policy only, not a browser.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "Run untrusted code, test full Linux workflows, and manage files, ports, snapshots, drives, sessions, and network policy from Node.js applications.",
   "note": "The full SDK reference exposes command exec, filesystem, ports, snapshots, drives, sessions and network policy only — no screenshot/click computer-use API, consistent with a headless code-execution product.",
   "checked": "2026-09-30"
  },
  "auto_stop_idle": {
   "value": false,
   "source": "https://vercel.com/kb/guide/vercel-sandbox-duration-and-persistence",
   "quote": "The `timeout` option on `Sandbox.create()` sets the duration of a session, defaulting to 5 minutes. You set the value in milliseconds, and when a session times out, Vercel stops it.",
   "note": "Stopping is driven only by the fixed wall-clock `timeout` (or an explicit `stop()`), not by idle-usage detection; the same page confirms 'A session is billed for the full time it runs, even while idle', so there is no idle-triggered auto-stop.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/concepts/secure-compute",
   "quote": "Attaching a Vercel Sandbox to a Secure Compute network allows you to route its traffic through your team's dedicated network. Its public-internet traffic then exits through the network's static IPs...",
   "note": "Static IPs are shared, outbound-only egress IPs for a Secure Compute network (Enterprise), not a dedicated public IPv4 assigned to each sandbox; inbound access is only via sandbox.domain() HTTPS URLs, not an IP.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/pricing",
   "quote": "Sandboxes run Linux images, with Ubuntu, Arch Linux, or any other Linux distribution you need.",
   "note": "System specifications and every pricing tier list only vCPU and memory sizing (max 32 vCPU / 64 GiB); no GPU option, GPU pricing row, or GPU type is documented anywhere in the Sandbox docs.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/pricing",
   "quote": "Sandboxes run Linux images, with Ubuntu, Arch Linux, or any other Linux distribution you need.",
   "note": "Vercel Sandbox is Linux-only (Firecracker microVMs); no Windows image or OS option is offered.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/pricing",
   "quote": "Sandboxes run Linux images, with Ubuntu, Arch Linux, or any other Linux distribution you need.",
   "note": "Vercel Sandbox is Linux-only (Firecracker microVMs); no macOS image or OS option is offered.",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/concepts/images",
   "quote": "VCR only serves an image to Sandbox once it has prepared an optimized `linux/amd64` build. ... `Unoptimized`: The image is pullable from VCR, but it is not `linux/amd64` and cannot be used in Sandbox.",
   "note": "Custom images must be linux/amd64; non-amd64 (including arm64) images are explicitly rejected ('cannot be used in Sandbox'), confirming no ARM64 sandbox architecture is offered.",
   "checked": "2026-09-30"
  },
  "self_host": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/concepts/regions",
   "quote": "Sandboxes run in a region that you choose when you create them.",
   "note": "Vercel Sandbox only runs in Vercel's own published list of regions on Vercel's infrastructure; there is no documented option to deploy or run the sandbox runtime on customer-owned/self-managed infrastructure.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/concepts/secure-compute",
   "quote": "Attaching a Vercel Sandbox to a Secure Compute network allows you to route its traffic through your team's dedicated network. Its public-internet traffic then exits through the network's static IPs, which allows it to reach private resources in your own VPC over VPC peering.",
   "note": "Secure Compute only lets a Vercel-hosted sandbox reach into your VPC via peering (outbound); it does not deploy the sandbox execution service itself into the customer's own cloud account. No BYOC deployment model is documented.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://github.com/vercel/sandbox",
   "quote": "Vercel Sandbox is an ephemeral compute primitive designed to safely run untrusted or user-generated code.",
   "note": "The vercel/sandbox GitHub repo (Apache-2.0) contains only the client SDK/CLI; the underlying Firecracker orchestration/execution platform that actually runs sandboxes is Vercel's proprietary hosted service and is not published as open source.",
   "checked": "2026-09-30"
  },
  "fast_boot": {
   "value": true,
   "source": "https://www.computesdk.com/benchmarks",
   "quote": "burst of 100: p95 569 ms, 100% started",
   "note": "ComputeSDK sandbox benchmark 2026-09-25",
   "checked": "2026-09-25"
  },
  "usage_api": {
   "value": false,
   "source": "https://vercel.com/docs/sandbox/sdk-reference",
   "quote": "The full SDK reference (Sandbox, SandboxUser, Session, FileSystem, Command, NetworkPolicy, Snapshot, Drive classes) has no agent/prompt/conversation API; only runCommand exec + log streaming. Sandbox's own SDK/API (Sandbox, Session, Command, FileSystem, etc.) only exposes command execution/file/netw",
   "note": "granularity: account-only; cost: no; Vercel Sandbox SDK and REST API provide session management tools (list_sessions, get_session, run_session_command, etc.) through the SDK/MCP server, but these do not expose billable usage metrics (CPU-seconds, GB-seconds, or cost) per sandbox or session. Pricing is calculated internally based on active CPU time and provisioned memory, but usage is only visible through the Vercel billing dashboard or monthly invoices, not via a programmatic API.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [
  {
   "country": "US",
   "state": "VA",
   "city": "Ashburn",
   "provider_region": "iad1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "OH",
   "city": "Cleveland",
   "provider_region": "cle1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "OR",
   "city": "Portland",
   "provider_region": "pdx1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "CA",
   "city": "San Francisco",
   "provider_region": "sfo1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "IN",
   "state": null,
   "city": "Mumbai",
   "provider_region": "bom1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "CA",
   "state": "QC",
   "city": "Montreal",
   "provider_region": "yul1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "SG",
   "state": null,
   "city": "Singapore",
   "provider_region": "sin1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "SE",
   "state": null,
   "city": "Stockholm",
   "provider_region": "arn1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "IE",
   "state": null,
   "city": "Dublin",
   "provider_region": "dub1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "KR",
   "state": null,
   "city": "Seoul",
   "provider_region": "icn1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "HK",
   "state": null,
   "city": "Hong Kong",
   "provider_region": "hkg1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "GB",
   "state": null,
   "city": "London",
   "provider_region": "lhr1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "FR",
   "state": null,
   "city": "Paris",
   "provider_region": "cdg1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "AU",
   "state": null,
   "city": "Sydney",
   "provider_region": "syd1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "DE",
   "state": null,
   "city": "Frankfurt",
   "provider_region": "fra1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "ZA",
   "state": null,
   "city": "Cape Town",
   "provider_region": "cpt1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "JP",
   "state": null,
   "city": "Osaka",
   "provider_region": "kix1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "JP",
   "state": null,
   "city": "Tokyo",
   "provider_region": "hnd1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "BR",
   "state": null,
   "city": "São Paulo",
   "provider_region": "gru1",
   "self_serve": true,
   "choosable": true
  }
 ],
 "locations_source": "https://vercel.com/docs/sandbox/pricing",
 "locations_quote": "Region pinned: iad1, cle1, pdx1 (US on-demand base rate); bom1 (Mumbai); yul1 (Montreal); sin1 / arn1; dub1 (Dublin); icn1 (Seoul); hkg1 (Hong Kong); lhr1 / cdg1; sfo1 (San Francisco); syd1 (Sydney); fra1 (Frankfurt); cpt1 (Cape Town); kix1 / hnd1 (Osaka / Tokyo); gru1 (São Paulo) — all offered at r",
 "locations_checked": "2026-09-30"
}