Azure Container Apps Sandboxes vs Unikraft Cloud
Both give each workload its own microVM with its own kernel. Azure bills per second inside your Azure account and scales to large fleets, while Unikraft Cloud wakes instances in milliseconds but caps self-serve plans at a small shared pool of running capacity.
The companies and products
Azure Container Apps Sandboxes
Azure Container Apps Sandboxes is a service inside Microsoft Azure that gives each agent or user an isolated microVM you create, suspend and resume through an SDK.
It is part of Azure Container Apps, the hyperscaler's serverless container platform, and lives in your Azure subscription as a sandbox group resource. Each sandbox boots from an OCI image or a snapshot, has its own kernel, and can be suspended with its memory and resumed in under a second. It is built for teams already on Azure that want stateful code execution with Azure networking, identity and 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. “34th cheapest of 345” means 33 of the other 344 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 | Azure Container Apps Sandboxes: 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 A software factory runs Docker, databases and test suites for hours; Azure needs the azure-dev image for Docker, Unikraft documents no container runtime inside, and bochka ships both. | 288th of 367, with limits $5,276 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 assistant that lives on its machine all month needs room for many tools; Unikraft's Team pool is 8 GiB shared by every running instance, and Azure bills every running second. | 302nd of 366, with limits $6,544 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 code runs that sleep between calls suit both; Azure fits this use case fully, while Unikraft's self-serve plans stop at 24 running instances. | 34th cheapest of 345 $354 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 Azure fits hundreds of active user sandboxes on pay-as-you-go; Unikraft Pro holds 5,000 sleeping instances but only 24 running ones, so this needs Enterprise there. | 22nd cheapest of 361 $2,260 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 | 153rd of 360, with limits $10,740 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 | 75th cheapest of 364 $1,728 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 CI that builds Docker images or runs Android emulators needs Docker and /dev/kvm; Azure documents no nested virtualization, Unikraft keeps it for Enterprise, and bochka has both on every plan. | 103rd cheapest of 377 $1,046 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's Team pool keeps one box running all month for $39, Azure costs $262 a month without a commitment, and bochka costs $26 with SSH included. | 322nd of 368, with limits $262 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 Computer-use agents need a screen to look at; Azure and Unikraft are both headless, while bochka streams a Linux desktop at 60fps. | 279th of 369, with limits $1,573 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 On Azure and Unikraft you install and run a headless browser in your own image; bochka gives each sandbox Chromium on a desktop out of the box. | 288th of 367, with limits $795 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 | 284th of 346, with limits $561 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 | 239th of 338, with limits $10,956 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 | 278th of 360, with limits $517 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 | Azure Container Apps Sandboxes | Unikraft Cloud | bochka |
|---|---|---|---|
| Isolation | MicroVM per sandbox with its own kernel | Minimal Linux microVM on a customized Firecracker VMM | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Machine size | Tiers up to 4 vCPU / 8 GB, and up to 16 vCPU / 32 GB by API, per sandbox | 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 and systemd inside | Depends on the image: azure-dev ships Docker on systemd; the default ubuntu image has only Buildah | The Dockerfile becomes the VM image; no container runtime inside is documented | Docker, systemd and root on every sandbox |
| Nested virtualization | Not documented | Yes, with a per-instance flag and permission, Enterprise only | Yes, /dev/kvm for Android emulators and VMs on every plan |
| Getting a shell | Interactive shell through the aca CLI, SDK or portal; no SSH | No SSH yet; commands and files go through the sandbox plugin and CLI | SSH into every sandbox, plus CLI and API exec |
| Desktop, browser and computer use | Headless; no desktop or managed browser | None built in; you can run your own headless browser from a Dockerfile | Linux desktop streamed at 60fps, Chromium and computer-use tools preinstalled |
| Sleep and wake | Suspends with memory and disk and resumes in under a second with processes running; traffic wakes it | Standby after a 1 second idle cooldown by default, with memory in stateful mode; traffic wakes it in milliseconds | Disk saved every minute and on stop; a stopped sandbox is started again by API |
| Fork and snapshots | Snapshot a running sandbox with its memory and create new sandboxes from it | Checkpoint memory and volumes of a running microVM, then start new instances from it; forking is in preview | Fork a running sandbox with its disk; snapshots every minute |
| Inbound access | Public HTTPS routes per published port; private endpoint from your VNet; no public IP | Services on its load balancer: HTTP on 80, HTTPS on 443, TLS-wrapped TCP on other ports; no public IP | HTTPS URLs for up to 50 ports, token-protected by default; raw TCP; dedicated IPv4 or IPv6 |
| Outbound rules | Egress policy with allow, deny, rewrite and header rules by host, path and method; VNet integration | Network shield filters traffic, Enterprise only, limited access | Open internet, no provider-side allowlist |
| Keeping API keys out of the sandbox | Group secrets usable in egress header rules; Copilot and Anthropic tokens are injected into the sandbox at startup | Network shield can inject secrets into traffic, Enterprise only, limited access | Credentials proxy for model providers and any HTTPS API, on every plan; switch a credential to another account when credits run out |
| Coding agents | Copilot CLI and Claude Code images, run through the exec API | None preinstalled; you bring the agent in your own image | Seven agents preinstalled, driven from outside with a prompt, steer and events API |
| Scaling up a fleet | 500 concurrent active cores by default; more by Azure support request | Up to 24 running instances on self-serve plans; more on Enterprise | Up to 2,000 sandboxes at once, self-serve |
| Regions | 40 Azure regions, 9 of them in the EU | Dallas, Frankfurt, San Francisco, Singapore and Washington DC; more on request | EU only (Germany, Finland, France) |
Every feature Battleships tracks (43)
| Feature | Azure Container Apps Sandboxes | 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 | Yes | Not published | Yes |
| Desktop GUI | No | No | Yes |
| Browser | No | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | No | No | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | Yes | Yes |
| Automatic snapshots | Yes | Yes | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | Yes | Yes | Yes |
| Memory fork | Yes | Yes | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | Yes | Yes | No |
| Wake on request | Yes | Yes | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | No | Not published | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | Yes | Yes | Yes |
| Secret proxy for any API | Yes | Yes | Yes |
| Preinstalled agents | Yes | 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) | Yes | No | Yes |
| Audit logs | Yes | Yes | No |
| SSO | Yes | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Yes | Yes | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
There is no comparable CPU measurement for Azure Container Apps Sandboxes or Unikraft Cloud: neither is in the hpc-sandbox-benchmarks run that measured bochka at 26.69 runs per second at 4 vCPU / 8 GB, on dedicated AMD Ryzen 9 9950X hosts. Unikraft states cold starts under 10 ms and Azure states resume in under a second; those are their own start-time figures, 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. Azure Container Apps Sandboxes 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 | Azure Container Apps Sandboxes, 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 | $68 · Pay-as-you-go | $39 · Hobby | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $262 · Pay-as-you-go · 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,421 · Pay-as-you-go | 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 | $989 · Pay-as-you-go | 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 | $2,148 · Pay-as-you-go | Can't run it | $2,000 · $2000/mo · with limits |
Azure Container Apps Sandboxes: Azure bills per second on the Container Apps Consumption meters for the vCPU and memory of the sandbox's tier while it runs, including idle time before auto-suspend, which defaults to 5 minutes. There is no plan fee, stopped sandboxes pay no CPU or memory, and some regions such as West Europe charge more.
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, with sleeping instances not counted. It publishes no per-hour or egress rate, so anything bigger is an Enterprise quote.
Unikraft Cloud: 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
Unikraft's limits are pools every running instance shares: the Team pool has 8 vCPU and 8 GiB in total, so one 4 vCPU / 8 GB agent fills it, and the 50-agent, user-sandbox and burst scenarios fit no self-serve plan. Azure fits all three, but its default quota of 500 active cores caps a fleet until support raises it, and Docker inside means picking an image like azure-dev. Azure bills a running sandbox every second, so the always-on scenario only gets to $262 a month with a 3-year commitment. Unikraft also publishes no price for disk beyond its plan or for egress.
| Scenario | Azure Container Apps Sandboxes | 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 |
| None that bite |
| Sandboxes for your users | None that bite |
| None that bite |
| 1,000 short jobs at once | None that bite |
|
|
Which one should you use?
Use Azure Container Apps Sandboxes when
your team is on Azure and needs hundreds of short stateful sandboxes that suspend with memory, follow strict egress rules, or run in many regions.
- Memory suspend on every plan. For stateful jobs that sleep between requests: a sandbox suspends with its memory and resumes in under a second, processes still running.
- Outbound rules without a contract. For agents that must stay on chosen hosts: egress rules by host, path and method come with pay-as-you-go, not only Enterprise.
- Large fleets inside Azure. For teams on Azure: pay per second with Entra ID and VNets, in 40 regions, with room for hundreds of running sandboxes.
Use Unikraft Cloud when
you run a handful of small services or headless browsers that sleep most of the time and must wake in milliseconds, or want GPUs or on-prem under Enterprise.
- Millisecond starts and scale-to-zero. For many small services that sleep most of the time: instances wake on the next request in milliseconds, and sleeping ones are free.
- A small flat plan for one box. For one small always-on workload: the Hobby plan is free and the Team pool is a flat fee, with no per-second meter to watch.
- GPUs, arm64 and your own hardware. For teams ready to sign Enterprise: NVIDIA GPUs, arm64 hosts, dedicated hosts, on-prem or your own cloud.
Where bochka fits
Azure and Unikraft are both built around microVMs that sleep and wake fast. If what you are really running is agents that work for hours, a team comparing the two should look at bochka: each agent gets a whole computer with Docker, /dev/kvm, SSH, a desktop and built-in coding agents, and fleets of full-size sandboxes need no sales call.
A whole machine to work in
Agents run docker compose, emulators and remote editors. Azure has Docker only on some images and no documented nested virtualization or SSH; Unikraft documents no Docker inside, has no SSH yet and keeps /dev/kvm for Enterprise.
A screen and a browser for every agent
Both Azure and Unikraft are headless, so a computer-use or browser agent needs you to build a browser, a virtual display and a streaming stack into your own image and keep it working. bochka streams a 60fps desktop with Chromium.
Agents and keys built in
Azure injects Copilot and Anthropic tokens into the sandbox, where a prompt-injected agent can read them, and Unikraft's secret injection is Enterprise only. bochka keeps keys in a proxy outside and drives seven preinstalled agents from outside.
Use bochka when your agents need a real machine for hours of work: Docker, emulators, SSH, a desktop and a browser, coding agents driven from outside, and big fleets without a sales call. Compare it one to one: bochka vs Azure Container Apps Sandboxes and bochka vs Unikraft Cloud.
Questions people ask
Is Azure Container Apps Sandboxes cheaper than Unikraft Cloud?
For one agent, Unikraft is cheaper: one coding agent on workdays costs $68 a month on Azure and $39 on Unikraft's Team pool, and bochka costs $20. For 50 agents in parallel, Azure costs $3,421 a month while no self-serve Unikraft plan is big enough, so the price is an Enterprise quote.
Which is faster, Azure Container Apps Sandboxes or Unikraft Cloud?
Neither has a comparable CPU measurement yet, so there is no speed claim either way. For starts, Unikraft states cold boots under 10 ms and Azure states resume from suspend in under a second; both are their own figures.
Can Azure Container Apps Sandboxes or Unikraft Cloud run Docker?
On Azure, the azure-dev image ships Docker on systemd, while the default ubuntu image has only Buildah. Unikraft builds your Dockerfile into the VM itself and does not document a container runtime inside. Every bochka sandbox runs Docker and has /dev/kvm for emulators and VMs.
Can I SSH into Azure Container Apps Sandboxes or Unikraft Cloud?
No for both. Azure gives a shell through the aca CLI, SDK or portal, and Unikraft runs commands and moves files through its sandbox plugin and CLI. Every bochka sandbox has an SSH endpoint.
Which one runs in more regions?
Azure, with 40 regions, 9 of them in the EU. Unikraft runs in Dallas, Frankfurt, San Francisco, Singapore and Washington DC, with more metros on request. bochka runs in the EU only.
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.
Try bochka
Install the CLI, then run bochka new.
Product preview
More comparisons
- bochka vs Azure Container Apps Sandboxes
- bochka vs Unikraft Cloud
- E2B vs Azure Container Apps Sandboxes
- Daytona vs Azure Container Apps Sandboxes
- Modal vs Azure Container Apps Sandboxes
- Vercel Sandbox vs Azure Container Apps Sandboxes
- Cloudflare Sandbox vs Azure Container Apps Sandboxes
- Blaxel vs Azure Container Apps Sandboxes
- Runloop vs Azure Container Apps Sandboxes
- Tensorlake vs Azure Container Apps Sandboxes
- Morph Cloud vs Azure Container Apps Sandboxes
- CodeSandbox SDK vs Azure Container Apps Sandboxes