{
  "slug": "cloud-first-space-time",
  "question": "How long does a Space take to start in your own cloud?",
  "answer": "From a client Mac, a Space on a new cloud machine ran its first command 105 s after the request on AWS, 194 s on Google Cloud and 164 s on Hetzner (p50, n = 10 each, 2026-10-24). On a machine already running it took 2.03 s on AWS and 3.78 s on Hetzner (p50, n = 12 each, 2026-10-25).",
  "status": "measured",
  "url": "https://cua.ai/benchmarks/cloud-first-space-time",
  "csv": "https://cua.ai/benchmarks/cloud-first-space-time.csv",
  "markdown": "https://cua.ai/benchmarks/cloud-first-space-time.md",
  "group": "Start",
  "series": [
    {
      "label": "AWS, new machine",
      "run": {
        "run": "2026-10-24/result-aws",
        "schema": "cua.bench-result/v1",
        "bench": "cloud-start.aws",
        "slug": "cloud-first-space-time",
        "metric": "create_to_first_exec_ms",
        "value": 105291.2,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 105291.2,
          "p90": 108458.7,
          "p95": 111094.6,
          "p99": 113203.4,
          "min": 101927.1,
          "max": 113730.6
        },
        "extra": {
          "attempts": 10,
          "failed": 0,
          "mean_ms": 105507,
          "create_ms_p50": 102396.8,
          "exec_ms_p50": 2096.9
        },
        "samples_csv": "samples-aws.csv",
        "measured_at": "2026-10-24T19:46:00Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
        },
        "environment": {
          "kind": "container (Docker on a new cloud VM, one VM per Space)",
          "cloud": "aws",
          "region": "us-west-2",
          "machine_type": "t4g.medium",
          "usd_per_hour_listed_by_cua": "0.0419",
          "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
          "warm_host": false,
          "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
          "load_avg_before": 1.46,
          "other_vms": "other sessions' VMs on the client Mac (not on the path)"
        },
        "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect aws` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on aws --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect aws --profile <aws-profile> --region us-west-2 --ttl-hours 2\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py aws 5 cold$b-aws; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
        "caveats": [
          "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
          "The machine type is the one cua 0.9.0 picks for the default `linux` image: t4g.medium."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "Google Cloud, new machine",
      "run": {
        "run": "2026-10-24/result-gcp",
        "schema": "cua.bench-result/v1",
        "bench": "cloud-start.gcp",
        "slug": "cloud-first-space-time",
        "metric": "create_to_first_exec_ms",
        "value": 194345.8,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 194345.8,
          "p90": 216966.7,
          "p95": 230354.2,
          "p99": 241064.2,
          "min": 167806.4,
          "max": 243741.7
        },
        "extra": {
          "attempts": 10,
          "failed": 0,
          "mean_ms": 193385.6,
          "create_ms_p50": 191726.1,
          "exec_ms_p50": 2957.5
        },
        "samples_csv": "samples-gcp.csv",
        "measured_at": "2026-10-24T19:46:00Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
        },
        "environment": {
          "kind": "container (Docker on a new cloud VM, one VM per Space)",
          "cloud": "gcp",
          "region": "us-west1 (zone us-west1-a)",
          "machine_type": "e2-medium",
          "usd_per_hour_listed_by_cua": "~0.04 (cua cloud status)",
          "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
          "warm_host": false,
          "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
          "load_avg_before": 1.46,
          "other_vms": "other sessions' VMs on the client Mac (not on the path)"
        },
        "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect gcp` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on gcp --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ngcloud auth login   # cua uses `gcloud auth print-access-token`\ncua cloud connect gcp --project <project> --region us-west1 --ttl-hours 2\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py gcp 5 cold$b-gcp; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
        "caveats": [
          "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
          "The machine type is the one cua 0.9.0 picks for the default `linux` image: e2-medium."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "Hetzner, new machine",
      "run": {
        "run": "2026-10-24/result-hetzner",
        "schema": "cua.bench-result/v1",
        "bench": "cloud-start.hetzner",
        "slug": "cloud-first-space-time",
        "metric": "create_to_first_exec_ms",
        "value": 163662.1,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 163662.1,
          "p90": 182470.7,
          "p95": 184113,
          "p99": 185426.8,
          "min": 103319.4,
          "max": 185755.2
        },
        "extra": {
          "attempts": 10,
          "failed": 0,
          "mean_ms": 151295.4,
          "create_ms_p50": 158542.5,
          "exec_ms_p50": 3257.9
        },
        "samples_csv": "samples-hetzner.csv",
        "measured_at": "2026-10-24T19:46:00Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
        },
        "environment": {
          "kind": "container (Docker on a new cloud VM, one VM per Space)",
          "cloud": "hetzner",
          "region": "fsn1 (Falkenstein, DE)",
          "machine_type": "cx23 (2 vCPU x86, 4 GB)",
          "usd_per_hour_listed_by_cua": "cx23 $0.0104/h + primary IPv4 $0.0010/h (Hetzner API, 2026-10-24)",
          "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
          "warm_host": false,
          "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
          "load_avg_before": 1.46,
          "other_vms": "other sessions' VMs on the client Mac (not on the path)"
        },
        "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect hetzner` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on hetzner --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect hetzner --token-stdin --region fsn1 --ttl-hours 2 < token\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py hetzner 5 cold$b-hetzner; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
        "caveats": [
          "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
          "Hetzner bills each started hour, so each sample cost an hour of cx23 plus IPv4 ($0.0114).",
          "The client is in California and the server in Germany, so relay round trips cross the Atlantic; server boot and image pull dominate."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "AWS, machine running",
      "run": {
        "run": "2026-10-25/result-aws-warm",
        "schema": "cua.bench-result/v1",
        "bench": "cloud-start.aws-warm-host",
        "slug": "cloud-first-space-time",
        "metric": "create_to_first_exec_ms",
        "value": 2026.4,
        "unit": "ms",
        "stat": "p50",
        "n": 12,
        "percentiles": {
          "p50": 2026.4,
          "p90": 3993.3,
          "p95": 4214.2,
          "p99": 4335.4,
          "min": 668.7,
          "max": 4365.7
        },
        "extra": {
          "attempts": 12,
          "failed": 0,
          "mean_ms": 2233.3,
          "create_ms_p50": 1949.7,
          "exec_ms_p50": 78.6
        },
        "samples_csv": "samples-aws-warm.csv",
        "measured_at": "2026-10-25T01:08:26Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
        },
        "environment": {
          "kind": "container (gVisor on an elastic pool host)",
          "cloud": "aws",
          "region": "us-west-2",
          "machine_type": "pool host c7g.2xlarge (8 vCPU, 16 GiB), $0.3016/h per cua",
          "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`, already pulled on the host)",
          "warm_host": true,
          "autoscale": "on, cap $0.40/h, host added and pinned with `cua cloud hosts add`",
          "load_avg_before": 3.08,
          "other_vms": "other sessions' VMs on the client Mac (not on the path)"
        },
        "method": "Released cua 0.9.0, isolated signed-in CUA_HOME, daemon `cua daemon start --foreground`. `cua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 3` (joined in ~70 s; not timed). Two warm-up Spaces pulled the image first (not counted). Serial, n=12. Per sample: t0 before `cua spaces create linux --on aws --instance-type c7g.2xlarge --name cb-warm-aws-<i> --json`; value = when `cua sb exec <ref from create> -- echo ok` has returned 'ok'. Then `cua spaces delete --force` (not timed).",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect aws --profile <aws-profile> --region us-west-2\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 3   # wait until `cua cloud hosts ls` says joined\ncua spaces create linux --on aws --instance-type c7g.2xlarge --name w0 --json && cua spaces delete w0 --force   # image pull\nCUA_BENCH_SPACES=1 python3 cloud_start.py aws 12 warm-aws --instance-type c7g.2xlarge\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
        "caveats": [
          "The first command uses the Space reference that create returns.",
          "The client is on a home network in California; create and exec go through relay.cua.ai to us-west-2."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "Hetzner, machine running",
      "run": {
        "run": "2026-10-25/result-hetzner-warm",
        "schema": "cua.bench-result/v1",
        "bench": "cloud-start.hetzner-warm-host",
        "slug": "cloud-first-space-time",
        "metric": "create_to_first_exec_ms",
        "value": 3784.6,
        "unit": "ms",
        "stat": "p50",
        "n": 12,
        "percentiles": {
          "p50": 3784.6,
          "p90": 33477.7,
          "p95": 36321.9,
          "p99": 36390.7,
          "min": 2253.5,
          "max": 36407.9
        },
        "extra": {
          "attempts": 12,
          "failed": 0,
          "mean_ms": 9543.9,
          "create_ms_p50": 3553.4,
          "exec_ms_p50": 229.7
        },
        "samples_csv": "samples-hetzner-warm.csv",
        "measured_at": "2026-10-25T01:29:08Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
        },
        "environment": {
          "kind": "container (gVisor on an elastic pool host)",
          "cloud": "hetzner",
          "region": "fsn1",
          "machine_type": "pool host cax31 (8 vCPU arm64, 16 GB), $0.0410/h per cua (cax31 $0.0400 + IPv4 $0.0010, Hetzner API)",
          "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`, already pulled on the host)",
          "warm_host": true,
          "autoscale": "on, cap $0.40/h, host added and pinned with `cua cloud hosts add --provider hetzner --type cax31 --region fsn1`",
          "load_avg_before": 3.08,
          "other_vms": "other sessions' VMs on the client Mac (not on the path)"
        },
        "method": "Released cua 0.9.0, isolated signed-in CUA_HOME, daemon `cua daemon start --foreground`. `cua cloud hosts add --provider hetzner --type cax31 --region fsn1 --ttl-hours 3` (joined in ~2 min; not timed). Two warm-up Spaces pulled the image first (not counted). Serial, n=12. Per sample: t0 before `cua spaces create linux --on hetzner --instance-type cax31 --name cb-warm-hetzner-<i> --json`; value = when `cua sb exec <ref from create> -- echo ok` has returned 'ok'. Then `cua spaces delete --force` (not timed).",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect hetzner --token-stdin --region fsn1 < token\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider hetzner --type cax31 --region fsn1 --ttl-hours 3   # wait until `cua cloud hosts ls` says joined\ncua spaces create linux --on hetzner --instance-type cax31 --name w0 --json && cua spaces delete w0 --force   # image pull\nCUA_BENCH_SPACES=1 python3 cloud_start.py hetzner 12 warm-hetzner --instance-type cax31\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
        "caveats": [
          "Bimodal: 2 of 12 creates took about 36 s, the rest 2 to 8 s, on an otherwise idle host. The cause was not diagnosed.",
          "The client is in California and the host in Germany; create and exec go through relay.cua.ai (exec about 230 ms)."
        ],
        "sources": [],
        "status": "measured"
      }
    }
  ]
}
