{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": false,
  "fork": false,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": false,
  "persist_scope": true,
  "volumes": true,
  "auto_stop_idle": true,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": false,
  "image_oci": false,
  "vm_isolation": true,
  "docker_inside": true,
  "nested_virt": true,
  "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": false,
  "ssh": true,
  "public_ipv4": true,
  "inbound_https": false,
  "custom_domain": false,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "open_internet": null,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "soc2": false,
  "hipaa": false,
  "sso": false,
  "gpu": true,
  "arm64": true,
  "windows": true,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "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": null,
  "mcp_server": false,
  "usage_api": false,
  "snapshot_auto": true,
  "snapshot_on_demand": false,
  "harness_api": false,
  "own_agent_api": false,
  "fast_boot": null,
  "strong_isolation": true,
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "runs-on",
  "checked": "2026-09-30",
  "company": "RunsOn (built by Cyril Rohr)",
  "ownership": {
   "value": "bootstrapped",
   "parent": null,
   "source": "https://runs-on.com/about/",
   "quote": "100% bootstrapped & self-funded — no VC, just paying customers."
  },
  "stage": {
   "value": "bootstrapped",
   "source": "https://runs-on.com/about/",
   "quote": "100% bootstrapped & self-funded — no VC, just paying customers.",
   "confidence": "high",
   "note": "Solo-founder product (Cyril Rohr, developer previously behind Packager.io and PullPreview.com); explicitly states no VC funding, run on customer revenue only."
  },
  "accelerators": [],
  "total_funding_usd": {
   "value": 0,
   "status": "confirmed",
   "basis": "Company states explicitly it is 100% bootstrapped & self-funded, no VC",
   "source": "https://runs-on.com/about/",
   "quote": "100% bootstrapped & self-funded — no VC, just paying customers."
  },
  "last_round": {
   "type": null,
   "amount_usd": null,
   "date": null,
   "leads": [],
   "status": "unknown",
   "source": "",
   "quote": ""
  },
  "investors": [],
  "portfolio_listings": [],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": 1,
   "source": "https://runs-on.com/about/ (solo founder Cyril Rohr, 'Made by Cyril Rohr'; no other team members mentioned)"
  },
  "note": "RunsOn is a solo-founder, bootstrapped side/main project of Cyril Rohr (France), previously creator of Packager.io (2013) and PullPreview.com (2018). It is explicitly self-funded with no VC investment, monetized via a paid licence tier layered on top of AWS usage (customers pay AWS directly plus a RunsOn fee). Core server/agent code is open-source-adjacent (developed in the open on GitHub) but the full source with Enterprise features requires a commercial tier."
 },
 "id": "runs-on",
 "name": "RunsOn",
 "url": "https://runs-on.com/pricing/",
 "category": "paas",
 "isolation": "vm",
 "modes": [
  {
   "key": "spot-x64",
   "label": "Spot EC2 runner, x64",
   "flags": [
    "spot"
   ],
   "os": [
    "linux"
   ],
   "pricing": "sizes",
   "vcpu_h": null,
   "ram_gib_h": null,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes": [
    {
     "name": "1cpu t8i.medium",
     "vcpu": 1,
     "ram_gib": 4,
     "disk_gib": 30,
     "hour": 0.042,
     "month_cap": null
    },
    {
     "name": "2cpu m8a.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.054,
     "month_cap": null
    },
    {
     "name": "4cpu m8a.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.09,
     "month_cap": null
    },
    {
     "name": "8cpu c8id.2xlarge",
     "vcpu": 8,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.138,
     "month_cap": null
    },
    {
     "name": "16cpu c8id.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.264,
     "month_cap": null
    },
    {
     "name": "32cpu c8id.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 0.486,
     "month_cap": null
    },
    {
     "name": "48cpu c8a.12xlarge",
     "vcpu": 48,
     "ram_gib": 96,
     "disk_gib": 30,
     "hour": 0.714,
     "month_cap": null
    },
    {
     "name": "64cpu c8i-flex.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 0.906,
     "month_cap": null
    },
    {
     "name": "96cpu c8id.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 1.368,
     "month_cap": null
    }
   ],
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "features": {},
   "note": "CI runner. Added 2026-09-28 (missing-providers audit); re-checked 2026-10-14. https://runs-on.com/pricing/ x64 'auto · best price/perf' table, spot $/min: 1cpu t8i.medium $0.0007, 2cpu m8a.large $0.0009, 4cpu m8a.xlarge $0.0015, 8cpu c8id.2xlarge $0.0023, 16cpu c8id.4xlarge $0.0044, 32cpu c8id.8xlarge $0.0081, 48cpu c8a.12xlarge $0.0119, 64cpu c8i-flex.16xlarge $0.0151, 96cpu c8id.24xlarge $0.0228 ('spot prices (7-day average, cheapest zone) · us-east-1 · incl. 30 GB gp3 @ 400 MB/s billed by AWS, to the second'). RAM per EC2 instance type (AWS spec: medium 4 GiB, large 8, xlarge 16; c-family 2 GiB/vCPU). c8id sizes also carry local NVMe (not priced separately). Paid to AWS on your own bill, plus the RunsOn licence (plan). Spot = interruptible; RunsOn can fall back to on-demand.",
   "cpu_class": "dedicated"
  },
  {
   "key": "on-demand-x64",
   "label": "On-demand EC2 runner, x64",
   "flags": [],
   "os": [
    "linux"
   ],
   "pricing": "sizes",
   "vcpu_h": null,
   "ram_gib_h": null,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes": [
    {
     "name": "1cpu t8i.medium",
     "vcpu": 1,
     "ram_gib": 4,
     "disk_gib": 30,
     "hour": 0.066,
     "month_cap": null
    },
    {
     "name": "2cpu m8a.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.138,
     "month_cap": null
    },
    {
     "name": "4cpu m8a.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.264,
     "month_cap": null
    },
    {
     "name": "8cpu c8id.2xlarge",
     "vcpu": 8,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.462,
     "month_cap": null
    },
    {
     "name": "16cpu c8id.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.906,
     "month_cap": null
    },
    {
     "name": "32cpu c8id.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 1.794,
     "month_cap": null
    },
    {
     "name": "48cpu c8a.12xlarge",
     "vcpu": 48,
     "ram_gib": 96,
     "disk_gib": 30,
     "hour": 2.604,
     "month_cap": null
    },
    {
     "name": "64cpu c8i-flex.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 2.868,
     "month_cap": null
    },
    {
     "name": "96cpu c8id.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 5.34,
     "month_cap": null
    }
   ],
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "features": {},
   "note": "CI runner. Added 2026-09-28 (missing-providers audit); re-checked 2026-10-14. https://runs-on.com/pricing/: on-demand toggle = EC2 on-demand/min (page data-ec2-ondemand) + $0.0003/min storage (spot display minus EC2 spot), same 'auto' instance types as spot-x64: 1cpu $0.0011, 2cpu $0.0023, 4cpu $0.0044, 8cpu $0.0077, 16cpu $0.0151, 32cpu $0.0299, 48cpu $0.0434, 64cpu $0.0478, 96cpu $0.089. RunsOn pricing table (us-east-1, incl. 30 GB gp3 @ 400 MB/s, billed by AWS to the second). RAM per EC2 instance type (AWS spec: medium 4 GiB, large 8, xlarge 16; c-family 2 GiB/vCPU). Paid to AWS on your own bill, plus the RunsOn licence (plan).",
   "cpu_class": "dedicated"
  },
  {
   "key": "spot-arm64",
   "label": "Spot EC2 runner, arm64 (Graviton)",
   "flags": [
    "spot"
   ],
   "os": [
    "linux"
   ],
   "pricing": "sizes",
   "vcpu_h": null,
   "ram_gib_h": null,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes": [
    {
     "name": "1cpu m8g.medium",
     "vcpu": 1,
     "ram_gib": 4,
     "disk_gib": 30,
     "hour": 0.036,
     "month_cap": null
    },
    {
     "name": "2cpu m8g.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.054,
     "month_cap": null
    },
    {
     "name": "4cpu m8g.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.096,
     "month_cap": null
    },
    {
     "name": "8cpu c8g.2xlarge",
     "vcpu": 8,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.168,
     "month_cap": null
    },
    {
     "name": "16cpu c8g.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.276,
     "month_cap": null
    },
    {
     "name": "32cpu c8g.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 0.468,
     "month_cap": null
    },
    {
     "name": "48cpu c8g.12xlarge",
     "vcpu": 48,
     "ram_gib": 96,
     "disk_gib": 30,
     "hour": 0.582,
     "month_cap": null
    },
    {
     "name": "64cpu c8g.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 0.726,
     "month_cap": null
    },
    {
     "name": "96cpu c8g.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 0.954,
     "month_cap": null
    }
   ],
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "features": {
    "arm64": true
   },
   "note": "CI runner. Added 2026-09-28 (missing-providers audit); re-checked 2026-10-14. https://runs-on.com/pricing/: arm64 spot $/min (7-day average, cheapest zone): 1cpu $0.0006, 2cpu $0.0009, 4cpu $0.0016, 8cpu $0.0028, 16cpu $0.0046, 32cpu $0.0078, 48cpu $0.0097, 64cpu $0.0121, 96cpu $0.0159. RunsOn pricing table (us-east-1, incl. 30 GB gp3 @ 400 MB/s, billed by AWS to the second). RAM per EC2 instance type (AWS spec: medium 4 GiB, large 8, xlarge 16; c-family 2 GiB/vCPU). Paid to AWS on your own bill, plus the RunsOn licence (plan).",
   "cpu_class": "dedicated"
  },
  {
   "key": "on-demand-arm64",
   "label": "On-demand EC2 runner, arm64 (Graviton)",
   "flags": [],
   "os": [
    "linux"
   ],
   "pricing": "sizes",
   "vcpu_h": null,
   "ram_gib_h": null,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes": [
    {
     "name": "1cpu m8g.medium",
     "vcpu": 1,
     "ram_gib": 4,
     "disk_gib": 30,
     "hour": 0.06,
     "month_cap": null
    },
    {
     "name": "2cpu m8g.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.108,
     "month_cap": null
    },
    {
     "name": "4cpu m8g.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.198,
     "month_cap": null
    },
    {
     "name": "8cpu c8g.2xlarge",
     "vcpu": 8,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.336,
     "month_cap": null
    },
    {
     "name": "16cpu c8g.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.654,
     "month_cap": null
    },
    {
     "name": "32cpu c8g.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 1.296,
     "month_cap": null
    },
    {
     "name": "48cpu c8g.12xlarge",
     "vcpu": 48,
     "ram_gib": 96,
     "disk_gib": 30,
     "hour": 1.932,
     "month_cap": null
    },
    {
     "name": "64cpu c8g.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 2.568,
     "month_cap": null
    },
    {
     "name": "96cpu c8g.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 3.846,
     "month_cap": null
    }
   ],
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "features": {
    "arm64": true
   },
   "note": "CI runner. Added 2026-09-28 (missing-providers audit). https://runs-on.com/pricing/: arm64 on-demand = EC2 on-demand + $0.0003/min storage: 1cpu $0.001, 2cpu $0.0018, 4cpu $0.0033, 8cpu $0.0056, 16cpu $0.0109, 32cpu $0.0216, 48cpu $0.0322, 64cpu $0.0428, 96cpu $0.0641. RunsOn pricing table (us-east-1, incl. 30 GB gp3 @ 400 MB/s, billed by AWS to the second). RAM per EC2 instance type (AWS spec: medium 4 GiB, large 8, xlarge 16; c-family 2 GiB/vCPU). Paid to AWS on your own bill, plus the RunsOn licence (plan).",
   "cpu_class": "dedicated"
  },
  {
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 60,
   "granularity_s": 1,
   "start_fee": 0,
   "multiplier": 1,
   "key": "spot-windows",
   "label": "Spot EC2 runner, Windows x64",
   "flags": [
    "spot"
   ],
   "os": [
    "windows"
   ],
   "sizes": [
    {
     "name": "2cpu m8i.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.12,
     "month_cap": null
    },
    {
     "name": "4cpu m8i.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.222,
     "month_cap": null
    },
    {
     "name": "8cpu m8i.2xlarge",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.426,
     "month_cap": null
    },
    {
     "name": "16cpu c8i.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.828,
     "month_cap": null
    },
    {
     "name": "32cpu c8i.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 1.638,
     "month_cap": null
    },
    {
     "name": "64cpu c8i.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 3.264,
     "month_cap": null
    },
    {
     "name": "96cpu c8i.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 4.884,
     "month_cap": null
    }
   ],
   "note": "Pricing page 'windows' tab, spot, us-east-1, incl. 30 GB gp3; Windows licence included in AWS price (spot saves little vs on-demand). Boot ~1 min base / 2-3 min full image (billed).",
   "cpu_class": "dedicated"
  },
  {
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 60,
   "granularity_s": 1,
   "start_fee": 0,
   "multiplier": 1,
   "key": "on-demand-windows",
   "label": "On-demand EC2 runner, Windows x64",
   "flags": [],
   "os": [
    "windows"
   ],
   "sizes": [
    {
     "name": "2cpu m8i.large",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.216,
     "month_cap": null
    },
    {
     "name": "4cpu m8i.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.414,
     "month_cap": null
    },
    {
     "name": "8cpu m8i.2xlarge",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.81,
     "month_cap": null
    },
    {
     "name": "16cpu c8i.4xlarge",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 1.506,
     "month_cap": null
    },
    {
     "name": "32cpu c8i.8xlarge",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 2.988,
     "month_cap": null
    },
    {
     "name": "64cpu c8i.16xlarge",
     "vcpu": 64,
     "ram_gib": 128,
     "disk_gib": 30,
     "hour": 5.958,
     "month_cap": null
    },
    {
     "name": "96cpu c8i.24xlarge",
     "vcpu": 96,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 8.934,
     "month_cap": null
    }
   ],
   "note": "On-demand = page data-ec2-ondemand + $0.0003/min gp3 (same method as the card's Linux on-demand modes).",
   "cpu_class": "dedicated"
  },
  {
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 60,
   "granularity_s": 1,
   "start_fee": 0,
   "multiplier": 1,
   "key": "spot-gpu",
   "label": "Spot EC2 GPU runner",
   "flags": [
    "spot"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": true,
   "sizes": [
    {
     "name": "4cpu T4 g4dn.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.288,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 1
    },
    {
     "name": "8cpu T4 g4dn.2xlarge",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.264,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 1
    },
    {
     "name": "16cpu A10G g5.4xlarge",
     "vcpu": 16,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 0.582,
     "month_cap": null,
     "gpu": "A10",
     "gpu_count": 1
    },
    {
     "name": "48cpu 4xT4 g4dn.12xlarge",
     "vcpu": 48,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 1.44,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 4
    }
   ],
   "note": "Pricing page 'gpu' tab (spot, 7-day average, cheapest zone, us-east-1, incl. 30 GB gp3), re-checked 2026-10-14: g4dn.xlarge $0.0048/min, g4dn.2xlarge $0.0044, g5.4xlarge $0.0097, g4dn.12xlarge $0.0240. Many more GPU families (L4, L40S, A100, H100, H200) usable at AWS prices but not tabulated.",
   "cpu_class": "dedicated"
  },
  {
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 60,
   "granularity_s": 1,
   "start_fee": 0,
   "multiplier": 1,
   "key": "on-demand-gpu",
   "label": "On-demand EC2 GPU runner",
   "flags": [],
   "os": [
    "linux"
   ],
   "gpu_only": true,
   "sizes": [
    {
     "name": "4cpu T4 g4dn.xlarge",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 30,
     "hour": 0.546,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 1
    },
    {
     "name": "8cpu T4 g4dn.2xlarge",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 30,
     "hour": 0.768,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 1
    },
    {
     "name": "16cpu A10G g5.4xlarge",
     "vcpu": 16,
     "ram_gib": 64,
     "disk_gib": 30,
     "hour": 1.644,
     "month_cap": null,
     "gpu": "A10",
     "gpu_count": 1
    },
    {
     "name": "48cpu 4xT4 g4dn.12xlarge",
     "vcpu": 48,
     "ram_gib": 192,
     "disk_gib": 30,
     "hour": 3.93,
     "month_cap": null,
     "gpu": "T4",
     "gpu_count": 4
    }
   ],
   "cpu_class": "dedicated"
  }
 ],
 "storage": {
  "included_disk_gib": 0,
  "disk_gib_month": null,
  "disk_billed_when_stopped": false,
  "snapshot_gib_month": null,
  "paused_ram_billed": false,
  "stopped_pool": "Warm pools: stopped standby instances bill EBS storage while stopped; hot instances bill full EC2."
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": 3.65,
  "ipv4_available": true
 },
 "plans": [
  {
   "name": "Starter",
   "fee": 29.17,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "waives_start_fee": false,
   "included_applies_to_modes": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "RunsOn licence EUR 300 / USD 350 per year per legal entity (< 50k jobs/month; one runner per job, not enforced); encoded as USD 350/12 per month. Paid once a year to RunsOn."
  },
  {
   "name": "Growth",
   "fee": 87.5,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "waives_start_fee": false,
   "included_applies_to_modes": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "RunsOn licence EUR 900 / USD 1,050 per year per legal entity (< 200k jobs/month; one runner per job, not enforced); encoded as USD 1,050/12 per month. Paid once a year to RunsOn."
  },
  {
   "name": "Scale",
   "fee": 175,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "waives_start_fee": false,
   "included_applies_to_modes": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "RunsOn licence EUR 1,800 / USD 2,100 per year per legal entity (< 500k jobs/month; one runner per job, not enforced); encoded as USD 2,100/12 per month. Paid once a year to RunsOn."
  },
  {
   "name": "Sponsorship",
   "fee": 350,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "waives_start_fee": false,
   "included_applies_to_modes": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "RunsOn 'Sponsorship' step (the Enterprise plan): EUR 3,600 / USD 4,200 per year per legal entity, unlimited jobs (no volume limit), full server and agent source for security review, priority support, Slack Connect, optional logo on the RunsOn homepage; also on AWS Marketplace. Encoded as USD 4,200/12 per month. Paid once a year to RunsOn."
  },
  {
   "name": "Free (non-commercial)",
   "fee": 0,
   "flags": [
    "alt"
   ],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "waives_start_fee": false,
   "included_applies_to_modes": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "Free for nonprofit, open-source, educational and personal non-commercial use only."
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 0,
  "trial_days": 15
 },
 "price_expires": null,
 "features": {
  "linux": true,
  "windows": true,
  "macos": false,
  "arm64": true,
  "gpu": true,
  "gpu_types": [
   "T4",
   "A10",
   "L4",
   "L40S",
   "V100",
   "A100",
   "H100",
   "H200"
  ],
  "snapshot": "fs",
  "pause_resume": true,
  "fork": false,
  "persistent_disk": true,
  "volumes": true,
  "auto_stop_idle": true,
  "max_session_h": 120,
  "custom_image": true,
  "docker_inside": true,
  "nested_virt": true,
  "root": true,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "agent_harnesses": false,
  "ssh": true,
  "public_ipv4": true,
  "inbound_https": false,
  "custom_domain": false,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "regions": [
   "us",
   "eu",
   "asia",
   "other"
  ],
  "soc2": false,
  "hipaa": false,
  "sso": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "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": null,
  "mcp_server": false,
  "snapshot_auto": true,
  "egress_allowlist_level": "both",
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": false,
  "volume_attach": true,
  "volume_shared": true,
  "isolation": "qemu-kvm",
  "image_oci": false,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "static-datacenter",
  "snapshot_on_demand": false,
  "harness_api": false,
  "own_agent_api": false,
  "max_session_unlimited": false,
  "usage_api": false,
  "persist_scope": "folder",
  "persist_path": "the sticky disk",
  "snapshot_scope": "folder"
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "perf_source": "No benchmark row: provider is not in ComputeSDK results or the HPC run (as of 2026-09-28). See research/perf-map.json.",
 "knobs": [],
 "caveats": [
  "Self-hosted on your own AWS account: EC2 + EBS billed by AWS; RunsOn charges only the annual licence (EUR).",
  "Spot prices are RunsOn's 7-day average for the cheapest us-east-1 zone (checked 2026-10-14) and move with the AWS spot market.",
  "Licence fees use the page's USD checkout prices (USD 350 / 1,050 / 2,100 / 4,200 per year; EUR 300 / 900 / 1,800 / 3,600).",
  "Job caps (jobs/month) per licence tier are not enforced by the engine (nor by RunsOn: \"No limit is enforced\").",
  "S3 cache and data transfer are extra (cents per job, per RunsOn).",
  "Default public-subnet runners get an AWS public IPv4 per instance, billed by AWS at $0.005/h (~$3.65/month) on top of the per-minute rates shown; it is ephemeral (new IP per job). A fixed egress IP needs private mode with NAT gateway + Elastic IP (extra NAT hourly and data-processing charges).",
  "Jobs are capped at 5 days by GitHub's self-hosted runner limit, not by RunsOn."
 ],
 "sources": [
  "https://runs-on.com/pricing/",
  "https://runs-on.com/runners/linux/",
  "https://docs.github.com/en/actions/reference/limits",
  "https://runs-on.com/docs/control-plane/networking/",
  "https://aws.amazon.com/vpc/pricing/"
 ],
 "audit_2026_09_29": {
  "applied": 16,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 2
 },
 "fleet": {
  "default_max_instances": null,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": "ticket",
  "raise_time_days": null,
  "verification": "AWS account quotas (on-demand vCPU, spot vCPU, RunInstances/CreateFleet request rate); RunsOn licence has no concurrency cap",
  "tiers": "Licence tier by jobs/month (<50k / <200k / <500k / Sponsorship unlimited); overage never blocks CI; two consecutive months above tier -> moved up, prorated.",
  "notes": "RunsOn paces EC2 calls at ~2 RunInstances/CreateFleet per second by default (AppSize small); AWS default request-rate quota is usually 2; design point ~80,000 VMs/day. 'New AWS accounts have low default quotas for standard instances'.",
  "sources": [
   "https://runs-on.com/docs/control-plane/rate-limits/",
   "https://runs-on.com/docs/runners/platforms/",
   "https://runs-on.com/docs/costs/licensing/"
  ]
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": true,
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "RunsOn restores the latest compatible snapshot before a job, mounts the volume on the runner, and snapshots it again after a clean unmount.",
   "note": "Sticky disks (RunsOn v3.2+, label sticky=<name>:<size>): automatic EBS snapshot of a dedicated CACHE disk at job end and restore at next job start - not the root disk, no memory. Scoped by repo/lineage/Git ref/OS/arch; newest snapshot per lineage kept, idle lineages removed after 10 days. Runner VM itself is always ephemeral (fresh EC2 per job, destroyed after). EBS/snapshot costs billed by AWS.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://runs-on.com/docs/maintenance/configuration/flex/cloudformation/",
   "quote": "Optional ARN of an AWS Network Firewall policy used for IPv4 egress filtering. Manage the policy and its rule groups outside this stack. When provided, RunsOn creates firewall endpoints in both AZs and routes IPv4 egress from public subnets, plus private-subnet egress after NAT, through the firewall.",
   "note": "Stack-level, not per sandbox. RunsOn wires the routing (NetworkFirewallPolicyArn); the rules themselves are a plain-AWS Network Firewall policy you manage (AWS NFW supports domain lists and IP/port rules). IPv6 not filtered; S3 gateway endpoint bypasses it. Fleet also accepts your own security groups (security_group_ids: \"Security group IDs for runners and the Fleet worker\") - plain-AWS SG egress rules (IP/port). Docs: \"Security groups should be treated as product boundaries.\" StepSecurity Harden-Runner integration offers egress allowlists but is an in-runner agent (third party), not provider-side.",
   "checked": "2026-09-29",
   "level": "both"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://runs-on.com/docs/maintenance/configuration/flex/cloudformation/",
   "quote": "Allow inbound SSH connections from the specified CIDR range to the runners.",
   "note": "SSHAllowed (default false) + SSHCidrRange; Fleet ssh_allowed/ssh_cidr_range or bring your own security groups; runners can run in private subnets (private=true). No exposed ports/preview URLs; SSM preferred for access. Flex public webhook ingress can be WAF-restricted to GitHub IP ranges (EnableWAF).",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": true,
   "source": null,
   "quote": null,
   "note": "Full EC2 VM per job with root/sudo (GitHub runner image); iptables/nftables inside will work (not explicitly documented).",
   "checked": "2026-09-29",
   "derived": true
  },
  "secret_proxy": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/ai-agents/",
   "quote": "Because the runner runs in your own AWS account, jobs call Bedrock through the instance role, with no long-lived API keys to manage.",
   "note": "Credential exposure is via the AWS instance-profile role (temporary AWS creds present on the machine) or plain GitHub Actions secrets as env vars, not a first-party proxy that injects credentials for arbitrary HTTP APIs so the secret never enters the machine.",
   "checked": "2026-09-30"
  },
  "volume_attach": {
   "value": true,
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "Sticky disks keep a cache on a dedicated EBS volume instead of packing it into an archive after every job.",
   "note": "One sticky EBS disk per job (gp3 default 3000 IOPS/400 MiB/s, size in label), mounted at /mnt/runs-on/stickydisk (Linux) or C:\\runs-on\\stickydisk; Linux+Windows, Flex+Fleet. Root volume size also configurable (volume= label). EBS billed by AWS.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://runs-on.com/docs/runners/capabilities/shared-volumes/",
   "quote": "Since v2.8.2, you can configure RunsOn to automatically create an Elastic File System (EFS), which can be used for storing artefacts across workflow jobs.",
   "note": "Read-write NFS (EFS) mounted at /mnt/efs by all runners that set extras=efs; stack parameter EnableEfs (default false); Linux Flex runners only (not Windows, not Fleet yet). One EFS per stack. EFS billed by AWS.",
   "checked": "2026-09-29"
  },
  "isolation": {
   "value": "qemu-kvm",
   "source": "https://runs-on.com/docs/control-plane/networking/",
   "quote": "Both products spawn a fresh EC2 instance for every job. Neither runs your workflow on shared infrastructure.",
   "note": "RunsOn launches a dedicated AWS EC2 instance per job in the customer's own AWS account (Flex/Fleet), destroyed after. AWS EC2 isolation is provided by the Nitro hypervisor, which is KVM-derived; mapped to the closest enum value (full VM, not a shared-kernel container).",
   "checked": "2026-09-30"
  },
  "image_oci": {
   "value": false,
   "source": "https://runs-on.com/docs/guides/building-custom-ami/",
   "quote": "RunsOn provides base images (AMIs) ... you might want to generate a new AMI from one of those base images, and use it in your workflows.",
   "note": "Runners boot from AWS AMIs (built via Packer), not from a customer-supplied Docker/OCI image. docker_inside is supported (containers run inside the VM), but that is different from booting the machine itself from an OCI image.",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://runs-on.com/pricing/",
   "quote": "runs-on: self-hosted github actions runners, in your own aws account.",
   "note": "not offered: outside the product's scope (a GitHub Actions CI runner replacement, not a managed browser/sandbox product).",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://runs-on.com/pricing/",
   "quote": "runs-on: self-hosted github actions runners, in your own aws account.",
   "note": "not offered: outside the product's scope.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://runs-on.com/pricing/",
   "quote": "runs-on: self-hosted github actions runners, in your own aws account.",
   "note": "not offered: outside the product's scope.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "static-datacenter",
   "source": "https://runs-on.com/docs/runners/capabilities/static-ips/",
   "quote": "RunsOn supports static egress IPs by launching runners in private subnets and routing outbound internet traffic through NAT gateways with Elastic IPs.",
   "note": "Runners are plain AWS EC2 instances (datacenter IP space); a fixed outbound IP is available via NAT Gateway + Elastic IP when Private mode is enabled.",
   "checked": "2026-09-30"
  },
  "snapshot_on_demand": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "RunsOn restores the latest compatible snapshot before a job, mounts the volume on the runner, and snapshots it again after a clean unmount.",
   "note": "Sticky-disk EBS snapshots are automatic (taken at job end / restored at next job start) rather than something you trigger on demand via an API/CLI call whenever you want.",
   "checked": "2026-09-30"
  },
  "harness_api": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/ai-agents/",
   "quote": "steps: - uses: runs-on/action@v2 - run: | aws bedrock-runtime converse --region us-east-1 --model-id us.anthropic.claude-sonnet-4-6 ...",
   "note": "The 'AI agents' capability wires AWS IAM credentials (e.g. Bedrock) into the runner for a workflow step to call model APIs; there is no first-party RunsOn API that drives a coding agent/harness (prompt, stream events, follow-ups) inside the sandbox.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://runs-on.com/pricing/",
   "quote": "runs-on: self-hosted github actions runners, in your own aws account.",
   "note": "not offered: outside the product's scope. RunsOn has no first-party browser/computer-use/research task agent of its own.",
   "checked": "2026-09-30"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://runs-on.com/docs/maintenance/configuration/flex/cloudformation/",
   "quote": "Optional ARN of an AWS Network Firewall policy used for IPv4 egress filtering ... Security groups should be treated as product boundaries.",
   "note": "Egress control is at the IP/port level via a customer-managed AWS Network Firewall policy or security groups, not HTTP method/path-level rules.",
   "checked": "2026-09-30"
  },
  "soc2": {
   "value": false,
   "source": "https://runs-on.com/security/",
   "quote": "The RunsOn control plane runs in your AWS account with a limited IAM role. RunsOn-side data flows are limited to license validation, product telemetry sent to runs-on.com, and normal commercial or support communications.",
   "note": "No SOC 2 attestation is mentioned anywhere on the site (pricing, security, docs); the footer describes RunsOn as 'bootstrapped & self-funded', and the product itself never touches customer code/data (that stays in the customer's own AWS account), so there is little customer-data surface for a SOC 2 report to cover.",
   "checked": "2026-09-30"
  },
  "hipaa": {
   "value": false,
   "source": "https://runs-on.com/security/",
   "quote": "What stays in your AWS account: Runner VMs and workflow execution data ... Private GitHub App credentials ... stored in AWS Secrets Manager.",
   "note": "No HIPAA/BAA mention anywhere on the site; workload data stays entirely inside the customer's own AWS account (subject to the customer's own AWS BAA), and RunsOn itself only sees license/telemetry data.",
   "checked": "2026-09-30"
  },
  "sso": {
   "value": false,
   "source": "https://runs-on.com/pricing/",
   "quote": "Checkout supports EUR and USD, and Enterprise can procure through AWS Marketplace so the license lands on your existing AWS invoice and draws down committed spend.",
   "note": "No SAML/OIDC SSO is documented anywhere; RunsOn is delivered as a self-hosted CloudFormation/Terraform stack plus an annual license key, not a hosted web dashboard/account system that a customer's users log into.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": true,
   "source": "https://runs-on.com/tips/multi-regional-failover/",
   "quote": "Setup RunsOn in another AWS region, keep the same environment name, and just suspend the other GitHub App installation ... Deploy new stack in another region.",
   "note": "The entire RunsOn stack (control plane + runners) is deployed into the customer's own AWS region of choice, including any EU AWS region (e.g. eu-west-1); the region is a plain CloudFormation/Terraform parameter.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": 120,
   "corrected_from": "none",
   "source": "https://docs.github.com/en/actions/reference/limits",
   "quote": "Self-hosted Job execution time 5 days Each job in a workflow can run for up to 5 days of execution time. If a job reaches this limit, the job is terminated and fails.",
   "note": "RunsOn sets no session limit of its own (a runner lives for exactly one GitHub Actions job and is destroyed after), but every RunsOn runner registers with GitHub as a self-hosted runner, so each job runs under GitHub's 5-day (120 h) self-hosted job ceiling. Same treatment as the warpbuild card.",
   "checked": "2026-10-14"
  },
  "persistent_disk": {
   "value": true,
   "corrected_from": false,
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "Sticky disks keep a cache on a dedicated EBS volume instead of packing it into an archive after every job. RunsOn restores the latest compatible snapshot before a job, mounts the volume on the runner, and snapshots it again after a clean unmount.",
   "note": "Opt-in first-party persistent EBS volume (sticky disk) survives across ephemeral job runners; also warm-pool 'stopped' instances keep their root EBS volume across stop/start (see performance/warm-pools). Default is still an ephemeral, deleted-on-exit root disk per job; persistence requires the sticky= label or a stopped pool.",
   "checked": "2026-09-30"
  },
  "snapshot": {
   "value": "fs",
   "corrected_from": "none",
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "RunsOn restores the latest compatible snapshot before a job, mounts the volume on the runner, and snapshots it again after a clean unmount.",
   "note": "Automatic EBS (disk-only) snapshot/restore of the sticky cache volume, scoped by repo/lineage/ref/OS/arch. No memory or process-state capture (not 'mem'): the runner VM itself is always a fresh EC2 instance destroyed after the job.",
   "checked": "2026-09-30"
  },
  "pause_resume": {
   "value": true,
   "corrected_from": false,
   "source": "https://runs-on.com/docs/performance/warm-pools/",
   "quote": "Stopped instances are pre-provisioned, warmed up, and then stopped to minimize costs. When a job arrives, they start quickly (EBS volume is already warmed, dependencies installed). You only pay for EBS storage while stopped, making them a good balance between cost and performance.",
   "note": "Opt-in 'stopped' warm-pool capacity: an EC2 instance is stopped (root EBS volume persists) and later started to serve a job, with billing dropping to EBS storage only while stopped -- matches the pause/resume + reduced-billing definition. Default behaviour (no pool configured) is a fresh cold-start instance per job, no pause/resume.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": false,
   "source": "https://github.com/runs-on/runs-on",
   "quote": "RunsOn is the self-hosted GitHub Actions control plane for AWS. It launches an isolated EC2 runner for every job with full GitHub Linux runner-image compatibility.",
   "note": "not offered: outside the product's scope. RunsOn launches an independent fresh EC2 instance per job from an AMI/image; there is no API to clone an existing machine into new ones.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": false,
   "source": "https://github.com/runs-on/runs-on",
   "quote": "RunsOn launches a fresh runner for every job and scales back to zero.",
   "note": "not offered: outside the product's scope. No mechanism to clone a running instance without stopping it; each job gets its own freshly launched EC2 runner.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://github.com/runs-on/runs-on",
   "quote": "RunsOn launches a fresh runner for every job and scales back to zero.",
   "note": "not offered: outside the product's scope. Follows directly from the absence of any fork/fork_running capability; no memory-preserving clone feature exists.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/remote-access/",
   "quote": "RunsOn provides SSM access to runner instances, plus optional SSH access when you explicitly enable it.",
   "note": "not offered: outside the product's scope. RunsOn runners are headless CI EC2 instances; documented remote access is SSM/SSH console access only, no VNC/RDP/streamed desktop.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/remote-access/",
   "quote": "RunsOn provides SSM access to runner instances, plus optional SSH access when you explicitly enable it.",
   "note": "not offered: outside the product's scope. No desktop exists to drive by screenshots/clicks; access is terminal-based (SSM/SSH) only.",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": true,
   "corrected_from": false,
   "source": "https://runs-on.com/docs/performance/warm-pools/",
   "quote": "Stopped instances are pre-provisioned, warmed up, and then stopped to minimize costs. When a job arrives, they start quickly (EBS volume is already warmed, dependencies installed).",
   "note": "Opt-in 'stopped' warm pool: a stopped runner instance automatically starts when a job (request) arrives. Default cold-start mode launches a brand-new instance instead, so this is opt-in, not universal.",
   "checked": "2026-09-30"
  },
  "inbound_https": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/remote-access/",
   "quote": "RunsOn provides SSM access to runner instances, plus optional SSH access when you explicitly enable it. SSM is the preferred troubleshooting path because it avoids opening inbound SSH access.",
   "note": "No HTTPS ingress/preview-URL mechanism is documented anywhere; the only inbound access paths to a runner are SSM and optional SSH (port 22), not HTTP(S).",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": true,
   "corrected_from": false,
   "source": "https://runs-on.com/docs/control-plane/networking/",
   "quote": "Public runners are simpler and usually cheaper because they do not need NAT for outbound internet access.",
   "note": "Default stack mode is public subnets (Private=false); combined with SSH remote-access defaults of ssh_allowed=true / ssh_cidr_range=\"0.0.0.0/0\" (docs/runners/capabilities/remote-access/), this implies runners in the default (public) mode carry an AWS-assigned public IPv4, reachable directly rather than only via NAT egress. Private mode (opt-in) removes the public IP and routes egress through a NAT gateway instead. network.ipv4_available set true to match (2026-10-14); ipv4_month = AWS in-use public IPv4 $0.005/h ('Hourly charge for In-use Public IPv4 Address $0.005', aws.amazon.com/vpc/pricing/).",
   "checked": "2026-10-14"
  },
  "agent_harnesses": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/capabilities/ai-agents/",
   "quote": "There are two complementary ways to power those workloads: Amazon Bedrock access -- grant runners IAM permission to invoke Bedrock models (Anthropic Claude and others) with no long-lived API keys. GitHub Copilot coding agent -- point Copilot's coding agent at a RunsOn runner as its execution environment.",
   "note": "RunsOn offers IAM access to Bedrock models and lets GitHub's own Copilot coding agent use a RunsOn runner as its execution environment; it does not preinstall or offer templates for third-party coding-agent harnesses (Claude Code, Codex, OpenCode, etc.).",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": false,
   "source": "https://runs-on.com/docs/observability/cli/",
   "quote": "roc connect <JOB_URL>",
   "note": "RunsOn ships a CLI (roc) for connecting to runners and a GitHub Actions action, but no MCP server is documented anywhere in the docs sitemap; no page or mention of the Model Context Protocol exists on the site.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/platforms/",
   "quote": "macOS runners are not yet supported by RunsOn, due to licensing constraints enforced by Apple. Neither Flex nor Fleet can launch macOS capacity today.",
   "note": "Explicitly and currently unsupported (Apple's 24-hour EC2 Mac minimum allocation period is incompatible with RunsOn's shared-nothing per-job model).",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://github.com/runs-on/runs-on",
   "quote": "This public repository contains MIT-licensed CloudFormation assets and supporting files. The RunsOn server and agent are commercially licensed.",
   "note": "Only the CloudFormation/Terraform glue is MIT-licensed; the core RunsOn control-plane server and runner agent are proprietary/commercially licensed, so the product as a whole is not open source.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://runs-on.com/docs/runners/platforms/",
   "quote": "RunsOn gives every workflow the full range of AWS EC2 instances as self-hosted GitHub Actions runners, on any GitHub plan (including free plans).",
   "note": "not offered: outside the product's scope. A runner's CPU/RAM (EC2 instance type) is fixed by the job's labels/AMI at launch; no documented API changes vCPU/RAM of an already-running runner without recreating it.",
   "checked": "2026-09-30"
  },
  "cpu_class": {
   "value": {
    "spot-x64": "dedicated",
    "on-demand-x64": "dedicated",
    "spot-arm64": "dedicated",
    "on-demand-arm64": "dedicated",
    "spot-windows": "dedicated",
    "on-demand-windows": "dedicated",
    "spot-gpu": "dedicated",
    "on-demand-gpu": "dedicated"
   },
   "source": "https://aws.amazon.com/ec2/instance-types/m7i/",
   "quote": "M7i-flex and M7i instances are built on the AWS Nitro System, a combination of dedicated hardware and lightweight hypervisor. Nitro delivers practically all the compute and memory resources of the host hardware to your instances.",
   "note": "RunsOn runs plain AWS EC2 instances (customer's own account); every size in the card's non-burstable families (m8a/c8a/c8id/c8i-flex, m8g/c8g, m8i/c8i, g4dn/g5; x64 families updated 2026-10-14) gets a dedicated Nitro-allocated vCPU thread, not oversubscribed/shared with other AWS tenants. Exception: the 1cpu size in the x64 modes is t8i.medium, an explicitly burstable T-family instance with a published 20% baseline CPU performance per vCPU (AWS T8i page table: 'Baseline Performance/vCPU' = 20% for t8i.medium, using the CPU-credit system); larger sizes in the same mode (m8a.large and up) are not burstable/credit-based. Marked 'dedicated' at the mode level since most of each mode's size range is dedicated EC2 capacity, but the smallest x64 size (t8i.medium) is actually burstable:20.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://runs-on.com/security/",
   "quote": "The RunsOn control plane runs in your AWS account with a limited IAM role. RunsOn-side data flows are limited to license validation, product telemetry sent to runs-on.com, and normal commercial or support communications.",
   "note": "granularity: account-only; cost: no; RunsOn is entirely self-hosted in the customer's own AWS account. EC2 runners and EBS storage are billed by AWS (on the customer's AWS bill), not by RunsOn. RunsOn charges only a flat annual licence fee (EUR 300-3600/year depending on tier). No per-job or per-runner usage API exists; RunsOn does not track or expose billable usage metrics programmatically. Individual runner/job resource consumption would need to be tracked through AWS Cost Explorer or AWS Billing API with proper tags/labels (AWS's API, not RunsOn's). RunsOn's own telemetry and dashboards include job logs and CloudWatch metrics (via OpenTelemetry integration) but these are operational metrics (CPU %, memory, run time), not billable usage or cost data.",
   "confidence": "high",
   "checked": "2026-10-01"
  },
  "persist_scope": {
   "value": "folder",
   "source": "https://runs-on.com/docs/runners/capabilities/sticky-disks/",
   "quote": "Sticky disks keep a cache on a dedicated EBS volume instead of packing it into an archive after every job. RunsOn restores the latest compatible snapshot before a job, mounts the volume on the runner, and snapshots it again after a clean unmount.",
   "note": "Only the sticky disk survives a stop; the rest of the filesystem (packages installed elsewhere) resets.",
   "checked": "2026-10-01"
  }
 },
 "locations": [],
 "locations_source": "https://runs-on.com/pricing/",
 "locations_quote": "Self-hosted on your own AWS account: EC2 + EBS billed by AWS; RunsOn charges only the annual licence (EUR).",
 "locations_checked": "2026-10-01"
}