Runloop vs Azure Container Apps Sandboxes
Both give each agent its own isolated Linux machine. Runloop is built around coding agents, with Dockerfile blueprints, arm64, SSH and a desktop, while Azure Container Apps Sandboxes lives in your Azure account and suspends a sandbox with its memory, then wakes it in under a second.
The companies and products
Runloop
Runloop is a US platform of sandboxes, called devboxes, for building, running and testing AI coding agents.
You get Linux devboxes built from Dockerfile-style blueprints, disk snapshots, HTTPS tunnels, agent gateways that hide API keys, and Axons, event streams that drive agents such as Claude Code. Each devbox runs in a micro-VM on Runloop's own bare-metal hypervisor, with a container layer inside. It is built for teams shipping coding agents, plus evaluation and RL fine-tuning work on the Enterprise plan.
- Compliance
- SOC 2 Type 2
- Architectures
- x86_64 and arm64 base blueprints
- Own-cloud deploy
- Deploy to VPC on AWS, GCP and Azure (Enterprise)
- Regions
- Not documented or selectable
- Company
- Runloop AI, Inc.
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.
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. “20th cheapest of 367” means 19 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 | Runloop: price rank | Azure Container Apps Sandboxes: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Runloop fits a software factory fully, while Azure is a compromise: no SSH, no desktop and Docker only on images that ship it; bochka adds /dev/kvm for emulators. | 20th cheapest of 367 $8,152 a month | 288th of 367, with limits $5,276 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB | 32nd cheapest of 366 $10,194 a month | 302nd of 366, with limits $6,544 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 Azure fits short code runs well, suspending with memory and waking in under a second; Runloop also fits, and bochka's start limits queue very large bursts. | 44th cheapest of 345 $525 a month | 34th cheapest of 345 $354 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 Both fit sandboxes for your users; Azure suspends idle ones with their memory, Runloop wakes a suspended devbox on an HTTP request (Pro), and bochka gives each user hosting on up to 50 ports. | 26th cheapest of 361 $3,301 a month | 22nd cheapest of 361 $2,260 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 Runloop ranks 4th for RL rollouts and sells RL fine-tuning on Enterprise; Azure's default quota of 500 active cores holds back large waves until support raises it. | 4th cheapest of 360 $15,922 a month | 153rd of 360, with limits $10,740 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 | 81st cheapest of 364 $2,562 a month | 75th cheapest of 364 $1,728 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 | 121st cheapest of 377 $1,554 a month | 103rd cheapest of 377 $1,046 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB A dev box wants SSH: Runloop has SSH through a TLS proxy, while Azure gives a shell through its own CLI or portal only. | 113th cheapest of 368 $410 a month | 322nd of 368, with limits $262 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 Runloop ships a desktop and a browser your agent can control, while Azure's sandboxes are headless; bochka streams its desktop at 60fps. | 39th cheapest of 369 $2,306 a month | 279th of 369, with limits $1,573 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 Runloop has a browser your agent can drive; on Azure you install and run a headless browser in your own image. | 40th cheapest of 367 $1,153 a month | 288th of 367, with limits $795 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 | 68th cheapest of 346 $781 a month | 284th of 346, with limits $561 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 | 266th of 338, with limits $15,611 a month | 239th of 338, with limits $10,956 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 Both can hold a sandbox to listed hosts: Runloop by hostname allowlist, Azure with rules by host, path and method; bochka gives each run a full kernel. | 10th cheapest of 360 $770 a month | 278th of 360, with limits $517 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 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 | Runloop | Azure Container Apps Sandboxes | bochka |
|---|---|---|---|
| Isolation | Micro-VM on a custom bare-metal hypervisor, plus a container layer | MicroVM per sandbox with its own kernel | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Nested virtualization | Not documented; Docker-in-Docker blueprints only | Not documented | Yes: /dev/kvm, Android emulators and VMs inside |
| Docker inside | Yes, on the dnd blueprints, as root | Depends on the image: azure-dev ships Docker on systemd; the default ubuntu image has only Buildah | Docker, systemd and root on every sandbox |
| Images | Blueprints built from Dockerfiles, plus disk snapshots; x86_64 and arm64 | OCI images or snapshots | Templates from named snapshots, x86_64 only |
| Getting a shell | SSH through a TLS proxy | Interactive shell through the aca CLI, SDK or portal; no SSH | SSH, plus CLI and API exec |
| Desktop and browser | Desktop and browser your agent can control | Headless; no desktop or managed browser | Linux desktop streamed at 60fps, Chromium and computer-use tools preinstalled |
| Keeping state | Disk kept through suspend (Pro plan) or manual disk snapshots; shutdown ends the devbox | Suspend with memory and disk; resume in under a second with processes running | Disk saved every minute and on stop, on every plan; resume boots the machine again |
| Idle sleep and wake | Suspend after idle, wake on an HTTP request to the tunnel (Pro) | Auto-suspend after an idle timeout; network traffic or a start command brings it back | Auto-stop timer you set; a stopped sandbox is started by API |
| Long runs | Fixed lifetime 1 hour by default, 48 hours max; an idle policy replaces it | No session cap; billed every second until it suspends | No session cap on paid plans; default TTL 1 hour, changeable |
| Inbound networking | One HTTPS tunnel per devbox, open or bearer token; no public IP | Public HTTPS routes per published port; private endpoint from your VNet at extra cost; no public IP | HTTPS URLs for up to 50 ports, token-protected by default, raw TCP, dedicated IPv6 or IPv4 |
| Outbound rules | Hostname allowlist with wildcards, or block all | Allow, deny, rewrite and header rules by host, path and method; VNet integration | Open internet, no provider-side allowlist |
| Hidden API keys | Agent gateways for any API endpoint with bearer, header or basic auth | Group secrets usable in egress header transforms; Copilot and Anthropic tokens injected into the sandbox at startup | Credentials proxy for model providers and any HTTPS API; switch a credential to another account when one runs out |
| Coding agents | Claude Code, Codex, OpenCode, Gemini CLI, DeepAgents, driven through Axons and Broker | Copilot CLI and Claude Code images, run through the exec API | Seven agents preinstalled, with a prompt, steer and events API |
| Where it runs | Regions not documented; Deploy to VPC on AWS, GCP or Azure (Enterprise) | 40 Azure regions, 9 of them in the EU, inside your Azure subscription | EU only (Germany, Finland, France), EU data residency |
Every feature Battleships tracks (43)
| Feature | Runloop | Azure Container Apps Sandboxes | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | No | No | Yes |
| Root | Yes | Yes | Yes |
| Systemd | Not published | Yes | Yes |
| Desktop GUI | Yes | No | Yes |
| Browser | Yes | No | Yes |
| Computer-use API | Yes | No | Yes |
| SSH | Yes | 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 | No | 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 | No | 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 | Yes | Yes |
| Agent harness API | Yes | No | Yes |
| MCP server | Yes | No | No |
| GPU | No | No | No |
| Windows | No | No | No |
| Arm64 | Yes | No | No |
| Self-hosting | No | No | No |
| BYOC | Yes | No | No |
| Open source | No | No | No |
| Scoped API keys | Yes | Not published | Yes |
| Spend limits | Not published | Yes | Yes |
| Usage per sandbox (API) | No | Yes | Yes |
| Audit logs | Not published | Yes | No |
| SSO | Yes | Yes | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Not published | Yes | No |
| EU data residency | No | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
On the StarSling hpc-sandbox-benchmarks Node.js build-and-test loop at 4 vCPU / 8 GB (run 36498291449, 2026-09-29), bochka scored 26.69 runs a second and Runloop 8.29, about 3.2 times apart. Azure Container Apps Sandboxes has no comparable measurement yet, so this page makes no speed claim for it. The test measures CPU work only, not start time or network 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 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.
| Scenario | Runloop, a month | Azure Container Apps Sandboxes, 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 | $113 · Basic | $68 · Pay-as-you-go | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $429 · Basic | $262 · Pay-as-you-go · 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 | $5,268 · Basic | $3,421 · Pay-as-you-go | $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,441 · Basic | $989 · Pay-as-you-go | $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,184 · Basic | $2,148 · Pay-as-you-go | $2,000 · $2000/mo · with limits |
Runloop: Runloop bills per second for the CPU and memory you allocate while a devbox is starting, running, suspending or resuming, and bills its disk for the devbox's whole life. Basic has no plan fee; Pro adds $250 a month that is not usage credit and unlocks suspend and resume.
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, idle time before auto-suspend included. There is no plan fee, and some regions such as West Europe and UK South charge more per second.
Azure Container Apps Sandboxes: Plans start at $20 a month and the whole fee is usage credit, billed per second while a sandbox runs. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Runloop's fixed lifetime tops out at 48 hours unless an idle policy replaces it, suspend needs Pro, and it publishes no egress price. Azure has no session cap but bills every second until a sandbox suspends, so the always-on scenario at $262 a month only fits with a 3-year commitment, and its default quota of 500 active cores caps a fleet until support raises it. Both fit 1,000 short jobs at once, where bochka's $2,000 plan queues the starts.
| Scenario | Runloop | Azure Container Apps Sandboxes | 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 Runloop when
you ship coding agents and want Dockerfile blueprints, arm64, SSH, a desktop, large RL waves, or devboxes inside your own AWS, GCP or Azure account.
- Built around coding agents. Good for agent teams: Dockerfile blueprints, SSH, a desktop, and agents like Claude Code driven through Axons.
- arm64 and your own cloud. Runloop offers arm64 blueprints, and on Enterprise it can run devboxes inside your own AWS, GCP or Azure account.
- Big waves of RL rollouts. For RL work, Runloop starts large waves without published start limits and sells RL fine-tuning on Enterprise.
Use Azure Container Apps Sandboxes when
your team already runs on Azure and wants short stateful sandboxes that suspend with their memory, wake on traffic, sit behind strict egress rules, or run outside the EU.
- Memory suspend and wake on traffic. Good for stateful jobs that sleep between requests: a sandbox suspends with its memory and resumes in under a second.
- Fine-grained outbound rules. Its egress policy can allow, deny or rewrite each outbound request by host, path and method, with VNet integration.
- Inside Azure, in 40 regions. Teams already on Azure get Entra ID, Azure billing and their VNets, in 40 regions on six continents.
Where bochka fits
If your agents do long, real work like installs, builds, Docker, emulators and browsers, look at bochka as well. Each sandbox is a whole Linux computer with /dev/kvm, SSH, raw TCP and a 60fps desktop, on CPUs measured about three times faster than Runloop's. Its files are kept on every plan.
Emulators and VMs start
Neither Runloop nor Azure documents nested virtualization, so an agent that needs an Android emulator or a VM cannot start one. bochka exposes /dev/kvm on every sandbox, next to Docker and systemd.
Builds finish sooner
On the same Node.js build-and-test benchmark, Runloop ran 8.29 loops a second and bochka 26.69, so each install and test waits about three times longer on Runloop. Azure has no comparable measurement yet.
Files kept without a paid tier
On Runloop a devbox is gone at shutdown unless you pay for the Pro plan's suspend or write snapshot code. On Azure a sandbox bills until it suspends. bochka saves the disk every minute, and a stopped sandbox costs nothing.
Use bochka when your agents need a whole computer for hours: SSH, Docker, emulators, a 60fps desktop and raw TCP, on fast CPUs, with files kept on every plan. Compare it one to one: bochka vs Runloop and bochka vs Azure Container Apps Sandboxes.
Questions people ask
Is Runloop cheaper than Azure Container Apps Sandboxes?
No, Azure costs less in every scenario on this page. One coding agent on workdays is $113 a month on Runloop and $68 on Azure, and 50 agents in parallel are $5,268 against $3,421. bochka is $20 and $317 for the same two.
Which is faster, Runloop or Azure Container Apps Sandboxes?
We can't say yet: Runloop scored 8.29 runs a second on the Node.js build-and-test benchmark, and Azure has not been measured on it. bochka scored 26.69 on the same test.
Can Runloop and Azure sandboxes run Docker?
Runloop runs Docker on its dnd blueprints, as root. On Azure it depends on the image: azure-dev ships Docker, and the default ubuntu image has only Buildah. bochka runs Docker on every sandbox and also exposes /dev/kvm.
Can I SSH into Runloop or Azure sandboxes?
Runloop offers SSH through a TLS proxy. Azure gives you an interactive shell through the aca CLI, the SDK or the portal, with no SSH. Every bochka sandbox has an SSH endpoint.
Which one keeps an agent's memory between runs?
Azure suspends a sandbox with its memory and resumes running processes in under a second. Runloop's suspend needs the Pro plan, and bochka keeps the disk, not the memory, booting the machine again on resume.
Do I need an Azure account to use Azure Container Apps Sandboxes?
Yes. It needs an Azure subscription, a Microsoft Entra ID account and the Container Apps SandboxGroup Data Owner role. Runloop and bochka have their own sign-up.
Try bochka
Install the CLI, then run bochka new.
Product preview