CircleCI vs Ubicloud
CircleCI is a CI service: each job runs on a fresh container or VM, stops after 1 to 5 hours depending on the plan, and is thrown away. Ubicloud is an open source cloud that rents plain Linux VMs that keep running and keep their disk, plus managed GitHub Actions runners, Postgres and Kubernetes.
The companies and products
CircleCI
CircleCI is a CI and CD platform that runs your pipeline jobs on machines it hosts, or on runners you host.
You describe jobs in a config file, and each job runs on a fresh Docker container or a machine VM (Linux, Arm, Windows, macOS on Apple M4 Pro, or GPU on Scale), then the machine is discarded. Files move between jobs only through caches, workspaces and artifacts. It is a CI service, not an agent sandbox, so this page compares where they overlap: a machine where a job or an agent does its work. CircleCI also has Chunk, a toolkit that starts its own agent tasks in CircleCI Cloud from a prompt.
Ubicloud
Ubicloud is an open source cloud that runs VMs, managed Postgres, Kubernetes and GitHub Actions runners on leased bare-metal servers.
You rent Linux VMs (Standard with dedicated CPU, or cheaper Burstable with shared CPU) from Ubicloud's managed service, or run the same AGPL code on your own servers. Around the VMs it offers private subnets, an inbound firewall, load balancers, managed PostgreSQL, Kubernetes, GPU VMs, inference endpoints and cheap GitHub Actions runners. It is general infrastructure, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine.
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. “136th cheapest of 377” means 135 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 workload | CircleCI: price rank | Ubicloud: price rank | bochka: 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 one machine for hours; a CircleCI job stops after 3 hours on Performance, a Ubicloud VM keeps running but starts as an empty OS image, and bochka comes with agents and snapshots built in. | 333rd of 367, with limits $8,692 a month | 126th of 367, with limits $1,136 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 a CircleCI job with a 5 hour ceiling even on Scale; a Ubicloud VM can stay up, but you build the agent setup yourself. | 340th of 366, with limits $13,137 a month | 154th of 366, with limits $1,139 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 | 285th of 345, with limits $572 a month | 59th of 345, with limits $52 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 CircleCI jobs expose no ports and Performance runs at most 80 at once; Ubicloud VMs have a public IP but need a vCPU quota raise for 300 sandboxes, and bochka gives each sandbox HTTPS on up to 50 ports. | 316th of 361, with limits $3,702 a month | 53rd of 361, with limits $390 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 | 310th of 360, with limits $17,882 a month | 234th of 360, with limits $1,560 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 | 318th of 364, with limits $2,877 a month | 31st cheapest of 364 $624 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 CircleCI is a full CI platform with pipelines, caches and test splitting, while Ubicloud sells cheap GitHub Actions runners billed per minute of job time; bochka runs CI jobs on general sandboxes with Docker and /dev/kvm. | 136th cheapest of 377 $4,302 a month | 28th cheapest of 377 $300 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 stay up and keep what you installed, which a Ubicloud Standard VM does and a CircleCI job does not; bochka also keeps its disk, with snapshots every minute. | 197th of 368, with limits $508 a month | 67th cheapest of 368 $91 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 Neither has a desktop to drive: CircleCI jobs run headless, and on Ubicloud you install the desktop and browser yourself; bochka streams a 60fps desktop with Chromium and computer use. | 320th of 369, with limits $2,589 a month | 132nd of 369, with limits $312 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 | 116th of 367, with limits $1,293 a month | 188th of 367, with limits $156 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 | 70th cheapest of 346 $860 a month | 165th of 346, with limits $78 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 | 274th of 338, with limits $17,532 a month | 60th of 338, with limits $1,573 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 | 80th of 360, with limits $852 a month | 129th of 360, with limits $81 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 Only Ubicloud is priced here: it rents Nvidia GPU VMs on request, CircleCI's GPU classes sit on its custom-priced Scale plan, and bochka has no GPUs. | Can't run it | 93rd of 98, with limits $795 a month | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month Only CircleCI can do this: it runs macOS on Apple M4 Pro with Xcode, while Ubicloud and bochka run Linux only. | 34th of 36, with limits $2,262 a month | Can't run it | Can't run it |
Key features
| Feature | CircleCI | Ubicloud | bochka |
|---|---|---|---|
| Kind of product | CI and CD platform: jobs started by pipelines from a config file | General cloud: VMs you set up yourself, plus Postgres, Kubernetes and GitHub Actions runners | Agent sandboxes you create and drive by API, CLI or SDK |
| CI | Full CI service with pipelines, caches, workspaces, test splitting, orbs and self-hosted runners | Managed GitHub Actions runners, x64 and arm64, billed per minute of job time | No pipeline service; run CI jobs on a sandbox yourself |
| Isolation | Containers on the Docker executor; a fresh VM per job on machine, Windows and macOS executors | Every VM is a full KVM guest (Cloud Hypervisor) with its own kernel | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X (Zen 5) hosts |
| How long a machine runs | 1 hour per job on Free, 3 on Performance, 5 on Scale | No time limit; a VM runs until you stop or delete it | No session cap on paid plans; you set the time to live |
| Files and stopping | The machine is discarded; you copy chosen paths out with caches, workspaces and artifacts | The disk stays, but a stopped VM keeps billing as if it were running | The whole disk is saved every minute and on stop; a stopped sandbox costs nothing |
| Copying a machine | No fork of a job | Stop the VM, capture a machine image (single disk up to 40 GiB), then boot new VMs from it | Fork a running sandbox in one call (disk, no memory) |
| Docker, root and nested virtualization | Docker and sudo on machine executors; nested virtualization documented on the Android machine image | Root over SSH, so Docker installs like on any Linux VM; nested virtualization is not documented | Docker, root, systemd and /dev/kvm on every machine |
| Reaching the machine | No exposed ports; rerun a job with SSH, open for 10 minutes after it ends, for the user who started it | Free public IPv6, public IPv4 for $3 a month; for HTTPS the VM runs TLS itself | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv4 or IPv6 |
| Desktop and computer use | Headless jobs; browsers in images for tests, no desktop or computer-use API | None; you install a desktop and browser on the VM yourself | 60fps Linux desktop with Chromium, computer use and browser control, embeddable stream |
| Coding agents | Chunk starts CircleCI's own agent tasks from a prompt; other agents are steps you install in a job | None; you install and drive agents yourself, for example over SSH | Claude Code, Codex, OpenCode and more preinstalled, with a prompt, steer and events API |
| Keeping API keys out | Contexts inject secrets into the job as environment variables; OIDC tokens for cloud logins | No credentials proxy; secrets live on the VM | Credentials proxy for model providers and any HTTPS API you register; switch a credential to another account when credits run out |
| Operating systems | Linux on x86 and Arm, Windows, and macOS on Apple M4 Pro with Xcode | Linux VMs; arm64 for GitHub Actions runners | Linux only (x86) |
| GPUs and self-hosting | Nvidia GPU classes such as T4 and V100 on Scale; CircleCI Server on your own Kubernetes on AWS or GCP | Nvidia A100, B200 and RTX PRO 6000 VMs on request; the whole stack is AGPL code you can run yourself | No GPUs; managed service only |
| Regions | US only: AWS us-east-1 and us-east-2, GCP us-east1 and us-central1 | Germany, Finland and Virginia (US), plus GPUs in Istanbul | EU only (Germany, Finland, France), with EU data residency and zero data retention |
Every feature Battleships tracks (43)
| Feature | CircleCI | Ubicloud | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | Yes | Not published | Yes |
| Root | Not published | Yes | Yes |
| Systemd | No | Not published | Yes |
| Desktop GUI | No | No | Yes |
| Browser | Yes | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | Yes | Yes |
| Persistent disk | No | Yes | Yes |
| Pause/resume | No | No | Yes |
| Automatic snapshots | No | No | Yes |
| Fork/clone | No | Yes | Yes |
| Live fork (no pause) | No | No | Yes |
| Memory fork | No | No | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | No | Yes | Yes |
| Idle auto-stop | Yes | No | No |
| Wake on request | No | No | No |
| HTTPS preview URLs | No | No | Yes |
| Raw TCP inbound | No | Not published | Yes |
| Public IPv4 | No | Yes | No |
| Egress allowlist | No | No | No |
| Secret proxy | No | No | Yes |
| Secret proxy for any API | No | No | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | Yes | No | Yes |
| MCP server | Yes | No | No |
| GPU | Yes | Yes | No |
| Windows | Yes | No | No |
| Arm64 | Yes | Yes | No |
| Self-hosting | Yes | Yes | No |
| BYOC | No | Yes | No |
| Open source | No | Yes | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | Not published | Not published | Yes |
| Usage per sandbox (API) | Yes | No | Yes |
| Audit logs | Yes | Yes | No |
| SSO | Yes | Yes | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | No | No | No |
| EU data residency | No | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
We have no comparable CPU measurement for CircleCI or Ubicloud: neither was 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. Ubicloud results would also depend on the family, since Standard VMs have dedicated CPU and Burstable VMs get half of each vCPU.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. CircleCI and Ubicloud 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.
| Scenario | CircleCI, a month | Ubicloud, a month | bochka, 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 | $96 · Performance · with limits | $22 · Usage | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $508 · Performance · with limits | $91 · Usage | $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 | $5,714 · Performance · with limits | $1,098 · Usage | $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 | $1,617 · Performance · with limits | $156 · Usage | $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 | $3,562 · Performance · with limits | $312 · Usage · with limits | $2,000 · $2000/mo · with limits |
CircleCI: CircleCI bills in credits per minute for the machine class a job uses: Performance starts at $15 a month with 30,000 credits, and more credits cost $15 per 25,000. Scale is custom and billed annually.
Ubicloud: Ubicloud bills each VM per minute for as long as it exists, running or stopped, and invoices monthly; a public IPv4 adds $3 a month. GitHub Actions runners bill per minute of job time.
Ubicloud: 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.
Limits in those scenarios
On CircleCI the job is the limit: it stops after 3 hours on Performance and the machine is discarded, so none of the agent scenarios fit, and Performance runs at most 80 jobs at once. Ubicloud has no time limit, but a project can run 32 vCPU at first and 256 once it has paid an invoice over $5, so 300 user sandboxes of 2 vCPU need a raise from support. Its cheap burstable shape guarantees only half of each vCPU, so the 1,000 short jobs at once get throttled. On bochka the limits are a sandbox count per plan and starts per minute, so that burst is queued and needs more starts per day than the $2,000 plan allows.
| Scenario | CircleCI | Ubicloud | bochka |
|---|---|---|---|
| One coding agent, workdays |
| None that bite | None that bite |
| One agent that never stops |
| None that bite | None that bite |
| 50 agents in parallel |
| None that bite | None that bite |
| Sandboxes for your users |
| None that bite | None that bite |
| 1,000 short jobs at once |
|
|
|
Which one should you use?
Use CircleCI when
you need a CI platform with pipelines and caches, macOS on Apple M4 Pro for iOS builds, Windows or Arm machines, or CI you host on your own Kubernetes.
- macOS, Windows and Arm. Useful if you build iOS, Mac or Windows apps: CircleCI runs macOS on Apple M4 Pro with Xcode, plus Windows and Arm.
- A whole CI platform. Useful if you want managed CI with pipelines, caches, test splitting and orbs, not just machines that run GitHub Actions jobs.
- CI you host yourself. Useful if your builds must stay in-house: self-hosted runners, or the whole CircleCI Server on your own Kubernetes on AWS or GCP.
Use Ubicloud when
you want plain cloud VMs that stay up, cheap GitHub Actions runners, GPU VMs, a US region, or an open source cloud you can run yourself.
- A VM that stays up. Useful if a job needs one machine for days: a Ubicloud VM has no time limit and keeps its disk.
- Open source you can run yourself. Useful if you want the cloud on your own servers: Ubicloud's whole stack is AGPL code you can deploy on leased bare metal.
- GPUs, Postgres and a US region. Useful if your VMs must sit next to managed Postgres or Kubernetes, rent Nvidia GPUs, or run in Virginia.
Where bochka fits
Neither CircleCI nor Ubicloud is an agent sandbox: one runs CI jobs that end, the other rents plain VMs you set up yourself. If what you are really running is AI agents that work for hours or days on Linux, bochka gives each one a full VM that is ready to work, keeps its disk, and can be reached and driven from outside.
A machine that keeps its state and stops for free
A CircleCI job stops after 3 hours on Performance and its machine is discarded. A Ubicloud VM keeps its disk but bills while stopped, and copying it means stopping it first. bochka saves the disk every minute, stops cost nothing, and you can fork a running sandbox.
Coding agents you drive from outside
On CircleCI, Chunk runs only its own agent tasks and secrets reach jobs as environment variables. A Ubicloud VM is an empty OS image you set up over SSH. bochka ships Claude Code and Codex with a steer API and a credentials proxy that keeps keys out.
A desktop and links you can open
CircleCI jobs are headless and expose no ports. On Ubicloud you install a desktop yourself and run TLS on the VM for HTTPS. bochka streams a 60fps desktop with Chromium for computer use and serves up to 50 ports on HTTPS URLs, plus raw TCP.
Use bochka when your agents work on Linux for hours or days: one full VM that keeps its disk and stops for free, Docker and /dev/kvm, a 60fps desktop, HTTPS ports, and coding agents you drive from outside. Compare it one to one: bochka vs CircleCI and bochka vs Ubicloud.
Questions people ask
Is CircleCI cheaper than Ubicloud?
Not in the setups we priced. For CI runners, our use case comes to $4,302 a month on CircleCI against $300 on Ubicloud and $86 on bochka. One agent that never stops comes to $508 a month on CircleCI, $91 on Ubicloud and $26 on bochka, and CircleCI does not fit it, because jobs stop after 3 hours on Performance.
Which is faster, CircleCI or Ubicloud?
We have no comparable measurement for either. Neither was in the StarSling benchmark run, where bochka did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB. On Ubicloud, Standard VMs have dedicated CPU while Burstable VMs get half of each vCPU.
Can CircleCI and Ubicloud run Docker?
Yes. CircleCI has a Docker executor, and its machine executors give you Docker and sudo. A Ubicloud VM gives you root over SSH, so Docker installs as on any Linux VM, and its GitHub Actions runner images ship Docker. bochka has Docker, systemd and /dev/kvm on every machine.
Do files survive between runs?
On CircleCI, only what you save to caches, workspaces and artifacts; the rest goes with the machine. A Ubicloud VM keeps its disk, but a stopped VM keeps billing as if it were running. bochka saves the whole disk every minute and on stop, and a stopped sandbox costs nothing.
Where do CircleCI and Ubicloud run?
CircleCI's cloud runs in the US, on AWS us-east-1 and us-east-2 and GCP us-east1 and us-central1. Ubicloud runs VMs in Germany, Finland and Virginia, plus GPU VMs in Istanbul. bochka runs only in the EU (Germany, Finland and France), with EU data residency.
Can I run AI coding agents on CircleCI or Ubicloud?
Yes, but you set it up yourself. On CircleCI an agent is a step in a job that ends at 3 hours on Performance, and Chunk runs CircleCI's own agent tasks. On Ubicloud you install and supervise agents over SSH. bochka preinstalls Claude Code and Codex with a prompt, steer and events API.
Try bochka
Install the CLI, then run bochka new.
Product preview