CI and test infrastructure / RunsOn alternative

A RunsOn alternative for work beyond a CI job

RunsOn runs GitHub Actions jobs on a customer’s AWS infrastructure. Its sticky disks can preserve selected data across fresh runners, and warm pools reduce startup latency. A job runner with retained cache mounts has a different state boundary from a returning agent’s complete writable operating system.

Reviewed 2026-10-19 · Published by the Sandbox0 team

When RunsOn fits

RunsOn fits GitHub Actions workflows needing customer-controlled AWS runner infrastructure, EC2 choices and existing CI integrations. Its licenses and caches can remain useful for CI even when a separate agent runtime handles longer-lived work.

When to consider Sandbox0

Choose Sandbox0 for compatible Linux agents needing full writable RootFS continuity, automatic online growth and supported files while compute stays paused. Port required CI behavior explicitly rather than assuming a Linux sandbox implements GitHub Actions.

Capabilities

RunsOn and Sandbox0: what persists?

Feature comparison with documentation and verification status
Environment and runtime lifetimeRunsOnNot established in this reviewSandbox0ttl and hard_ttl default to 0 (disabled). Configure idle pause and deletion policies for the same persistent sandbox identity; an idle running sandbox still accrues compute charges.Read documentation →
Persistent filesRunsOnSticky EBS cache mounts can retain selected data through clean snapshots, with lineage, cleanup and job-type constraints.View evidence ↗Sandbox0The writable RootFS survives successful checkpoints, including software, system configuration, dependencies, and user data.Read documentation →
Whole RootFSRunsOnThe retained sticky mount is selected cache/data, while each runner starts its job environment separately.View evidence ↗Sandbox0Persistence extends beyond /workspace to paths such as /usr/local, /etc, and /home. Runtime tmpfs and virtual filesystems are excluded.Read documentation →
Release compute, keep stateRunsOnPre-job warm and stopped instances are standby capacity, not a documented running-job checkpoint lifecycle.View evidence ↗Sandbox0Pause compute between tasks; resume on available capacity. Default resume starts fresh processes from the saved filesystem.Read documentation →
Memory and process stateRunsOnClean sticky-disk snapshots retain mounted disk data, not job RAM or processes.View evidence ↗Sandbox0Experimental memory checkpoints can preserve compatible process state. Use memory: true on both pause and resume on a compatible deployment. A filesystem checkpoint alone does not preserve running processes.Read documentation →

Online RootFS growth

On growth-enabled images, Sandbox0 automatically expands the writable RootFS as free space runs low, within a configured sparse logical ceiling up to 64 TiB. Agent processes keep running. Growth is enabled in the qualified Cloud region; confirm activation for other regions. Existing images and snapshots retain their captured storage geometry. The ceiling is logical capacity, not preallocated host disk.

Sticky-disk capacity and runner sizing apply to CI infrastructure and selected caches. They do not establish automatic online growth of an entire durable per-agent RootFS.

Files while compute is paused

Sandbox0's Files API reads persistent files without resuming compute. Filesystem-only pauses also permit edits; retained-memory pauses are read-only and reject mutations with 409. SSH, SFTP, file watching, and runtime-only mounts require running compute.

See paused file operations →

Sticky disks retain a dedicated mount, not every root path

Sticky disks use an EBS-backed mount at /mnt/runs-on/stickydisk on Linux or C:\runs-on\stickydisk on Windows. Snapshots advance after clean unmount, including qualifying failed or canceled jobs. Spot interruption can leave the last clean cut. Lineage, repository, Git reference, OS and architecture affect reuse; idle lineages are removed after ten days.

Host-job cache support and pre-job warm capacity have limits

Sticky caching does not support container jobs. Warm pools keep hot or stopped instances ready before a job starts; they do not establish pause/resume of an executing agent job. Hot instances incur compute charges, and stopped instances still retain billable EBS.

The annual license is separate from AWS resources

Starter, Growth and Scale use published monthly job bands, but these bands are not hard execution caps. Short spikes do not automatically force a plan change. The license covers the company’s owned GitHub organizations and AWS accounts; compute, EBS, snapshots and related AWS charges are separate.

Pricing

Compare billing models, then price your workload

CPU allocation, memory, billing minimums, disk, plan fees, and supported workload differ. These meters are not equal-performance machine quotes. Confirm region, resource units, and included allowances before estimating a total.

RunsOn

Pricing reviewed 2026-10-19

Starter annual license
€300/year
Published band: fewer than 50,000 jobs/month.
Rate source ↗
Growth annual license
€900/year
Published band: fewer than 200,000 jobs/month.
Rate source ↗
Scale annual license
€1,800/year
Published band: fewer than 500,000 jobs/month.
Rate source ↗
AWS infrastructure
Separate at-cost resource charges
Compute, EBS, snapshots and selected performance settings.
Rate source ↗

These EUR license prices are annual payments, not monthly AWS compute bundles. Job bands are not hard caps. Conditional noncommercial, open-source and nonprofit use can qualify for a free license with a public link. Spot cost calculators are estimates, not guaranteed rates.

Check current RunsOn pricing ↗

Sandbox0

$0.015/GiB-hour compute (billed by the second at approximately $0.000004167/GiB-second), plus $0.02/GiB-month of retained incremental RootFS and memory checkpoint data. Shared base images and platform recovery retention are excluded; paused sandboxes accrue storage charges only.

Compute / GiB-hour
$0.015
Retained data / GiB-month
$0.02
Paused compute
$0.00

A 4 GiB agent, 100 running hours

$6.00 compute

4 GiB × 100 hours, billed by the second. Keeping 20 GiB of billable incremental data for a full billing month adds $0.40. CPU is derived from memory by the platform; choose a tier that fits your workload.

Understand storage billing →

Before migrating from RunsOn

  1. Inventory GitHub Actions jobs, customer AWS permissions, sticky paths, cache lineages and container-job usage.
  2. Retain required CI runners and move compatible long-lived Linux agent work with verified toolchains and files.
  3. Test complete system retention, growth and paused files separately from CI correctness and annual license plus AWS costs.

Common questions

Is Sandbox0 a drop-in RunsOn replacement?

Evaluate API compatibility and product scope. These products serve different core workflows, so a change may require a different architecture.

Does keeping files also keep a running agent?

Filesystem state and volatile process state are separate. Sandbox0 requires explicit compatible memory checkpoints to preserve running processes; its default filesystem resume starts fresh processes.

Sources and review scope

The Boat team's Battleships directory is the discovery source. References below describe the product and plan discussed on this page. Check current availability, regional terms and billing units before migrating. Where the cited material does not establish a capability or price, the comparison identifies that uncertainty.

Related comparisons