Blacksmith vs GitLab.com hosted runners

Blacksmith runs GitHub Actions jobs on its own machines, and you switch by changing one runner label. GitLab.com hosted runners run the pipelines of GitLab projects, each job on a fresh VM that ends within 3 hours.

The companies and products

Blacksmith

Blacksmith is a CI service: it runs your GitHub Actions jobs on its own faster, cheaper runners instead of GitHub's.

You change the runner label in your workflow file, and each job runs in a fresh Firecracker microVM that boots in under 3 seconds and is destroyed when the job ends. It adds Docker layer caching and sticky disks that carry chosen folders from one run to the next, plus a Testbox CLI in early beta that lets a local coding agent run commands inside a CI job. It is built for teams that want quicker, cheaper GitHub Actions, not as a general sandbox you drive by API; a separate Sandboxes product is marked coming soon.

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. “78th cheapest of 377” means 77 of the other 376 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 workloadBlacksmith: price rankGitLab.com hosted runners: price rankbochka: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
Agents that build and run whole apps need a kept disk, hosting and forks, which bochka has; Blacksmith and GitLab only run the CI part of that loop.
248th of 367, with limits
$3,607 a month
347th of 367, with limits
$14,454 a month
3rd cheapest of 367
$634 a month
Always-on AI employees
50 machines 24/7 · 2 vCPU / 4 GB
An assistant that lives on its machine all month does not fit either one, because each job starts clean and GitLab cuts jobs off at 3 hours.
78th of 366, with limits
$5,463 a month
353rd of 366, with limits
$21,858 a month
5th cheapest of 366
$657 a month
Code interpreter bursts
100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month
281st of 345, with limits
$488 a month
320th of 345, with limits
$1,896 a month
186th of 345, with limits
$2,000 a month
Sandboxes for your users
300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month
Handing sandboxes to your own users means starting machines from your backend, which bochka does by API and both CI services do only through pipelines.
268th of 361, with limits
$1,563 a month
331st of 361, with limits
$6,133 a month
Cheapest of 361
$209 a month
RL rollouts
1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month
276th of 360, with limits
$7,488 a month
318th of 360, with limits
$29,762 a month
34th of 360, with limits
$2,000 a month
Agent evals
250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month
354th of 364, with limits
$1,188 a month
330th of 364, with limits
$4,758 a month
10th cheapest of 364
$200 a month
CI runners
40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month
Both fit; pick by where your code lives, since Blacksmith runs GitHub Actions jobs and GitLab's runners run GitLab pipelines, while bochka suits CI you drive by API.
78th cheapest of 377
$708 a month
128th cheapest of 377
$2,089 a month
4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
A dev box has to keep its files and stay reachable, but both services delete the machine when the job ends.
180th of 368, with limits
$207 a month
358th of 368, with limits
$805 a month
18th cheapest of 368
$26 a month
Computer-use agents
50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month
Computer-use agents need a screen; both CI services run headless jobs, while bochka streams a 60fps Linux desktop.
243rd of 369, with limits
$1,088 a month
342nd of 369, with limits
$4,278 a month
6th cheapest of 369
$200 a month
Browser-use agents
50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month
131st of 367, with limits
$588 a month
144th of 367, with limits
$2,118 a month
7th cheapest of 367
$200 a month
Scraping & bots (startup scale)
50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month
130th of 346, with limits
$719 a month
143rd of 346, with limits
$2,854 a month
6th cheapest of 346
$90 a month
Mass scraping & bots (undetectable)
1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month
262nd of 338, with limits
$14,613 a month
319th of 338, with limits
$58,429 a month
71st of 338, with limits
$1,800 a month
Parallel red teaming
200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month
64th of 360, with limits
$350 a month
87th of 360, with limits
$1,383 a month
2nd cheapest of 360
$200 a month
GPU eval jobs
10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month
Can't run itCan't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Both have macOS runners on Apple silicon, GitLab's in beta and only on Premium or Ultimate; bochka runs Linux only.
28th of 36, with limits
$1,508 a month
24th of 36, with limits
$1,069 a month
Can't run it

Key features

FeatureBlacksmithGitLab.com hosted runnersbochka
What it isGitHub Actions runners; each machine lives for one workflow jobGitLab CI/CD runners for GitLab.com projects, paid in compute minutesA sandbox API: create, stop, fork and reach full VMs from your code
IsolationFirecracker microVM per job with its own kernelNew VM per job on Google Compute Engine; Linux jobs run in a privileged Docker containerFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts, with root and systemd
How a machine startsA GitHub Actions job, after you change the runner label in your workflowA job in a GitLab project's .gitlab-ci.yml pipelineOne API call, SDK or CLI, from anywhere
How long it livesUntil the job ends, then the microVM is destroyedUp to 3 hours per job, then the VM is deletedUntil you stop it; no session cap on paid plans
What carries over between runsSticky disk folders, up to 5 per job, evicted after 7 days unusedA shared cache (5 GB per archive, removed after 14 days unused) or artifactsThe whole disk, saved every minute and on stop; you can also fork a running sandbox
Nested virtualizationYes on x64 Linux runners, not on ARMNot documented; privileged mode is described for Docker-in-Docker onlyYes, /dev/kvm for Android emulators and VMs
Running many at onceDocs say Blacksmith imposes no concurrency limitsNo published limit; when a group's minutes run out, new jobs stopStarts above 90 a minute are queued, up to 600 an hour on the $2,000 plan
Inbound accessOpt-in debug SSH, only for the user who triggered the job; no ports or URLsNone; inbound traffic is blocked and instance runners have no web terminalSSH, HTTPS URLs for up to 50 ports, raw TCP, dedicated IP
Desktop and computer useHeadless runnersHeadless; macOS runners do not support jobs that need UI interaction60fps Linux desktop with Chromium and computer use
Coding agentsIts own [code]smith agent from Slack, GitHub or a web UI; Testbox CLI in early beta for local agentsDuo Agent Platform runs Claude Code, Codex, Amazon Q and Gemini from issues and merge requests, on Premium and UltimateSeven agents preinstalled, driven from outside with a prompt, steer and events API
Keeping API keys out of the machineGitHub Actions secrets and OIDC tokens available inside the jobGitLab-managed credentials for its Claude and Codex agents only; other secrets enter as CI/CD variablesCredentials proxy for model providers and any HTTPS API; switch a credential to another account when credits run out
Operating systems and GPUsUbuntu x64 and ARM, Windows Server 2025 (beta), macOS on Apple Silicon; no GPUsLinux x64 and Arm64, Windows (beta), macOS on Apple silicon (beta), and a Linux runner with an NVIDIA T4Linux x64, no GPUs
RegionsUS east, US west, Amsterdam and FrankfurtUS (Google Cloud us-east1 by default for Linux)EU only (Germany, Finland, France)
Self-hostingNoOpen-source GitLab Runner on your own machines, with no compute minutes usedNo
Every feature Battleships tracks (43)
FeatureBlacksmithGitLab.com hosted runnersbochka
Full VM (own kernel)YesYesYes
Docker insideYesYesYes
Nested virtualizationYesNoYes
RootYesYesYes
SystemdNoNoYes
Desktop GUINoNoYes
BrowserYesYesYes
Computer-use APINoNoYes
SSHYesNoYes
Persistent diskYesNoYes
Pause/resumeNoNoYes
Automatic snapshotsNoNoYes
Fork/cloneNoNoYes
Live fork (no pause)NoNoYes
Memory forkNoNoNo
Custom image (Docker or snapshot)NoYesYes
≥24 h sessionsYesNoYes
Idle auto-stopYesYesNo
Wake on requestNoNoNo
HTTPS preview URLsNoNoYes
Raw TCP inboundNoNoYes
Public IPv4NoNoNo
Egress allowlistNoNoNo
Secret proxyNoYesYes
Secret proxy for any APINoNoYes
Preinstalled agentsNoYesYes
Agent harness APINoYesYes
MCP serverNoNoNo
GPUNoYesNo
WindowsYesYesNo
Arm64YesYesNo
Self-hostingNoYesNo
BYOCNoNoNo
Open sourceNoYesNo
Scoped API keysNot publishedNot publishedYes
Spend limitsNot publishedNot publishedYes
Usage per sandbox (API)YesNoYes
Audit logsNot publishedYesNo
SSONoYesNo
SOC 2YesYesNo
HIPAANoNoNo
EU data residencyYesNoYes
Zero data retentionNot publishedNot publishedYes

Performance

BlacksmithNot measured
GitLab.com hosted runnersNot measured
bochka26.69 runs/s

There is no comparable CPU measurement for Blacksmith or for GitLab.com hosted runners: neither was part of the same benchmark run. bochka did 26.69 runs per second on the StarSling hpc-sandbox-benchmarks Node.js test 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. Blacksmith and GitLab.com hosted runners have 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.

ScenarioBlacksmith, a monthGitLab.com hosted runners, a monthbochka, 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
$36 · Pay-as-you-go · with limits$119 · Premium · with limits$20 · $20/mo
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$207 · Pay-as-you-go · with limits$805 · Premium · with limits$26 · $20/mo
50 agents in parallel
50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside
$2,364 · Pay-as-you-go · with limits$9,491 · Premium · with limits$317 · $20/mo × 3 seats
Sandboxes for your users
2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once
$663 · Pay-as-you-go · with limits$2,658 · Premium · with limits$200 · $100/mo × 2 seats
1,000 short jobs at once
2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month
$1,488 · Pay-as-you-go · with limits$5,896 · Premium · with limits$2,000 · $2000/mo · with limits

Blacksmith: Blacksmith bills per minute of job time, scaled by vCPU and OS: Ubuntu x64 is $0.004 a minute for 2 vCPU, ARM $0.0025, Windows $0.008 and macOS $0.08 for 6 vCPU, with 3,000 free minutes a month. Sticky disks cost $0.50 per GB a month.

GitLab.com hosted runners: Each job uses compute minutes equal to its run time times a cost factor, from 1 for small Linux up to 12 for the biggest machines. Plans include minutes per group (10,000 on Premium, which is $29 per user a month billed yearly), and extra minutes cost $10 per 1,000, bought ahead.

GitLab.com hosted runners: 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.

Limits in those scenarios

Neither service fits the agent scenarios on this page, because both are CI runners. On Blacksmith only sticky disk folders survive a run, so packages installed elsewhere reset; on GitLab every job ends after 3 hours, nothing on the disk survives, and new jobs stop when a group's minutes run out. Blacksmith's docs say it has no concurrency limit and GitLab publishes none, so the 300 and 1,000 machine scenarios are not confirmed for either, and bochka's $2,000 plan queues starts above 90 a minute for the 1,000-job burst.

ScenarioBlacksmithGitLab.com hosted runnersbochka
One coding agent, workdays
  • different kind of product: CI runner
  • files survive a stop only in sticky disk paths: packages installed elsewhere reset
  • egress price not published
  • Premium: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
  • no persistent disk: files lost when it stops or sleeps
None that bite
One agent that never stops
  • different kind of product: CI runner
  • files survive a stop only in sticky disk paths: packages installed elsewhere reset
  • egress price not published
  • Premium: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
  • no persistent disk: files lost when it stops or sleeps
None that bite
50 agents in parallel
  • different kind of product: CI runner
  • files survive a stop only in sticky disk paths: packages installed elsewhere reset
  • egress price not published
  • how many machines can run at once: limit not published, probably fine at 50 (the typical published limit is 50)
  • Premium: sessions capped at 3 h
  • missing persistent disk
  • different kind of product: CI runner
  • no persistent disk: files lost when it stops or sleeps
None that bite
Sandboxes for your users
  • different kind of product: CI runner
  • not confirmed: how many machines can run at once (you need 300; the typical published limit is 50)
  • egress price not published
  • different kind of product: CI runner
  • not confirmed: how many machines can run at once (you need 300; the typical published limit is 50)
  • egress price not published
None that bite
1,000 short jobs at once
  • different kind of product: CI runner
  • not confirmed: how many machines can run at once (you need 1,000; the typical published limit is 50)
  • egress price not published
  • different kind of product: CI runner
  • not confirmed: how many machines can run at once (you need 1,000; the typical published limit is 50)
  • egress price not published
  • max 2,400 starts/day (needs ~6,667)
  • max 600 starts/hour (needs ~1,000)
  • bursts above 90 starts/min are queued (a burst of 333 takes ~4 min to start)

Which one should you use?

Use Blacksmith when

your code is on GitHub and you want Actions jobs to run faster and cheaper by changing one label, with no concurrency cap.

  • A drop-in for GitHub Actions. If your code and workflows live on GitHub, you switch by changing one runner label and keep everything else.
  • Lower price per minute. Ubuntu x64 costs $0.004 a minute for 2 vCPU, against $0.01 for GitLab's small Linux runner once included minutes run out.
  • No concurrency limit, more regions. Big test matrices start at once with no published cap, on runners in the US east, US west, Amsterdam and Frankfurt.

Use GitLab.com hosted runners when

your code is on GitLab.com, or you want a hosted GPU runner, your own runners free of minutes, or agents working on GitLab issues.

  • Native CI for GitLab projects. For a project on GitLab.com, hosted runners are on by default and run pipelines with caches and artifacts built in.
  • 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.
  • A GPU and agents on issues. Premium and Ultimate add a Linux runner with an NVIDIA T4 and let Claude Code or Codex work on issues and merge requests.

Where bochka fits

Blacksmith and GitLab.com hosted runners are both CI services: a machine exists only while a pipeline job runs. If what you are really running is agents, bochka gives each one its own full VM that you start by API, keep as long as you like and reach from outside.

A machine that stays

Both services wipe the machine after each job, and GitLab stops jobs at 3 hours. Workarounds are sticky disks (5 folders) or a 5 GB cache, so agents keep reinstalling. A bochka disk is saved every minute and can be forked.

Reach in: hosting and a desktop

Blacksmith offers only debug SSH for whoever started the job, and GitLab blocks all inbound traffic, so previewing an agent's app needs a tunnel inside the job. bochka gives HTTPS on 50 ports, raw TCP and a 60fps desktop.

Agents driven from outside, keys kept out

Blacksmith machines start from workflows and GitLab's agents start from issue mentions, with other tokens sitting inside the job. bochka lets you prompt and steer seven preinstalled agents by API, with real keys in a credentials proxy.

Use bochka when your agents need their own machine outside CI: one you start by API, that keeps its disk, runs past 3 hours, hosts what it builds and keeps real API keys out of reach. Compare it one to one: bochka vs Blacksmith and bochka vs GitLab.com hosted runners.

Questions people ask

Is Blacksmith cheaper than GitLab.com hosted runners?

Per minute, yes: Ubuntu x64 on Blacksmith is $0.004 a minute for 2 vCPU, and an extra GitLab minute on a small Linux runner is $0.01. For the CI runners use case the estimate is $708 against $2,089 a month. GitLab plans include minutes, so a small team may stay within them.

Can I use Blacksmith with GitLab?

No. Blacksmith runs GitHub Actions jobs only, started by workflows. For a GitLab project you use GitLab's hosted runners or run the open-source GitLab Runner on your own machines.

Which is faster, Blacksmith or GitLab.com hosted runners?

We have no comparable CPU measurement for either, so we cannot say. bochka did 26.69 runs per second on the same benchmark at 4 vCPU / 8 GB.

Can Blacksmith and GitLab runners run Docker?

Both run Docker. Blacksmith adds a Docker layer cache and supports nested virtualization on x64 Linux runners; GitLab Linux jobs run in a privileged container for Docker-in-Docker, and nested virtualization is not documented.

Do files persist between jobs?

Not on the machine. Blacksmith keeps up to 5 sticky disk folders per job, and GitLab carries files over through a shared cache or artifacts. A bochka sandbox keeps its whole disk, saved every minute and on stop.

Can I run AI agents on Blacksmith or GitLab runners?

Partly. Blacksmith's Testbox CLI, in early beta, lets a local agent run commands in a CI job, and its Sandboxes product is marked coming soon. GitLab's Duo Agent Platform runs Claude Code and Codex as CI jobs that end within 3 hours.

Try bochka

Install the CLI, then run bochka new.

Product preview

More comparisons

Bochka product preview · Pricing, benchmarks and commands are illustrative. Sandbox provisioning is not connected.