{
 "features_resolved": {
  "snapshot_any": false,
  "snapshot_mem": false,
  "fork": false,
  "pause_resume": false,
  "persistent_disk": false,
  "whole_disk": false,
  "persist_scope": null,
  "volumes": false,
  "auto_stop_idle": true,
  "long_sessions": false,
  "custom_image": true,
  "image_snapshot": false,
  "image_oci": true,
  "vm_isolation": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": false,
  "browser": true,
  "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": false,
  "custom_domain": false,
  "raw_tcp_inbound": false,
  "egress_allowlist": false,
  "open_internet": null,
  "static_egress_ip": false,
  "private_network": false,
  "self_host": true,
  "byoc": false,
  "open_source": true,
  "soc2": true,
  "hipaa": false,
  "sso": true,
  "gpu": true,
  "arm64": true,
  "windows": true,
  "macos": true,
  "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": false,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": true,
  "scheduled_wakeups": true,
  "audit_logs": true,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": false,
  "usage_api": false,
  "snapshot_auto": false,
  "snapshot_on_demand": false,
  "harness_api": true,
  "own_agent_api": false,
  "fast_boot": null,
  "strong_isolation": true,
  "ingress_rules": false,
  "guest_firewall": true,
  "secret_proxy": true,
  "secret_proxy_any": false,
  "volume_attach": false,
  "volume_shared": false,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "gitlab-runners",
  "checked": "2026-09-30",
  "company": "GitLab Inc.",
  "ownership": {
   "value": "public",
   "parent": null,
   "source": "https://about.gitlab.com/press/releases/2026-03-03-gitlab-reports-fourth-quarter-fiscal-year-2026-financial-results/",
   "quote": "All-Remote-GitLab Inc. (NASDAQ: GTLB), the intelligent orchestration platform for DevSecOps, today reported financial results for its fourth quarter fiscal year of 2026, ended January 31, 2026."
  },
  "stage": {
   "value": "public",
   "source": "https://about.gitlab.com/press/releases/2026-03-03-gitlab-reports-fourth-quarter-fiscal-year-2026-financial-results/",
   "quote": "All-Remote-GitLab Inc. (NASDAQ: GTLB)",
   "confidence": "high",
   "note": "GitLab IPO'd on NASDAQ (GTLB) in October 2021. The hosted runners/compute minutes product evaluated here (GitLab.com CI) is a feature of the core GitLab.com SaaS product, not a separately funded spinout; this card is about the GitLab.com hosted CI runner feature, whose parent company GitLab Inc. is public. YC hint confirmed: YC directory lists 'GitLab' with the same website domain (gitlab.com) as this provider; YC page did not expose batch text via static fetch but GitLab is widely documented (e.g. company history, press) as YC Winter 2015 (W15) alumnus."
  },
  "accelerators": [
   {
    "name": "Y Combinator",
    "batch": "Winter 2015",
    "source": "https://www.ycombinator.com/companies/gitlab",
    "quote": "GitLab: A complete DevOps platform delivered as a single application. | Y Combinator",
    "confidence": "medium",
    "via": "research"
   }
  ],
  "total_funding_usd": {
   "value": 436000000,
   "status": "estimated",
   "basis": "Widely reported aggregate (Crunchbase/press) of GitLab's pre-IPO venture rounds (seed through Series E, 2015-2019) prior to its October 2021 IPO; not independently re-verified line-by-line in this pass.",
   "source": "https://en.wikipedia.org/wiki/GitLab",
   "quote": ""
  },
  "last_round": {
   "type": "public",
   "amount_usd": null,
   "date": "2021-10",
   "leads": [],
   "status": "confirmed",
   "source": "https://about.gitlab.com/press/releases/2026-03-03-gitlab-reports-fourth-quarter-fiscal-year-2026-financial-results/",
   "quote": "All-Remote-GitLab Inc. (NASDAQ: GTLB)"
  },
  "investors": [
   "Iconiq Capital",
   "Khosla Ventures",
   "Goldman Sachs",
   "GV (Google Ventures)",
   "ICONIQ Growth",
   "Y Combinator"
  ],
  "portfolio_listings": [],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": null,
   "source": ""
  },
  "note": "This card covers GitLab.com's hosted CI runners / compute minutes feature (macOS, Windows, Linux x86/Arm64/GPU), part of the core GitLab.com SaaS product, not a standalone company. GitLab Inc. (ticker GTLB) is a public company on NASDAQ since its October 2021 IPO; it was a Y Combinator company (Winter 2015 batch, per YC's own listing and widely documented company history), making its funding stage 'public' (last priced private round was pre-IPO; the IPO supersedes stage classification). Total pre-IPO funding (~$436M) and revenue (FY2026 ARR > $1B) are from aggregator/press sources and were not independently reconciled against a full SEC filing in this pass due to the 15-minute time budget."
 },
 "id": "gitlab-runners",
 "name": "GitLab.com hosted runners",
 "url": "https://docs.gitlab.com/ci/pipelines/compute_minutes/",
 "category": "macos",
 "isolation": "vm",
 "modes": [
  {
   "key": "on-demand",
   "label": "macOS hosted runners (beta), compute minutes x cost factor",
   "flags": [
    "beta"
   ],
   "os": [
    "macos"
   ],
   "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": "saas-macos-medium-m1 (4 vCPU / 8 GB, factor 6)",
     "vcpu": 4,
     "ram_gib": 8,
     "disk_gib": 50,
     "hour": 3.6,
     "month_cap": null,
     "per_minute_usd": 0.06
    },
    {
     "name": "saas-macos-large-m2pro (6 vCPU / 16 GB, factor 12)",
     "vcpu": 6,
     "ram_gib": 16,
     "disk_gib": 50,
     "hour": 7.2,
     "month_cap": null,
     "per_minute_usd": 0.12
    }
   ],
   "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,
   "note": "Cost factor x $0.01 per compute minute ('$10 per 1,000 minutes' extra compute-minute packs, about.gitlab.com/pricing). Premium/Ultimate (and OSS program) only. docs (2026-09-28): \"Hosted runners on macOS are in beta and available for open source programs and customers in Premium and Ultimate plans.\"",
   "product_class": "ci-runner",
   "plans": [
    "Premium",
    "Ultimate"
   ],
   "features": {
    "custom_image": false
   }
  },
  {
   "key": "windows",
   "label": "Windows hosted runners (beta), compute minutes x cost factor",
   "flags": [
    "beta"
   ],
   "os": [
    "windows"
   ],
   "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": "saas-windows-medium-amd64 (2 vCPU / 7.5 GB, factor 1)",
     "vcpu": 2,
     "ram_gib": 7.5,
     "disk_gib": 75,
     "hour": 0.6,
     "month_cap": null,
     "per_minute_usd": 0.01
    }
   ],
   "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,
   "note": "Windows 2022; cost factor 1; all tiers. docs.gitlab.com/ci/runners/hosted_runners/windows (2026-09-28): \"Hosted runners on Windows are in beta\"; Free/Premium/Ultimate; provisioning averages ~5 minutes during beta.",
   "product_class": "ci-runner",
   "features": {
    "custom_image": false
   }
  },
  {
   "key": "linux",
   "label": "GitLab.com hosted Linux x86 (small/medium)",
   "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": "saas-linux-small-amd64",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.6,
     "month_cap": null
    },
    {
     "name": "saas-linux-medium-amd64",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 50,
     "hour": 1.2,
     "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). https://docs.gitlab.com/ci/runners/hosted_runners/linux/: small 2 vCPU/8 GB/30 GB (cost factor 1), medium 4/16/50 (factor 2) — https://docs.gitlab.com/ci/pipelines/compute_minutes/; compute minutes = job seconds/60 x factor; extra minutes $10 per 1,000 (https://about.gitlab.com/pricing/) => $0.60/h per factor. Default region us-east1.",
   "regions": [
    "us"
   ],
   "product_class": "ci-runner"
  },
  {
   "key": "linux-large",
   "label": "GitLab.com hosted Linux x86 large+ (Premium/Ultimate)",
   "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": "saas-linux-large-amd64",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 100,
     "hour": 1.8,
     "month_cap": null
    },
    {
     "name": "saas-linux-xlarge-amd64",
     "vcpu": 16,
     "ram_gib": 64,
     "disk_gib": 200,
     "hour": 3.6,
     "month_cap": null
    },
    {
     "name": "saas-linux-2xlarge-amd64",
     "vcpu": 32,
     "ram_gib": 128,
     "disk_gib": 200,
     "hour": 7.2,
     "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). https://docs.gitlab.com/ci/runners/hosted_runners/linux/: large 8/32 factor 3, xlarge 16/64 factor 6, 2xlarge 32/128 factor 12; Premium/Ultimate only. $0.01 per compute minute.",
   "regions": [
    "us"
   ],
   "plans": [
    "Premium",
    "Ultimate"
   ],
   "product_class": "ci-runner"
  },
  {
   "key": "linux-arm64",
   "label": "GitLab.com hosted Linux Arm64",
   "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": "saas-linux-small-arm64",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": 30,
     "hour": 0.6,
     "month_cap": null
    },
    {
     "name": "saas-linux-medium-arm64",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": 50,
     "hour": 1.2,
     "month_cap": null
    },
    {
     "name": "saas-linux-large-arm64",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": 100,
     "hour": 1.8,
     "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://docs.gitlab.com/ci/runners/hosted_runners/linux/: arm64 small 2/8 factor 1, medium 4/16 factor 2, large 8/32 factor 3 (medium/large Premium/Ultimate only — not enforced per size). $0.01 per compute minute.",
   "regions": [
    "us"
   ],
   "product_class": "ci-runner"
  },
  {
   "key": "linux-gpu",
   "label": "GitLab.com hosted Linux GPU (T4) (Premium/Ultimate)",
   "flags": [],
   "os": [
    "linux"
   ],
   "gpu_only": true,
   "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": "saas-linux-medium-amd64-gpu-standard",
     "vcpu": 4,
     "ram_gib": 15,
     "disk_gib": 50,
     "hour": 0,
     "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": {
    "T4": 4.2
   },
   "gpu_min_count": null,
   "features": {
    "gpu": true,
    "gpu_types": [
     "T4"
    ]
   },
   "note": "CI runner. 4 vCPU / 15 GB / 50 GB + 1 NVIDIA Tesla T4 (or similar, 16 GB), cost factor 7 x $0.01/compute-minute = $0.07/min = $4.20/h all-in (bundled price put on the GPU line, size hour 0). Premium/Ultimate only. Runs in Google Cloud us-central1. Bring your own CUDA image.",
   "regions": [
    "us"
   ],
   "plans": [
    "Premium",
    "Ultimate"
   ],
   "product_class": "ci-runner"
  }
 ],
 "storage": {
  "included_disk_gib": null,
  "disk_gib_month": null,
  "disk_billed_when_stopped": false,
  "snapshot_gib_month": null,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": false
 },
 "plans": [
  {
   "name": "Free",
   "fee": 0,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 4,
   "per_seat": 0,
   "concurrency": null,
   "max_session_h": 3,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": [
    "saas-linux-small-amd64",
    "saas-linux-medium-amd64",
    "saas-linux-small-arm64",
    "saas-windows-medium-amd64 (2 vCPU / 7.5 GB, factor 1)"
   ],
   "note": "400 compute minutes/month (= $4 at $10/1,000) per namespace. 5 users per top-level group. Linux small/medium x86, Linux small arm64 and Windows only (no macOS, no Linux large+/arm64 medium+/GPU). Identity verification (email/phone/card by risk score) required to run CI jobs. Quota exhausted => instance runners stop processing new jobs (no automatic overage).",
   "included_applies_to_modes": null
  },
  {
   "name": "Premium",
   "fee": 29,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 100,
   "per_seat": 29,
   "concurrency": null,
   "max_session_h": 3,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "$29/user/month billed annually (annual prepay only: $348/user/year minimum; seats can only be reduced at renewal); 10,000 compute minutes/month per top-level namespace (= $100), not per seat. Encoded as 1 user. Also includes promo $12/user/month GitLab Credits (AI features only, not runners).",
   "included_applies_to_modes": null
  },
  {
   "name": "Ultimate",
   "fee": null,
   "flags": [
    "sales"
   ],
   "fee_is_credit": false,
   "included_usd": 500,
   "per_seat": 0,
   "concurrency": null,
   "max_session_h": 3,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "Custom pricing; 50,000 compute minutes/month.",
   "included_applies_to_modes": null
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 0
 },
 "features": {
  "linux": true,
  "windows": true,
  "macos": true,
  "arm64": true,
  "gpu": true,
  "gpu_types": [
   "T4"
  ],
  "snapshot": "none",
  "pause_resume": false,
  "fork": false,
  "persistent_disk": false,
  "volumes": false,
  "auto_stop_idle": true,
  "max_session_h": 3,
  "custom_image": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": false,
  "browser": true,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": false,
  "custom_domain": false,
  "raw_tcp_inbound": false,
  "egress_allowlist": false,
  "static_egress_ip": false,
  "private_network": false,
  "self_host": true,
  "byoc": false,
  "open_source": true,
  "regions": [
   "us"
  ],
  "soc2": true,
  "hipaa": false,
  "sso": true,
  "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": false,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": true,
  "scheduled_wakeups": true,
  "audit_logs": true,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": false,
  "snapshot_auto": false,
  "snapshot_on_demand": false,
  "harness_api": true,
  "ingress_rules": false,
  "guest_firewall": true,
  "secret_proxy": "ai-only",
  "volume_attach": false,
  "volume_shared": false,
  "isolation": "qemu-kvm",
  "image_oci": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "own_agent_api": false,
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "knobs": [],
 "caveats": [
  "$ per compute minute = extra-minute pack price ($10 per 1,000, one-time); included plan minutes are consumed x cost factor.",
  "macOS and Windows runners are beta; macOS needs Premium/Ultimate (or the OSS program). Linux x86 (factors 1/2/3/6/12), Linux arm64 (1/2/3) and GPU T4 (factor 7) are encoded as separate modes.",
  "Usage = job duration in seconds / 60 x cost factor (created/pending time excluded); no per-job minimum documented, so per-second metering is encoded for all modes.",
  "Open-source program projects get reduced cost factors (not encoded).",
  "Linux runner hourly = cost factor x $0.01/compute-minute (extra-minute pack price); included minutes are cost-factor minutes, so included_usd = minutes x $0.01 applies to every Linux size.",
  "Arm64 medium/large are Premium/Ultimate-only; the engine may pick them on Free.",
  "Included plan minutes are a hard quota: when used up, instance runners stop processing new jobs and running jobs are dropped after 1,000 minutes over quota. Overage only via prepaid $10/1,000-minute packs (valid 12 months, roll over). Engine treating overage as automatic pay-as-you-go is optimistic.",
  "Hosted runner jobs time out after 3 hours; VMs are single-job and deleted afterwards; no inbound connections.",
  "Open-source program public projects: cost factor 0.5 (forks 0.008); OSS/Education/Startups programs get free Ultimate with 50K minutes/month."
 ],
 "sources": [
  "https://docs.gitlab.com/ci/pipelines/compute_minutes/",
  "https://about.gitlab.com/pricing/",
  "https://docs.gitlab.com/ci/runners/hosted_runners/macos/",
  "https://docs.gitlab.com/ci/runners/hosted_runners/windows/",
  "https://docs.gitlab.com/ci/runners/hosted_runners/linux/"
 ],
 "fleet": {
  "default_max_instances": null,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": null,
  "raise_time_days": null,
  "verification": "GitLab.com Free may require identity verification before CI jobs can run.",
  "tiers": null,
  "notes": "Hosted jobs each use a fresh VM. No documented simultaneous-VM cap for GitLab.com hosted runners. Documented GitLab.com limits: max jobs in active (created/pending/running) pipelines per project 500 Free / 1,000 trial / 20,000 Premium / 60,000 Ultimate; max jobs per pipeline 500/1,000/1,500/2,000; pipeline creation 25 per minute per project+commit+user; job timeout 3 h. macOS runs on limited AWS bare-metal capacity (extended queueing possible); Windows VMs take ~5 min to provision (pending time is not billed). When the monthly quota is used up, new jobs stop and running jobs are dropped after a 1,000-minute grace.",
  "sources": [
   "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "https://docs.gitlab.com/ci/debugging/"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 18,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 8
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Ephemeral runner VMs serve a single job and are deleted right after the job execution.",
   "note": "Single-job ephemeral GCE VMs, 3 h job timeout; state is only carried between jobs via CI cache/artifacts.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "GitLab sends the command to remove the ephemeral runner VM to the Google Compute API immediately after the CI job completes.",
   "note": "No VM snapshot/checkpoint facility for hosted runners; you control only the container image (Linux) and CI cache/artifacts.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": true,
   "source": "https://docs.gitlab.com/user/duo_agent_platform/agents/external/",
   "quote": "Then, in a project issue, epic, or merge request, you can mention that external agent in a comment or discussion and ask the agent to complete a task.",
   "note": "GitLab Duo Agent Platform (Premium/Ultimate): foundational/custom flows and external agents (tested: Claude Code, OpenAI Codex, Amazon Q, Gemini) run as CI/CD jobs on runners (GitLab-hosted by default) via the GitLab Duo CLI executor; triggered by @mention, trigger events (MR created/ready, work item created...) or UI; progress/logs in AI > Sessions; follow-ups by mentioning again; external agents can also be added via API. It is issue/MR-driven rather than a raw prompt/stream SDK; REST API page for workflows was Cloudflare-blocked (not verified).",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules only allow outbound communication from the ephemeral VM to the public internet.",
   "note": "Fixed GitLab firewall, no user-configurable egress rules for hosted runners. Exception: Duo Agent Platform flows can use the 'execution environment sandbox' (SRT) with agent-config.yml network_policy.allowed_domains (domain level), but that is enforced inside the job container, only for Duo flows.",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Inbound communication from the public internet to the ephemeral VM is not allowed.",
   "note": "No port exposure at all (fixed deny-inbound, VMs cannot talk to each other; only the runner manager connects in); nothing to configure.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": true,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "Runners with any of the saas-linux-<size>-<architecture> tags are configured to run in privileged mode",
   "note": "Dedicated GCE VM per job with passwordless sudo ('The virtual machine where your job runs has sudo access with no password'); Linux jobs run in privileged Docker containers (docker+machine), so iptables/nftables in the job's netns should work. Not explicitly documented.",
   "checked": "2026-09-29",
   "derived": true
  },
  "secret_proxy": {
   "value": "ai-only",
   "source": "https://docs.gitlab.com/user/duo_agent_platform/agents/external/",
   "quote": "External agents use GitLab-managed credentials through an AI Gateway.",
   "note": "Only for Duo external agents (Claude and Codex): a GitLab AI Gateway token (AI_FLOW_AI_GATEWAY_TOKEN) is injected instead of an Anthropic/OpenAI key. Ordinary CI/CD jobs get secrets as CI/CD variables (env vars/files) or via OIDC ID tokens to external secret managers; no arbitrary-HTTP credential-injecting proxy.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "The storage is shared by the operating system, the container image with pre-installed software, and a copy of your cloned repository.",
   "note": "Disk fixed per machine type (30-200 GB Linux); no attachable volumes for hosted runners.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "The hosted runners share a distributed cache stored in a Google Cloud Storage (GCS) bucket.",
   "note": "Only a shared CI cache (archive upload/download, 5 GB max, 14-day expiry) — not a mounted shared filesystem.",
   "checked": "2026-09-29"
  },
  "isolation": {
   "value": "qemu-kvm",
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "Hosted runners on Linux for GitLab.com run on Google Cloud Compute Engine. Each job gets a fully isolated, ephemeral virtual machine (VM).",
   "note": "Full per-job VM (GCE), not a shared-kernel container; GitLab doesn't name the hypervisor, but Google Compute Engine VMs run on a KVM-based hypervisor, so qemu-kvm (full VM) is the closest fit. Same 'fully isolated VM' model applies to Windows/macOS/GPU runners.",
   "checked": "2026-09-30"
  },
  "image_oci": {
   "value": true,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "As runners on Linux are using the docker+machine executor, you can choose any container image by defining the image in your .gitlab-ci.yml file.",
   "note": "Applies to Linux (x86/arm64/GPU) hosted runners. macOS and Windows hosted runners only offer GitLab-provided VM images: 'It is not possible to bring your own OS image.'",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "These runners are fully integrated with GitLab.com and are enabled by default for all projects, with no configuration required.",
   "note": "not offered: outside the product's scope. This is a CI/CD job-execution VM product, not a browser/bot-automation product; no anti-bot/stealth fingerprinting feature exists.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/pipelines/compute_minutes/",
   "quote": "Hosted runners on macOS are in beta and available for open source programs and customers in Premium and Ultimate plans.",
   "note": "not offered: outside the product's scope. GitLab hosted runners are CI/CD compute minutes for build/test/deploy jobs; there is no CAPTCHA-solving capability.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules only allow outbound communication from the ephemeral VM to the public internet.",
   "note": "Runner VMs are ephemeral Google Compute Engine instances (default region us-east1) with no documented static or residential egress IP option, so egress is a normal (dynamic) Google Cloud datacenter IP.",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.",
   "note": "not offered: outside the product's scope. There is no persistent/sleeping server that wakes on an inbound request; each CI job provisions a brand-new ephemeral VM and the VM is deleted after the job finishes.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "To use a machine type other than small, add a tags: keyword to your job.",
   "note": "Machine size (vCPU/RAM) is selected via a runner tag before the job starts a fresh VM; there is no API to change CPU/RAM of an already-running job VM.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/pipelines/compute_minutes/",
   "quote": "Hosted runners on macOS are in beta and available for open source programs and customers in Premium and Ultimate plans.",
   "note": "not offered: outside the product's scope. GitLab.com hosted runners are CI/CD compute minutes for running jobs, not a browser/computer-use/research task-agent product with its own driving API (that would be the separate GitLab Duo Agent Platform, which itself is UI/mention-driven rather than a raw agent API).",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": false,
   "source": "https://docs.gitlab.com/user/model_context_protocol/mcp_server/",
   "quote": "With the GitLab Model Context Protocol (MCP) server, you can securely connect AI tools and applications to your GitLab instance... Access GitLab project information. Retrieve issue and merge request data. Interact with GitLab APIs securely.",
   "note": "GitLab ships a platform-wide MCP server for issues/merge requests/repository/CI data and actions, but it is not an MCP server for provisioning or controlling hosted-runner sandbox VMs directly (start/stop/exec a machine); it operates on GitLab CI/CD objects (e.g. triggering/reading pipelines), not the runner VM itself.",
   "checked": "2026-09-30"
  },
  "lang_python": {
   "value": true,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "As runners on Linux are using the docker+machine executor, you can choose any container image by defining the image in your .gitlab-ci.yml file. ... If no image is set, the default is ruby:3.1.",
   "note": "Not preinstalled by default (default image is ruby:3.1), but any official Docker image (e.g. python:3.x) can be selected per job on Linux runners, giving out-of-the-box Python availability. macOS runners also ship Python via the OS/Homebrew-capable image.",
   "checked": "2026-09-30"
  },
  "lang_node": {
   "value": true,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "As runners on Linux are using the docker+machine executor, you can choose any container image by defining the image in your .gitlab-ci.yml file. ... If no image is set, the default is ruby:3.1.",
   "note": "Not preinstalled by default (default image is ruby:3.1), but any official Docker image (e.g. node:x) can be selected per job on Linux runners, giving out-of-the-box Node.js availability.",
   "checked": "2026-09-30"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules only allow outbound communication from the ephemeral VM to the public internet.",
   "note": "Only a fixed, non-configurable allow-outbound-to-internet firewall; no HTTP method/path-level egress rules for hosted runners (the domain-level network_policy.allowed_domains option is scoped to Duo Agent Platform execution sandboxes, not general hosted runners).",
   "checked": "2026-09-30"
  },
  "hipaa": {
   "value": false,
   "source": "https://about.gitlab.com/security/",
   "quote": "GitLab maintains a SOC 2 Type 2 report for the Security, Confidentiality and Availability Trust Services Criteria for GitLab.com.",
   "note": "GitLab's public security/trust page lists SOC 2 Type 2 for GitLab.com but no HIPAA eligibility or BAA offering was found for GitLab.com hosted runners after a reasonable search; treated as not offered for this shared multi-tenant CI compute product.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Ephemeral runner VMs serve a single job and are deleted right after the job execution.",
   "note": "Each job gets a fresh, dedicated ephemeral VM that is deleted immediately after the job; nothing on the VM's local disk survives to the next job. State only carries over via CI/CD cache or artifacts (not disk persistence). Default (and only) behaviour is delete-on-completion.",
   "checked": "2026-09-30"
  },
  "snapshot": {
   "value": "none",
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "GitLab sends the command to remove the ephemeral runner VM to the Google Compute API immediately after the CI job completes.",
   "note": "No disk or memory snapshot/checkpoint facility is offered for hosted runner VMs; the VM and its disk are deleted by GCE right after the job, not snapshotted.",
   "checked": "2026-09-30"
  },
  "pause_resume": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Ephemeral runner VMs serve a single job and are deleted right after the job execution.",
   "note": "There is no pause/resume: each job's VM is provisioned fresh and destroyed at job end; nothing to pause and no reduced-billing suspended state exists.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.",
   "note": "No clone/fork API for hosted runner VMs; every job VM is a fresh instance from the base image, not a clone of another running or stopped machine.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.",
   "note": "No fork capability at all (see fork), so forking a running machine is a fortiori unsupported.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "GitLab sends the command to remove the ephemeral runner VM to the Google Compute API immediately after the CI job completes.",
   "note": "No memory/process-state snapshot or clone mechanism exists for hosted runner VMs.",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Inbound communication from the public internet to the ephemeral VM is not allowed.",
   "note": "All inbound network access to the ephemeral runner VM is blocked by firewall; the only inbound connection permitted is from the internal runner manager, not the user. No SSH-into-runner facility is documented.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Use GitLab-hosted runners to run your CI/CD jobs on GitLab.com and GitLab Dedicated.",
   "note": "The product is a headless CI/CD job runner (ephemeral single-job VM/container), not a desktop/VNC/RDP-streaming product; no graphical desktop access is offered or documented.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Use GitLab-hosted runners to run your CI/CD jobs on GitLab.com and GitLab Dedicated.",
   "note": "No desktop exists to drive (see desktop), so there is no screenshot/click computer-use API for hosted runners.",
   "checked": "2026-09-30"
  },
  "volumes": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "The storage is shared by the operating system, the container image with pre-installed software, and a copy of your cloned repository.",
   "note": "Disk is a single fixed local volume baked into the machine type (30-200 GB depending on size); no attachable/extra persistent volumes are offered for hosted runners.",
   "checked": "2026-09-30"
  },
  "inbound_https": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Inbound communication from the public internet to the ephemeral VM is not allowed.",
   "note": "Firewall denies all inbound traffic, including HTTP/HTTPS, to the ephemeral job VM; there is no way to expose a port/URL from a hosted runner job.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules only allow outbound communication from the ephemeral VM to the public internet. Inbound communication from the public internet to the ephemeral VM is not allowed.",
   "note": "Even if the underlying GCE VM has some IP, hosted-runner firewalling makes it unreachable inbound and no public/reachable IPv4 is exposed or documented to users.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules only allow outbound communication from the ephemeral VM to the public internet.",
   "note": "Only outbound-to-internet is guaranteed; no fixed/static egress IP is documented. Each job runs on a freshly provisioned ephemeral GCE VM, so the outbound IP is not stable across jobs.",
   "checked": "2026-09-30"
  },
  "agent_harnesses": {
   "value": true,
   "corrected_from": false,
   "source": "https://docs.gitlab.com/user/duo_agent_platform/agents/external/",
   "quote": "The following integrations have been tested by GitLab and are available: Claude Code, OpenAI Codex, Amazon Q, Gemini ... Claude Code Agent The Claude Code Agent by GitLab uses GitLab-managed credentials and does not require additional configuration. ... GitLab-managed external agents display a GitLab-maintained badge (tanuki-verified).",
   "note": "GitLab Duo Agent Platform offers pre-built, GitLab-managed 'Claude Code Agent' and 'Codex Agent' templates (plus Amazon Q / Gemini integrations) selectable from the AI Catalog; these flows execute as CI/CD jobs on GitLab runners (hosted by default), so coding-agent harnesses are indeed preinstalled/offered as templates for this product. Card's 'false' should be corrected to true.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://about.gitlab.com/dedicated/",
   "quote": "GitLab Dedicated A secure, compliant single-tenant SaaS. Isolated by design, operated by GitLab.",
   "note": "GitLab Dedicated (single-tenant offering that also provides hosted runners) is deployed and operated in GitLab's own cloud accounts, not the customer's; there is no option to deploy the managed hosted-runner service into a customer-owned cloud account.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "Hosted runners on Linux for GitLab.com run on Google Cloud Compute Engine. Each job gets a fully isolated, ephemeral virtual machine (VM). The default region is us-east1.",
   "note": "GitLab.com hosted runners (this card's product) run in fixed US Google Cloud regions (us-east1 Linux, us-central1 GPU) with no documented per-job EU region selection; EU residency is only available via the separate GitLab Dedicated product with its own region choice, not via GitLab.com hosted runners.",
   "checked": "2026-09-30"
  },
  "private_network": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/",
   "quote": "Firewall rules do not permit communication between VMs. The only internal communication allowed to the ephemeral VMs is from the runner manager.",
   "note": "No VPC peering / private network / inter-machine private connectivity is offered; VM-to-VM communication is explicitly blocked and only the internal runner manager can reach a job VM.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
   "quote": "Runners with any of the saas-linux-<size>-<architecture> tags are configured to run in privileged mode to support Docker-in-Docker. With these runners, you can build Docker images natively or run multiple containers in your isolated job.",
   "note": "GitLab documents 'privileged mode' only for Docker-in-Docker (container nesting), never mentions /dev/kvm or nested virtualization for any hosted runner (Linux, Windows, macOS, or GPU). Hosted runners run as ephemeral Google Compute Engine VMs / AWS bare-metal Mac instances; GCE nested virtualization is an explicit, non-default instance option that GitLab's docs never say is enabled for the shared hosted-runner fleet, so nested_virt is treated as not offered rather than left null.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://docs.gitlab.com/ci/pipelines/compute_minutes/",
   "quote": "Compute minutes are consumed based on the cost factor of the runner and the duration of the job. Usage is tracked at the project namespace level and counted against included monthly minutes.",
   "note": "granularity: account-only; cost: no; GitLab tracks compute minutes internally for quota enforcement and billing, but exposes usage only via the web dashboard (Billing > Usage) and invoices, not via a REST API or CLI endpoint. There is no programmatic way to retrieve per-job or per-project usage metrics.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [
  {
   "country": "US",
   "state": "VA",
   "city": "Ashburn",
   "provider_region": "us-east1",
   "self_serve": true,
   "choosable": false
  },
  {
   "country": "US",
   "state": "IA",
   "city": "Des Moines",
   "provider_region": "us-central1",
   "self_serve": true,
   "choosable": false
  }
 ],
 "locations_source": "https://docs.gitlab.com/ci/runners/hosted_runners/linux/",
 "locations_quote": "Hosted runners on Linux for GitLab.com run on Google Cloud Compute Engine. Each job gets a fully isolated, ephemeral virtual machine (VM). The default region is us-east1.",
 "locations_checked": "2026-10-01"
}