bochka vs Buildkite

Buildkite is a CI platform, and its hosted agents are machines that run one pipeline job each and are then destroyed. bochka is built for AI agents that work for hours or days on one full Linux VM, with a disk that persists, a desktop, and coding agents you drive from outside.

Where bochka stands out

One machine that keeps its state

A bochka sandbox runs as long as the work does on paid plans, and its whole disk is saved every minute and on stop, so it starts again with every package and file in place. A Buildkite hosted agent is destroyed after each job, which can last 8 hours on Linux and 4 on macOS.

Coding agents you drive from outside

bochka ships Claude Code, Codex and five other agents in each sandbox, and you drive agents inside from outside with a prompt, steer and events API. The credentials proxy keeps real keys for any HTTPS API out of the machine, and can switch a credential to another account when credits run out.

A full Linux computer, reachable from outside

Every bochka sandbox has root, systemd, Docker and /dev/kvm, a 60fps desktop with Chromium for computer use, and HTTPS URLs on up to 50 ports plus raw TCP. Buildkite hosted agents expose no ports, and their desktop access is for a person debugging a macOS job.

The companies and products

bochka

bochka.xyz 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.

Buildkite

Buildkite is a CI and software delivery platform, and hosted agents are the build machines it runs for you.

You write Buildkite pipelines, and each job runs on a fresh virtual machine that Buildkite starts for that job and destroys when it ends; only cache volumes carry files to the next job. Hosted agents come in Linux and macOS on Apple M4, with Windows in private preview, and you can also run Buildkite's agent on your own machines. It is a CI service, not an agent sandbox, so this page compares the part where they overlap: a machine where an agent or a job does its work.

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 workloadbochka: price rankBuildkite: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
A coding agent that builds a whole app needs the same machine for hours with its files intact; a Buildkite job VM is destroyed when the job ends, and only cache volume paths carry over.
3rd cheapest of 367
$634 a month
43rd of 367, with limits
$11,648 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 a CI job that stops after 8 hours; bochka has no session cap on paid plans.
5th cheapest of 366
$657 a month
351st of 366, with limits
$17,564 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
315th of 345, with limits
$1,587 a month
Sandboxes for your users
300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month
Your users' sandboxes need a URL they can reach; Buildkite hosted agents expose no ports, while bochka gives each sandbox HTTPS on up to 50 ports and raw TCP.
Cheapest of 361
$209 a month
326th of 361, with limits
$4,984 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
316th of 360, with limits
$23,881 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
324th of 364, with limits
$3,884 a month
CI runners
40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month
CI is what Buildkite is built for, with pipelines, cache volumes and test tooling; bochka runs CI jobs on full VMs with Docker and /dev/kvm for Android emulators.
4th cheapest of 377
$86 a month
203rd of 377, with limits
$2,318 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
A dev box has to stay up and keep its installed packages; on Buildkite everything outside cache volumes resets with each job.
18th cheapest of 368
$26 a month
354th of 368, with limits
$715 a month
Computer-use agents
50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month
Buildkite's macOS desktop access is for a person debugging a job, with no API for an agent to click; bochka streams a 60fps Linux desktop with computer use.
6th cheapest of 369
$200 a month
70th of 369, with limits
$3,500 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
142nd of 367, with limits
$1,772 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
142nd of 346, with limits
$2,354 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
317th of 338, with limits
$46,814 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
85th of 360, with limits
$1,184 a month
GPU eval jobs
10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month
Neither fits: all of Buildkite's hosted shapes and all of bochka's are CPU only.
Can't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Only Buildkite fits here: it runs macOS on Apple M4 with Xcode, and bochka runs Linux only.
Can't run it35th of 36, with limits
$2,310 a month

Key features

FeaturebochkaBuildkite
Kind of productAgent sandboxes you create and drive by API, CLI or SDKCI build machines that run jobs from Buildkite pipelines
IsolationFull VM with its own kernel on dedicated AMD Ryzen 9 9950X (Zen 5) hostsA virtual machine per job; Apple Virtualization framework on macOS
How long a machine runsNo session cap on paid plans; you set the time to liveUp to 8 hours per job on Linux and 4 on macOS, longer on request
Files after a runThe whole disk is saved every minute and on stop; a stopped sandbox costs nothingThe VM and its data are destroyed; cache volumes keep chosen paths after successful jobs, best effort, up to 14 days
ForkFork a running sandbox with its diskEach job gets its own copy of the last committed cache volume
Docker, root and nested virtualizationDocker, root, systemd and /dev/kvm on every machineDocker on Linux; macOS has the Docker CLI but no daemon; /dev/kvm not documented
Desktop and computer use60fps Linux desktop with Chromium, computer use and browser control, embeddable streamBrowser-based desktop access to debug a running macOS job; no computer-use API
Reaching the machineHTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv4 or IPv6No exposed ports; a terminal into a running job through Buildkite's UI or bk job ssh
Coding agentsClaude Code, Codex and five more preinstalled, with a prompt, steer and events APIYou install Claude Code in your image or step and run it as a pipeline job
Keeping API keys outCredentials proxy for model providers and any HTTPS API you register; switch a credential to another account when credits run outAnthropic proxy: jobs call it with the job token and Buildkite sets the API key header
Operating systemsLinux onlyLinux (AMD64, ARM64 on Enterprise), macOS on Apple M4 with Xcode, Windows Server 2022 in private preview
Biggest machineUp to 16 vCPU / 32 GB on the $100 plan and aboveLinux up to 8 vCPU / 32 GB on Pro and 64 vCPU / 256 GB on Enterprise; macOS up to 12 vCPU / 56 GB
CI pipelinesNo pipeline service; run CI jobs on a sandbox yourselfFull CI platform with pipelines, test tooling and your own self-hosted agents
RegionsEU only (Germany, Finland, France), with EU data residency and zero data retentionUS East Coast only
Compliance and transparencySOC 2 is in progress. We're open about where we stand: live status and data retention policy.SOC 2
Every feature Battleships tracks (43)
FeaturebochkaBuildkite
Full VM (own kernel)YesYes
Docker insideYesYes
Nested virtualizationYesNo
RootYesNot published
SystemdYesNo
Desktop GUIYesYes
BrowserYesYes
Computer-use APIYesNo
SSHYesYes
Persistent diskYesYes
Pause/resumeYesNo
Automatic snapshotsYesYes
Fork/cloneYesYes
Live fork (no pause)YesNo
Memory forkNoNo
Custom image (Docker or snapshot)YesYes
≥24 h sessionsYesNo
Idle auto-stopNoYes
Wake on requestNoNo
HTTPS preview URLsYesNo
Raw TCP inboundYesNo
Public IPv4NoNo
Egress allowlistNoNo
Secret proxyYesYes
Secret proxy for any APIYesNo
Preinstalled agentsYesNo
Agent harness APIYesNo
MCP serverNoYes
GPUNoNo
WindowsNoYes
Arm64NoYes
Self-hostingNoYes
BYOCNoNo
Open sourceNoNo
Scoped API keysYesNot published
Spend limitsYesNot published
Usage per sandbox (API)YesNo
Audit logsNoNot published
SSONoYes
SOC 2NoYes
HIPAANoNo
EU data residencyYesNo
Zero data retentionYesNot published

Performance

bochka26.69 runs/s
BuildkiteNot measured

We have no comparable measurement for Buildkite hosted agents: they were not part of the StarSling hpc-sandbox-benchmarks run. On that Node.js build-and-test benchmark at 4 vCPU / 8 GB, bochka did 26.69 runs per second on dedicated AMD Ryzen 9 9950X (Zen 5) hosts.

Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Buildkite 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.

Scenariobochka, a monthBuildkite, 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$166 · Pro · with limits
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$26 · $20/mo$715 · Pro · 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$7,677 · Pro · 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,204 · Pro · 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$4,787 · Pro · with limits

bochka: You pick a monthly plan from $20, and all of it becomes usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.

Buildkite: Pro costs $30 per active user a month and includes 4,000 Linux vCPU minutes; after that Linux is $0.004 per vCPU minute and macOS $0.02, metered to the second with no minimums. A 4 vCPU / 16 GB Linux agent comes to $0.96 an hour, and Enterprise pricing is custom.

Limits in those scenarios

The limit that bites most on Buildkite is the job itself: a hosted agent stops after 8 hours on Linux, and everything outside cache volume paths is gone, so the agent that never stops and the coding agent that installs packages have to rebuild each run. Pro shares one pool of 256 Linux vCPU across all running agents, so 1,000 short jobs at once mostly wait in the queue. On bochka the limits are a sandbox count per plan and starts per minute, so the same burst is queued and needs more starts per day than the $2,000 plan allows.

ScenariobochkaBuildkite
One coding agent, workdaysNone that bite
  • different kind of product: CI runner
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
One agent that never stopsNone that bite
  • different kind of product: CI runner
  • sessions end after 8 h: needs restarts to run 24/7
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
50 agents in parallelNone that bite
  • different kind of product: CI runner
  • files survive a stop only in cache volume paths: packages installed elsewhere reset
  • egress price not published
Sandboxes for your usersNone that bite
  • Pro: max 128 concurrent
  • Pro: max 256 vCPU running at once (needs 600)
  • different kind of product: CI runner
  • egress price not published
1,000 short jobs at once
  • 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)
  • Pro: max 128 concurrent
  • Pro: max 256 vCPU running at once (needs 2,000)
  • different kind of product: CI runner
  • egress price not published

Which one should you use?

Use Buildkite when

you need a CI platform with pipelines, macOS on Apple M4 for iOS builds, Windows, or Linux build machines larger than 16 vCPU.

  • macOS on Apple M4, and Windows. Useful if you build iOS or Mac apps: Buildkite runs macOS on Apple M4 with current Xcode, and Windows in preview.
  • A whole CI platform. Useful if you want managed CI: pipelines, test tooling and cache volumes, mixing hosted and your own self-hosted agents.
  • Bigger build machines. Useful for heavy builds: Enterprise Linux shapes go up to 64 vCPU and 256 GB, with ARM64 shapes too.

Use bochka when

your agents work on Linux for hours or days: one full VM that keeps its disk, Docker and /dev/kvm, a 60fps desktop, URLs you can reach, and coding agents you drive from outside.

  • One machine that keeps its state. An agent on Buildkite loses everything outside its cache volumes when the job ends, and those volumes are best effort and only saved after a successful exit. Your code has to rebuild the machine and its context every run.
  • Coding agents you drive from outside. On Buildkite an agent is a pipeline step you start and read through logs, with no way to send it a new instruction mid-run. Its key proxy covers Anthropic only, so other keys sit inside the job.
  • A full Linux computer, reachable from outside. An agent that runs a preview server, an Android emulator or a browser it clicks through has nowhere to show it on a Buildkite agent, and no display API to drive.

Questions people ask

Is bochka cheaper than Buildkite hosted agents?

In the scenarios we priced, yes: one coding agent on workdays comes to $20 a month on bochka and $166 on Buildkite, and one agent running all month to $26 versus $715. 50 agents in parallel come to $317 versus $7,677. For 1,000 short jobs at once neither fits as priced, at $2,000 on bochka and $4,787 on Buildkite.

Can I run Claude Code on Buildkite hosted agents?

Yes, as a pipeline step: you install it in your image or step, and Buildkite's Anthropic proxy lets it call the API with the job token. The run ends when the job ends. On bochka Claude Code is preinstalled, and you prompt and steer it through an API while it works.

How long can a Buildkite hosted agent run?

Up to 8 hours per job on Linux and 4 hours on macOS, and support can allow longer runs. After the job, the machine is destroyed. bochka has no session cap on paid plans.

Do files survive between Buildkite jobs?

Only in cache volumes: paths you declare are saved when a job exits successfully and handed to the next job, on a best-effort basis for up to 14 days. Everything else is deleted with the VM. bochka saves the whole disk every minute and on stop.

Does bochka run macOS like Buildkite?

No. bochka runs Linux VMs on dedicated AMD Ryzen 9 9950X (Zen 5) hosts. If you need macOS with Xcode, Buildkite's Mac hosted agents run it on Apple M4.

Is bochka SOC 2 compliant?

SOC 2 is in progress. We're open about where we stand: live status at status.bochka.xyz and our data retention policy at docs.bochka.xyz/data-retention. Buildkite maintains a SOC 2 Type II report.

Start a sandbox

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.