boat vs GitLab.com hosted runners
GitLab.com hosted runners give each CI job a fresh VM that is deleted when the job ends, at most 3 hours later. boat gives each agent a full VM that keeps its disk, runs as long as you want and can be reached from outside.
Where boat stands out
A machine that stays
A boat sandbox keeps its disk. It is saved every minute and when it stops, a stopped sandbox costs nothing, and paid plans have no session cap. You can also fork a running sandbox to try two ideas from the same state.
Reach it from outside
You can SSH into a boat sandbox, open HTTPS URLs on up to 50 ports, take raw TCP and watch its desktop at 60fps. An agent can run a dev server or an app, and you, a test or a user can use it while it runs.
Agents you drive from outside, keys kept out
Claude Code, Codex and five other agents come preinstalled, and you prompt, steer and follow them through one API from any program, not only from issues and merge requests. Real API keys for model providers and any other HTTPS API stay in a credentials proxy outside the sandbox.
The companies and products
boat
boat.dev runs sandboxes for AI agents: each one is a full Linux VM with its own kernel.
You start a machine with one command or one API call, then SSH in, run Docker, open a desktop, or let a built-in agent (Claude Code, Codex, OpenCode and others) work in it. The disk stays between sessions, and a stopped sandbox costs nothing.
- Isolation
- Full VM per sandbox, own kernel
- Regions
- EU: Germany, Finland, France
GitLab.com hosted runners
GitLab.com hosted runners are the machines that run GitLab CI/CD jobs for projects on GitLab.com, paid for in compute minutes.
This is a CI service, not a sandbox API. Each job gets a new VM on Google Cloud (Linux and Windows) or on AWS Mac hardware (macOS), with passwordless sudo, and the VM is deleted right after the job. It is built for building, testing and deploying the code in a GitLab project, and GitLab's Duo Agent Platform also runs Claude Code and Codex agents as CI/CD jobs on these runners.
Which use cases each one fits
For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “3rd cheapest of 367” means 2 of the other 366 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.
| Use case and its workload | boat: price rank | GitLab.com hosted runners: price rank |
|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month A software factory needs agents that keep their checkout, Docker cache and services between tasks, which a fresh 3-hour CI job does not give you. | 3rd cheapest of 367 $634 a month | 347th of 367, with limits $14,454 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB An assistant that lives on its machine all month cannot fit in jobs that end after 3 hours and start from a clean VM. | 5th cheapest of 366 $657 a month | 353rd of 366, with limits $21,858 a month |
| Code interpreter bursts 100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month | 186th of 345, with limits $2,000 a month | 320th of 345, with limits $1,896 a month |
| Sandboxes for your users 300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month Hosted runners take no inbound traffic and run only jobs from GitLab pipelines, so they are not built to hand machines to your own users. | Cheapest of 361 $209 a month | 331st of 361, with limits $6,133 a month |
| RL rollouts 1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month | 34th of 360, with limits $2,000 a month | 318th of 360, with limits $29,762 a month |
| Agent evals 250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month | 10th cheapest of 364 $200 a month | 330th of 364, with limits $4,758 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month Both fit; GitLab's runners are the native choice for a GitLab project's pipelines, while boat suits CI that needs a warm disk between runs or jobs longer than 3 hours. | 4th cheapest of 377 $86 a month | 128th cheapest of 377 $2,089 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB A dev box needs SSH, open ports and a disk that stays; GitLab.com instance runners have none of these. | 18th cheapest of 368 $26 a month | 358th of 368, with limits $805 a month |
| Computer-use agents 50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month The runners are headless, while boat gives each agent a desktop streamed at 60fps with computer use built in. | 6th cheapest of 369 $200 a month | 342nd of 369, with limits $4,278 a month |
| Browser-use agents 50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month | 7th cheapest of 367 $200 a month | 144th of 367, with limits $2,118 a month |
| Scraping & bots (startup scale) 50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month | 6th cheapest of 346 $90 a month | 143rd of 346, with limits $2,854 a month |
| Mass scraping & bots (undetectable) 1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month | 71st of 338, with limits $1,800 a month | 319th of 338, with limits $58,429 a month |
| Parallel red teaming 200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month | 2nd cheapest of 360 $200 a month | 87th of 360, with limits $1,383 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month GitLab offers a Linux runner with an NVIDIA T4 on Premium and Ultimate; boat has no GPUs. | Can't run it | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month GitLab has hosted macOS runners on Apple silicon in beta for Premium and Ultimate; boat runs Linux only. | Can't run it | 24th of 36, with limits $1,069 a month |
Key features
Every feature Battleships tracks (43)
| Feature | boat | GitLab.com hosted runners |
|---|---|---|
| Full VM (own kernel) | Yes | Yes |
| Docker inside | Yes | Yes |
| Nested virtualization | Yes | No |
| Root | Yes | Yes |
| Systemd | Yes | No |
| Desktop GUI | Yes | No |
| Browser | Yes | Yes |
| Computer-use API | Yes | No |
| SSH | Yes | No |
| Persistent disk | Yes | No |
| Pause/resume | Yes | No |
| Automatic snapshots | Yes | No |
| Fork/clone | Yes | No |
| Live fork (no pause) | Yes | No |
| Memory fork | No | No |
| Custom image (Docker or snapshot) | Yes | Yes |
| ≥24 h sessions | Yes | No |
| Idle auto-stop | No | Yes |
| Wake on request | No | No |
| HTTPS preview URLs | Yes | No |
| Raw TCP inbound | Yes | No |
| Public IPv4 | No | No |
| Egress allowlist | No | No |
| Secret proxy | Yes | Yes |
| Secret proxy for any API | Yes | No |
| Preinstalled agents | Yes | Yes |
| Agent harness API | Yes | Yes |
| MCP server | No | No |
| GPU | No | Yes |
| Windows | No | Yes |
| Arm64 | No | Yes |
| Self-hosting | No | Yes |
| BYOC | No | No |
| Open source | No | Yes |
| Scoped API keys | Yes | Not published |
| Spend limits | Yes | Not published |
| Usage per sandbox (API) | Yes | No |
| Audit logs | No | Yes |
| SSO | No | Yes |
| SOC 2 | No | Yes |
| HIPAA | No | No |
| EU data residency | Yes | No |
| Zero data retention | Yes | Not published |
Performance
There is no comparable measurement for GitLab.com hosted runners in the hpc-sandbox-benchmarks CPU test. boat did 26.69 runs per second on it at 4 vCPU / 8 GB, on dedicated AMD Ryzen 9 9950X hosts.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. GitLab.com hosted runners has no published run in this suite yet, so there is no like-for-like number to compare.
Pricing in five scenarios
Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.
| Scenario | boat, a month | GitLab.com hosted runners, a month |
|---|---|---|
| One coding agent, workdays 4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days | $20 · $20/mo | $119 · Premium · with limits |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $26 · $20/mo | $805 · Premium · with limits |
| 50 agents in parallel 50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside | $317 · $20/mo × 3 seats | $9,491 · Premium · with limits |
| Sandboxes for your users 2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once | $200 · $100/mo × 2 seats | $2,658 · Premium · with limits |
| 1,000 short jobs at once 2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month | $2,000 · $2000/mo · with limits | $5,896 · Premium · with limits |
boat: Plans start at $20 a month, and the whole fee is usage credit. You pay per second while a sandbox runs, and a stopped sandbox costs nothing and keeps its disk.
GitLab.com hosted runners: Each job uses compute minutes equal to its run time times a cost factor: 1 for small Linux, 2 for medium, up to 12 for the biggest Linux and macOS machines. Plans include monthly minutes per group (Premium is $29 per user a month, billed yearly), and extra minutes cost $10 per 1,000, bought ahead of time.
Limits in those scenarios
GitLab.com hosted runners do not fit any of the five scenarios as a sandbox: they are CI runners, every job ends after 3 hours, and nothing on the disk survives to the next job. When a group's minutes run out, new jobs stop until you buy more or the month resets. GitLab publishes no limit on how many runner VMs run at once, so the 300 and 1,000 machine scenarios are not confirmed, and boat's $2,000 plan queues starts above 90 a minute for the 1,000-job burst.
| Scenario | boat | GitLab.com hosted runners |
|---|---|---|
| One coding agent, workdays | None that bite |
|
| One agent that never stops | None that bite |
|
| 50 agents in parallel | None that bite |
|
| Sandboxes for your users | None that bite |
|
| 1,000 short jobs at once |
|
|
Which one should you use?
Use GitLab.com hosted runners when
you build, test and deploy a GitLab project, especially for macOS, Windows or Arm64 builds, or when you want Claude Code or Codex working on your GitLab issues and merge requests.
- Native CI for GitLab projects. For building and testing a GitLab project, these runners work from the first pipeline with no extra service to wire up.
- macOS, Windows, Arm64 and a GPU. Teams that build for Apple, Windows or Arm64, or need a T4 GPU in CI, get a hosted runner for each.
- Your own runners, free of minutes. You can run the open-source GitLab Runner on your own machines, and those jobs use no compute minutes.
Use boat when
an agent needs its own machine that keeps its disk, runs past 3 hours, takes inbound traffic, shows a desktop and keeps real API keys out of reach.
- A machine that stays. On GitLab.com every job starts on a clean VM and is cut off at 3 hours, so an agent reinstalls its tools and reclones the repo each time, and the shared cache tops out at 5 GB per archive.
- Reach it from outside. GitLab blocks all inbound traffic to hosted runners and offers no web terminal on them, so a preview, a webhook or a live look at the agent needs a third-party tunnel inside the job.
- Agents you drive from outside, keys kept out. GitLab keeps model keys out only for its managed Claude and Codex agents. Any other token arrives as a CI/CD variable inside the VM the agent controls, where one prompt injection can read it.
Questions people ask
Can I use GitLab CI runners as a sandbox for AI agents?
For agent work on a GitLab project, yes: the Duo Agent Platform runs Claude Code and Codex as CI/CD jobs on these runners. But each job is a fresh VM that ends within 3 hours, takes no inbound traffic and is deleted afterwards.
Is boat cheaper than GitLab.com hosted runners?
In the five agent scenarios on this page boat costs less, but GitLab's runners do not fit any of them, because they run 3-hour CI jobs. For plain CI on a GitLab project, the minutes included in your plan can make it the cheaper choice.
How long can a job run on GitLab.com hosted runners?
Up to 3 hours, whatever timeout the project sets. A boat sandbox has no session cap on paid plans.
Do files persist between GitLab CI jobs?
Not on the runner. Each job gets a new VM that is deleted right after, and files carry over only through the shared cache or artifacts. A boat sandbox keeps its disk, saves it every minute and can be stopped and started again.
Can I SSH into a GitLab hosted runner?
No. GitLab blocks inbound traffic to hosted runners, and its interactive web terminal only works on runners you host yourself. You can SSH into a boat sandbox and open HTTPS URLs on up to 50 ports.
Is boat SOC 2 compliant?
SOC 2 is in progress. We're open about where we stand: live status at status.ascii.dev and our data retention policy at docs.boat.dev/data-retention.
Start a sandbox
Install the CLI, then run boat new.
7-day free trial
More comparisons
- boat vs Bitrise
- boat vs Buildkite
- boat vs Blacksmith
- boat vs CircleCI
- boat vs GitHub Actions
- boat vs Codemagic
- boat vs Depot
- boat vs WarpBuild
- boat vs E2B
- boat vs Daytona
- boat vs Modal
- boat vs Vercel Sandbox
- GitHub Actions vs GitLab.com hosted runners
- CircleCI vs GitLab.com hosted runners
- Blacksmith vs GitLab.com hosted runners
- Depot vs GitLab.com hosted runners
- WarpBuild vs GitLab.com hosted runners
- Buildkite vs GitLab.com hosted runners
- GitLab.com hosted runners vs Bitrise
- GitLab.com hosted runners vs Codemagic