GitHub Codespaces vs Unikraft Cloud
GitHub Codespaces is a dev environment: a Linux dev container on its own VM, opened from a GitHub repository, that stops after 12 hours at most. Unikraft Cloud turns a Dockerfile into a small Firecracker microVM that boots in milliseconds, sleeps when idle and wakes on the next request.
The companies and products
GitHub Codespaces
GitHub Codespaces is GitHub's cloud development environment: a ready-to-code Linux machine for a repository, opened in the browser, VS Code or the GitHub CLI.
Codespaces is a different kind of product from bochka: a dev environment for people working on a GitHub repository, not a sandbox API for agents. Each codespace is a Docker container built from the repo's dev container config, running on its own newly built VM on Azure, with 2 to 32 cores. It is built for developers and teams who want every contributor to start from the same setup, with prebuilds, port forwarding and GitHub billing.
Unikraft Cloud
Unikraft Cloud is a microVM cloud from Unikraft Inc. that runs any Dockerfile-based workload as a minimal Linux microVM with millisecond cold starts and scale-to-zero.
Your Dockerfile becomes the VM image at build time, and each instance runs on a heavily customized Firecracker VMM, so it boots in milliseconds and can go into standby when no traffic arrives. It is a general compute platform built for dense, bursty work such as HTTP services, headless browsers and agent fleets, sold as flat self-serve plans plus Enterprise dedicated hosts, on-prem and bring your own cloud. It is not a dev machine you log into: instances are reached through services, the CLI and a sandbox plugin for commands and files.
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. “274th cheapest of 367” means 273 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 | GitHub Codespaces: price rank | Unikraft Cloud: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Codespaces gives you Docker inside a dev container but stops at 12 hours, Unikraft documents no container runtime inside an instance, and bochka is a full VM with Docker and /dev/kvm. | 274th of 367, with limits $4,618 a month | Can't run it | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB An always-on assistant hits the 12-hour cap on Codespaces and the shared 8 GiB Team pool on Unikraft, while a bochka sandbox runs until you stop it. | 309th of 366, with limits $6,970 a month | Can't run it | 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 Short runs that sleep between calls are the shape Unikraft is built for, though self-serve plans cap you at 24 running instances; each codespace builds a dev container on a new VM. | 288th of 345, with limits $619 a month | Can't run it | 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 Neither fits 300 user sandboxes on a published self-serve plan: GitHub does not publish how many codespaces can run at once, and Unikraft Pro holds 24 running instances. | 281st of 361, with limits $1,964 a month | Can't run it | 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 | 282nd of 360, with limits $9,489 a month | Can't run it | 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 | 295th of 364, with limits $1,519 a month | Can't run it | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month Codespaces has no fork or snapshot API, and on Unikraft nested virtualization is Enterprise only, so CI jobs that need copies of a warm machine or /dev/kvm fit bochka better. | 314th of 377, with limits $909 a month | Can't run it | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB Unikraft keeps a box around all month on its $39 Team pool but has no SSH yet, while Codespaces is a polished VS Code box that stops after 12 hours. | 130th of 368, with limits $270 a month | 219th of 368, with limits $39 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 graphical desktop built in; bochka streams a 60fps desktop with Chromium for computer use. | 267th of 369, with limits $1,367 a month | Can't run it | 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 Unikraft can run your own headless Chrome from a Dockerfile, Codespaces has no browser built in, and bochka gives each sandbox Chromium on a desktop. | 275th of 367, with limits $678 a month | Can't run it | 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 | 310th of 346, with limits $922 a month | Can't run it | 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 | 280th of 338, with limits $18,637 a month | Can't run it | 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 | 267th of 360, with limits $445 a month | Can't run it | 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 it | 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 | Can't run it | Can't run it | Can't run it |
Key features
| Feature | GitHub Codespaces | Unikraft Cloud | bochka |
|---|---|---|---|
| What it is | A cloud dev environment for a GitHub repository, opened in VS Code, the browser or JupyterLab | A microVM cloud that runs Dockerfile-based workloads with millisecond cold starts and scale-to-zero | A sandbox you drive from code: full VMs with coding agents and a desktop built in |
| Isolation | A Docker container on its own newly built VM, with its own virtual network | Minimal Linux microVM on a customized Firecracker VMM; full VMs on Enterprise | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| How long it runs | Stops after 30 idle minutes by default and after 12 hours at most, even while in use | No published session cap; goes into standby when idle and wakes on traffic | Runs until you stop it; no session cap on paid plans |
| Machine size | 2, 4, 8, 16 or 32 cores, with 4 GB of memory per core | Plan pool shared by all running instances: 2 vCPU / 4 GiB, 8 vCPU / 8 GiB or 24 vCPU / 32 GiB | 4 vCPU / 8 GB by default, up to 16 vCPU / 32 GB per sandbox on the $100 plan and above |
| Docker inside | Docker and sudo inside the dev container | The Dockerfile becomes the VM image; no container runtime inside documented | Docker, systemd and root, like any Ubuntu machine |
| Nested virtualization | /dev/kvm is not documented | Yes, with a per-instance flag and permission, Enterprise only | /dev/kvm on every plan, for Android emulators and VMs |
| Logging in | SSH and the GitHub CLI, plus VS Code and the browser | No SSH yet; commands and files go through the sandbox plugin and CLI | SSH into every sandbox, or drive it through the API |
| Idle and wake | Stops when idle; you start it again from the editor, CLI or API | Standby after a 1 second idle cooldown by default; incoming traffic wakes it in milliseconds, with memory kept in stateful mode | Disk saved every minute and on stop; a stopped sandbox costs nothing and is started by API |
| Fork and checkpoints | No copy or snapshot endpoint; new codespaces start from a repo, branch, pull request or prebuild | Checkpoint memory and volumes of a running microVM, then start new instances from it | Fork a running sandbox with its disk; named snapshots as templates |
| Desktop and browser | Editor and terminal; no graphical desktop | None built in; you can run your own headless browser from a Dockerfile | 60fps Linux desktop with Chromium, computer use and browser control |
| Coding agents | GitHub Copilot as a VS Code extension; other agents you install yourself | None preinstalled; you bring the agent in your own image | Claude Code, Codex, OpenCode and more preinstalled, with a prompt, steer and events API |
| Keeping API keys out | Secrets are copied into the codespace as environment variables | Network shield can inject secrets into traffic, Enterprise only, limited access | Credentials proxy for model providers and any HTTPS API, on every plan |
| Inbound access | A URL per forwarded port, private, organization or public; no public IP | Services on its load balancer: HTTP, HTTPS and TLS-wrapped TCP; no public IP per instance | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv4 or IPv6 |
| Regions | US East, US West, Europe West and Southeast Asia | Dallas, Frankfurt, San Francisco, Singapore and Washington DC, more on request | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | GitHub Codespaces | Unikraft Cloud | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | No | Yes |
| Nested virtualization | No | Yes | Yes |
| Root | Yes | Yes | Yes |
| Systemd | Not published | Not published | Yes |
| Desktop GUI | No | No | Yes |
| Browser | No | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | No | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | Yes | Yes |
| Automatic snapshots | No | Yes | Yes |
| Fork/clone | No | Yes | Yes |
| Live fork (no pause) | No | Yes | Yes |
| Memory fork | No | Yes | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | No | Yes | Yes |
| Idle auto-stop | Yes | Yes | No |
| Wake on request | No | Yes | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | No | Not published | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | No | Yes | No |
| Secret proxy | No | Yes | Yes |
| Secret proxy for any API | No | Yes | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | No | No | Yes |
| MCP server | No | No | No |
| GPU | No | Yes | No |
| Windows | No | No | No |
| Arm64 | No | Yes | No |
| Self-hosting | No | Yes | No |
| BYOC | No | Yes | No |
| Open source | No | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | Yes | Not published | Yes |
| Usage per sandbox (API) | No | No | Yes |
| Audit logs | Yes | Yes | No |
| SSO | Yes | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | No | Yes | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
There is no comparable CPU measurement for GitHub Codespaces or Unikraft Cloud: neither was in the public benchmark runs we use. bochka did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB in StarSling's run of 2026-09-29. Unikraft states cold starts under 10 ms, which is its own figure and measures start time, not CPU speed.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. GitHub Codespaces and Unikraft Cloud 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 | GitHub Codespaces, a month | Unikraft Cloud, 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 | $51 · Personal account: GitHub Free | $39 · Hobby | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $270 · Personal account: GitHub Free · with limits | $39 · Hobby | $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 | $3,019 · Personal account: GitHub Free | Can't run it | $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 | $850 · Personal account: GitHub Free · with limits | Can't run it | $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,889 · Personal account: GitHub Free · with limits | Can't run it | $2,000 · $2000/mo · with limits |
GitHub Codespaces: Codespaces bills $0.09 per core-hour while a codespace is active, plus $0.07 per GB-month of storage while it exists, stopped too. Personal accounts get a free monthly quota and organizations do not.
Unikraft Cloud: Unikraft charges a flat monthly fee for a pool of running capacity: free for 2 vCPU / 4 GiB, $39 for 8 vCPU / 8 GiB, $199 for 24 vCPU / 32 GiB. It publishes no per-hour rate, so anything bigger is an Enterprise quote.
Unikraft Cloud: Plans start at $20 a month, and the whole fee is usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Every codespace stops after 12 hours at most, so it does not fit the always-on scenario without a restart script, and GitHub does not publish how many can run at once, so 300 user sandboxes and 1,000 short jobs are not confirmed. Unikraft's limits are shared pools: the Team plan's 8 vCPU and 8 GiB hold one 4 vCPU / 8 GB agent, so 50 agents, user sandboxes and the burst need an Enterprise contract. bochka has no session cap on paid plans, but at 1,000 short jobs at once its $2,000 plan queues starts.
| Scenario | GitHub Codespaces | Unikraft Cloud | bochka |
|---|---|---|---|
| One coding agent, workdays | None that bite |
| 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 GitHub Codespaces when
your developers want a ready VS Code environment for a GitHub repository, opened from a branch or pull request, in the US, EU or Asia.
- Built into GitHub. Useful if your team lives on GitHub: open a ready dev container from any repo, branch or pull request.
- A full editor with big machines. Useful for developers who want VS Code in the browser on up to 32 cores, with SSH and port forwarding.
- Free hours for personal accounts. Useful for occasional personal work: a GitHub Free account includes 120 core-hours and 15 GB-month each month.
Use Unikraft Cloud when
you run many small services or headless browsers that sleep most of the time and must wake in milliseconds, or want GPUs, on-prem or your own cloud under an Enterprise contract.
- Millisecond starts and scale-to-zero. Best for many small services that sleep most of the time and must answer the next request in milliseconds.
- A flat monthly price. Useful if you want a fixed bill: a pool of running capacity for a flat fee, with sleeping instances not counted.
- GPUs, arm64 and your own hardware. Enterprise customers can get NVIDIA GPUs, arm64 hosts, egress filtering, dedicated hosts, on-prem or their own cloud.
Where bochka fits
If what you are really running is AI agents that work for hours, neither is built for it: Codespaces is a dev box for people that stops at 12 hours, and Unikraft is tuned for small services that sleep. bochka gives each agent a full VM that keeps running, with Docker, /dev/kvm, a desktop and coding agents you drive from outside.
Machines that keep running and fork
A codespace stops at 12 hours even in use, so you need a restart script, and it cannot be copied. Unikraft can checkpoint, but its Team pool of 8 GiB fits one 4 vCPU / 8 GB agent. bochka runs until you stop it and forks while running.
A whole machine: Docker, /dev/kvm and a desktop
Codespaces documents no /dev/kvm and no desktop; Unikraft documents no Docker inside, has no SSH yet and keeps nested virtualization for Enterprise. Every bochka sandbox has root, systemd, Docker, /dev/kvm, SSH and a 60fps desktop with Chromium.
Agents driven from outside, keys kept out
On Codespaces your API key sits in an environment variable any code can read; on Unikraft secret injection is Enterprise only. bochka ships Claude Code, Codex and more with a prompt, steer and events API, and keeps real keys in a credentials proxy.
Use bochka when your agents need a real machine that keeps running: Docker, /dev/kvm, a desktop and a browser, coding agents you drive from outside, and fleets of full-size sandboxes without a sales call. Compare it one to one: bochka vs GitHub Codespaces and bochka vs Unikraft Cloud.
Questions people ask
Is GitHub Codespaces cheaper than Unikraft Cloud?
For one coding agent on workdays, Codespaces comes to $51 a month and Unikraft's Team pool to $39 a month, with bochka at $20. For one agent that never stops, Unikraft stays at $39 against $270 on Codespaces, which also needs a restart every 12 hours; bochka is $26. For 50 agents, Codespaces is $3,019 a month and no self-serve Unikraft plan is big enough.
Which is faster?
Neither has a comparable CPU measurement in the benchmarks we use. Unikraft is far faster to start: its microVMs cold boot in milliseconds and wake on the next request, while a codespace builds a dev container on a new VM, which prebuilds speed up.
Can I run Docker in GitHub Codespaces or Unikraft Cloud?
In Codespaces, yes: Docker works inside the dev container and you have sudo. Unikraft uses your Dockerfile to build the VM image and does not document a container runtime inside a running instance. Every bochka sandbox has Docker, systemd and /dev/kvm.
Can I SSH into them?
You can SSH into a codespace through the GitHub CLI. Unikraft has no SSH yet; you run commands and move files through its sandbox plugin and CLI. You can SSH into every bochka sandbox.
Can I run an AI agent 24/7 on either?
Not on Codespaces without restarts, since every codespace stops after 12 hours at most. Unikraft has no published session cap, but a 4 vCPU / 8 GB agent fills its Team pool. A bochka sandbox runs until you stop it, with no session cap on paid plans.
Try bochka
Install the CLI, then run bochka new.
Product preview
More comparisons
- bochka vs GitHub Codespaces
- bochka vs Unikraft Cloud
- E2B vs GitHub Codespaces
- Daytona vs GitHub Codespaces
- Modal vs GitHub Codespaces
- Vercel Sandbox vs GitHub Codespaces
- Cloudflare Sandbox vs GitHub Codespaces
- Blaxel vs GitHub Codespaces
- Runloop vs GitHub Codespaces
- Tensorlake vs GitHub Codespaces
- Morph Cloud vs GitHub Codespaces
- CodeSandbox SDK vs GitHub Codespaces