Northflank vs smol machines
Both run each sandbox in a microVM with its own kernel. Northflank is a broad cloud platform with GPUs, many regions and your own cloud account, while smol machines is an open-source VM engine that branches running machines and runs the same VM on your laptop or servers.
The companies and products
Northflank
Northflank is a London developer platform for running services, jobs and databases on Kubernetes, and Sandboxes is its product for running untrusted code.
A Northflank sandbox is a container image deployed as a service: CPU sandboxes run in Kata microVMs with their own kernel, and GPU sandboxes run under gVisor. You create and drive them from the JavaScript or Python SDK, the CLI or the dashboard, on Northflank's cloud or inside your own. It suits teams that already want one platform for apps, databases, GPUs and sandboxes.
smol machines
smol machines makes fast, isolated Linux microVMs that run the same way on your laptop, in their hosted cloud, or on your own servers.
The core is smolvm, an open-source microVM engine built on libkrun, where each machine has its own guest kernel. smol cloud is the paid hosted service that runs fleets of those machines behind a REST API and Node, Python and Rust SDKs. It is built for developers who want one VM model from local development to production, with live branching of running machines.
- Uptime SLA
- 99.95% on Pro, Startup and Enterprise
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. “38th cheapest of 377” means 37 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 | Northflank: price rank | smol machines: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month smol machines keeps the whole filesystem across a stop while Northflank keeps only attached volumes; bochka keeps the whole disk and adds /dev/kvm and coding agents you drive by API. | 159th of 367, with limits $1,477 a month | 73rd of 367, with limits $604 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB | 173rd of 366, with limits $1,365 a month | 148th of 366, with limits $1,038 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 Both fit short code runs: Northflank has per-second plans from a tenth of a vCPU, and smol machines has a one-minute minimum and cheap branches of a warm machine. | 84th of 345, with limits $115 a month | 12th cheapest of 345 $140 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 smol machines wakes a stopped machine on the next command and fits this case fully; Northflank does not confirm 300 sandboxes at once, and bochka adds hosting on up to 50 ports. | 89th of 361, with limits $815 a month | 7th cheapest of 361 $531 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 smol machines can branch a running machine with its memory and processes, so many rollouts start from one prepared state; Northflank snapshots files only. | 342nd of 360, with limits $1,762 a month | 111th of 360, with limits $6,978 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 | 134th of 364, with limits $689 a month | 36th cheapest of 364 $670 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 Both fit CI; neither exposes nested virtualization in its hosted sandboxes, which bochka does for Android emulators and VM builds. | 38th cheapest of 377 $352 a month | 66th cheapest of 377 $514 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB | 151st of 368, with limits $59 a month | 216th of 368, with limits $29 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 hosted desktop, so you build and stream one yourself; bochka ships a 60fps Linux desktop with computer use. | 151st of 369, with limits $371 a month | 90th of 369, with limits $156 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 Neither ships a browser for agents, so you install Chromium in your image; bochka has Chromium ready in every sandbox. | 200th of 367, with limits $194 a month | 176th of 367, with limits $136 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 | 196th of 346, with limits $117 a month | 241st of 346, with limits $242 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 | 83rd of 338, with limits $2,049 a month | 148th of 338, with limits $4,344 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 | 141st of 360, with limits $99 a month | 252nd of 360, with limits $377 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 Northflank has GPU sandboxes from L4 to H100 and up; smol cloud and bochka are CPU only. | 4th cheapest of 98 $693 a month | 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 | Northflank | smol machines | bochka |
|---|---|---|---|
| Isolation | Kata microVM with its own kernel for CPU; gVisor for GPU | libkrun microVM with its own guest kernel | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| What survives a stop | Only attached volumes, which bill while paused; the rest of the disk and all processes reset | The filesystem survives, memory paths like /tmp are emptied; stopped disk keeps billing | The whole disk, saved every minute and on stop; stopped sandboxes cost nothing |
| Snapshots and fork | Opt-in filesystem snapshots of a running sandbox, restored into a new one | Branch a running machine with its memory and processes; checkpoints capture RAM to a file | Automatic disk snapshots; fork a running sandbox with its disk |
| Wake on request | No idle auto-pause; you pause and start sandboxes yourself | A command or terminal starts a stopped machine; idle apps wake on the next request | No; a stopped sandbox is started by API |
| Nested virtualization | Not documented inside a sandbox | Not exposed in the cloud API; a local smolvm flag only | Yes, /dev/kvm for Android emulators and VMs |
| Shell access | SDK, browser terminal or SSH | Command API, sessions and a WebSocket terminal capped at one hour per connection; no SSH | SSH, plus a command API and terminal |
| Desktop and browser | Headless; no desktop or browser product | No hosted desktop; a guide shows running your own Chromium | 60fps Linux desktop, Chromium and computer use built in |
| Coding agents | Harnesses with Claude Code, Codex, Cursor, OpenCode or Pi, reached through a terminal or SSH | Registry images with the Codex CLI and the Harbor eval harness, run through the command API | Seven agents preinstalled, with a prompt, steer and events API |
| Keeping API keys out of the sandbox | Header injection for listed hosts in the network policy API; otherwise env vars or files | Cloud secrets are env vars the guest can read; credential swapping only in self-hosted smolvm | Credentials proxy for model providers and any HTTPS API; switch a credential to another account when credits run out |
| Inbound access | HTTPS ports on a code.run domain, private by default; public TCP and UDP need a load balancer | Up to 16 published ports through a returned URL or an authenticated connect route; no dedicated IP | HTTPS URLs for up to 50 ports, token-protected by default; raw TCP; dedicated IPv4 or IPv6 |
| Outbound rules | Network policies with allow lists by IP, CIDR or domain | Blocked, open, or an allowlist of hosts and CIDR ranges | Open internet, no provider-side allowlist |
| Biggest machine | Up to 20 vCPU / 40 GB, more on request | Up to 32 vCPU / 32 GB on Startup, 16 vCPU / 24 GB on Pro | Up to 16 vCPU / 32 GB on the $100 plan and above |
| GPUs | L4, A100, H100, RTX PRO 6000 and more | No GPUs on smol cloud | No |
| Where it runs | Many regions (US, Europe, Asia, Australia, South America, Africa), or your own cloud account | No region choice on smol cloud; open-source smolvm runs on your laptop or servers | EU only (Germany, Finland, France), with EU data residency |
Every feature Battleships tracks (43)
| Feature | Northflank | smol machines | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | No | No | Yes |
| Root | Not published | Not published | 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 | Yes | No | 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 | No | Yes | No |
| Wake on request | No | Yes | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | Yes | Not published | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | Yes | No | Yes |
| Secret proxy for any API | Yes | No | Yes |
| Preinstalled agents | Yes | Yes | Yes |
| Agent harness API | No | No | Yes |
| MCP server | No | Yes | No |
| GPU | Yes | No | No |
| Windows | No | No | No |
| Arm64 | Yes | Yes | No |
| Self-hosting | Yes | Yes | No |
| BYOC | Yes | Yes | No |
| Open source | No | Yes | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | Not published | Yes | Yes |
| Usage per sandbox (API) | Yes | Yes | Yes |
| Audit logs | Yes | Not published | No |
| SSO | Yes | Yes | No |
| SOC 2 | Yes | No | No |
| HIPAA | Yes | No | No |
| EU data residency | Yes | No | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
Neither Northflank Sandboxes nor smol cloud has a result on the StarSling hpc-sandbox-benchmarks CPU test, so there is no comparable speed figure for either. bochka did 26.69 runs per second on that Node.js build-and-test loop at 4 vCPU / 8 GB. smol machines publishes a boot time under 200ms for smolvm, which 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. Northflank and smol machines 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 | Northflank, a month | smol machines, 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 | $32 · Developer Sandbox (free tier) · with limits | $25 · Standard | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $108 · Developer Sandbox (free tier) · with limits | $93 · Standard | $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 | $1,322 · Developer Sandbox (free tier) · with limits | $1,139 · Pro | $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 | $361 · Developer Sandbox (free tier) · with limits | $465 · Startup | $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 | $688 · Developer Sandbox (free tier) · with limits | $1,389 · Startup | $2,000 · $2000/mo · with limits |
Northflank: Northflank bills per second for the plan size you pick, with no monthly fee, until you pause the sandbox; there is no idle auto-pause. Volumes cost $0.15 per GB a month even while paused, and outbound traffic costs $0.06 per GB.
smol machines: smol cloud charges a base fee for each hour a machine runs, plus the CPU and memory the guest actually uses, with a one-minute minimum and disk billed even while stopped. Pro ($20 a month) and Startup ($150 a month) are fees on top of usage, not credit.
smol machines: 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 whole disk.
Limits in those scenarios
On Northflank the limit that bites in every scenario is what survives a stop: only attached volumes keep their files, and it does not publish how many sandboxes can run at once, so 300 or 1,000 at a time is not confirmed. smol machines caps machines by plan, 20 on Standard, 100 on Pro and 1,000 on Startup, with stopped machines still holding a slot, so 50 agents needs Pro and 1,000 short jobs needs Startup. bochka's limit is in the burst scenario: even the $2,000 plan queues starts above 90 a minute.
| Scenario | Northflank | smol machines | 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 |
| None that bite |
|
Which one should you use?
Use Northflank when
you need GPUs next to the agent, regions outside Europe, or sandboxes inside your own cloud account next to the rest of your apps.
- GPU sandboxes. For agents that train, fine-tune or run models: Northflank has GPU sandboxes from L4 to H100 and up.
- Regions around the world. For users spread across the globe: Northflank runs in the US, Europe, Asia, Australia, South America and Africa.
- Your own cloud, and one platform. For teams that must run in their own AWS, GCP or Azure account, or want apps, databases and sandboxes together.
Use smol machines when
you want one open-source VM engine from your laptop to your own servers, or you fan out many branches of a running machine with its memory.
- Open source, from laptop to your own servers. For teams that want one open-source VM engine that runs the same locally, in a hosted cloud and on their servers.
- Live branches with memory. For RL and test fan-out: branch a running machine with its memory and processes, and wake stopped machines on demand.
- The whole filesystem stays. For agents that install tools anywhere: a stopped smol machine keeps its filesystem, not just mounted volumes.
Where bochka fits
If your agents do real work on one machine for hours or days, both options leave gaps: no nested virtualization, no desktop, and keys the agent can read. bochka gives each agent a full VM that keeps its whole disk, with a desktop, a browser and coding agents you drive from your own code.
The whole machine, every time
On Northflank a pause wipes everything outside attached volumes, and on smol cloud the stopped disk keeps billing. bochka saves the whole disk every minute and on stop, and a stopped sandbox costs nothing.
Emulators, desktop and browser inside
Neither exposes /dev/kvm in hosted sandboxes, so Android emulators and VMs will not start, and neither has a desktop, so a computer-use agent waits on a stack you build. bochka ships /dev/kvm and a 60fps desktop with Chromium.
Agents and keys handled for you
Northflank harnesses are reached by terminal or SSH, and smol cloud gives the guest its secrets as plain env vars. bochka lets you prompt and steer seven agents by API, with real keys kept outside in a credentials proxy.
Use bochka when your agents work on one machine for hours or days and should find it as they left it: Docker, emulators, SSH, a desktop and a browser, with coding agents driven from outside and keys that never enter the sandbox. Compare it one to one: bochka vs Northflank and bochka vs smol machines.
Questions people ask
Is Northflank cheaper than smol machines?
It depends on the job. For one agent that never stops, smol machines is $93 a month against $108 on Northflank, and smol is also lower for 50 agents in parallel. For short sessions Northflank wins: 1,000 short jobs at once is $688 on Northflank against $1,389 on smol machines.
Which is faster?
Neither has a result on the CPU benchmark this page uses, so there is no fair speed comparison. bochka did 26.69 runs per second on that test at 4 vCPU / 8 GB.
Do they keep files when a sandbox stops?
smol machines keeps the whole filesystem, though memory paths like /tmp are emptied. Northflank keeps only attached volumes, so packages installed anywhere else reset. bochka keeps the whole disk and a stopped sandbox costs nothing.
Can Northflank or smol machines run Docker?
Yes, both give each sandbox its own kernel, so Docker runs inside; smol's guide says Docker data must live on the machine's ext4 disk. Neither exposes /dev/kvm in hosted sandboxes, while bochka does for Android emulators and VMs.
Which one has GPUs?
Northflank, with GPU sandboxes from L4 to H100 and more under gVisor. smol cloud and bochka run on CPUs only.
Can I self-host either one?
Yes, in different ways. smolvm is open source and runs on your laptop or servers, and Northflank can run sandboxes in your own cloud account or put its control plane in your VPC on Enterprise. bochka is a hosted service only.
Try bochka
Install the CLI, then run bochka new.
Product preview