Upstash Box vs smol machines
Upstash Box gives each agent a light Docker container with Claude Code, Codex or OpenCode built in, which pauses when idle and wakes on the next request. smol machines gives each agent a microVM with its own kernel that can run Docker, branch a running machine with its memory, and run the same way on your own servers.
The companies and products
Upstash Box
Upstash Box is a cloud computer for AI agents from Upstash, the company known for serverless Redis, Vector and QStash.
Each box is a Docker container with its own filesystem, shell, git and an optional coding agent such as Claude Code, Codex or OpenCode, which you drive from TypeScript or Python SDKs. A box pauses when it sits idle, keeps its files, and you pay for the CPU it actually uses. Upstash built it to run its own Context7 service and opened it to everyone in March 2026.
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. “10th cheapest of 345” means 9 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 | Upstash Box: price rank | smol machines: price rank | boat: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month A software factory needs Docker for databases and test services: smol machines runs it inside the VM, Upstash Box does not, and boat adds /dev/kvm and SSH on top. | 61st of 367, with limits $464 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 Upstash keeps an always-on box for a flat monthly price, smol machines bills every running hour, and boat gives the agent a full machine with a desktop and a credentials proxy. | 103rd of 366, with limits $475 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 well: Upstash bills only the CPU a box uses, and smol machines has a one-minute minimum and branches of a warm machine. | 10th cheapest of 345 $119 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 Both wake a user's stopped sandbox on the next request; boat fits closest by also giving each user a full VM with hosting on up to 50 ports. | 2nd cheapest of 361 $222 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, which Upstash snapshots of the filesystem do not do. | 352nd of 360, with limits $8,068 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 | 52nd cheapest of 364 $1,011 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 CI jobs that build container images need Docker, which smol machines has and Upstash does not; boat adds /dev/kvm for Android builds. | 120th cheapest of 377 $1,520 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 An Upstash keep-alive box is a cheap light dev box, while a smol machine that runs all day pays its base fee every hour. | 10th cheapest of 368 $20 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: Upstash ships a headless browser and smol machines a guide to run your own, while boat streams a Linux desktop at 60fps. | 73rd of 369, with limits $76 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 | 49th of 367, with limits $38 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 | 37th cheapest of 346 $400 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 | 200th of 338, with limits $8,000 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 | 225th of 360, with limits $259 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 | 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 | Upstash Box | smol machines | boat |
|---|---|---|---|
| Isolation | Docker container per box on AWS | libkrun microVM with its own guest kernel | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Docker inside | Not documented; the box is itself a Docker container | Yes, Docker data lives on the machine's ext4 disk | Yes, Docker and systemd run as on any Linux server |
| Nested virtualization | No | Not exposed on hosted machines; a local smolvm flag only | Yes, /dev/kvm for Android emulators and VMs |
| Biggest machine | Large: 8 vCPU / 16 GB | 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 |
| Disk | 5, 10 or 20 GB by size | Up to 200 GB on Pro and Startup | 50 GB at the default 4 vCPU / 8 GB size, 12 to 251 GB by size |
| Stop and resume | Pauses itself when idle and keeps its files; storage keeps billing | Filesystem survives a stop, memory paths are emptied; stopped disk keeps billing | Disk saved every minute and on stop; a stopped sandbox costs nothing |
| Fork | Snapshot a running box's filesystem and start many boxes from it | Branch a running machine with its memory and processes | Fork a running sandbox with its disk |
| Wake on request | Yes; a request to a public URL resumes a paused box | Yes; a command starts a stopped machine, idle apps wake on the next request | No; a stopped sandbox is started by API |
| Shell access | SSH through a gateway, plus exec APIs | Command API and a WebSocket terminal capped at one hour per connection; no SSH | SSH, plus a command API and terminal |
| Inbound access | HTTPS URL per port, public unless you add a token; no raw TCP | Up to 16 published ports; no dedicated IP | HTTPS URLs for up to 50 ports, token-protected by default; raw TCP; dedicated IPv4 or IPv6 |
| Outbound rules | Allow all, deny all, or allow and deny by domain and CIDR | Blocked, open, or an allowlist of hosts and CIDR ranges | Open internet, no provider-side allowlist |
| Desktop and browser | Managed headless Chromium with AI page actions and CDP; no desktop | No hosted desktop; a guide shows running your own Chromium | Linux desktop streamed at 60fps, Chromium and computer use built in |
| Coding agents | Claude Code, Codex and OpenCode built in, with run and stream APIs, webhooks and scheduled prompts | Registry images with the Codex CLI, run through the command API | Claude Code, Codex and five other agents preinstalled, with a prompt, steer and events API |
| Keeping API keys out of the sandbox | Host proxy injects headers into outbound HTTPS; set when the box is created | Cloud secrets are environment variables the guest can read | Credentials proxy for any HTTPS API; switch a credential to another account when credits run out |
Every feature Battleships tracks (43)
| Feature | Upstash Box | smol machines | boat |
|---|---|---|---|
| Full VM (own kernel) | No | Yes | Yes |
| Docker inside | No | 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 | Yes | 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 | 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 | 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 | No | Yes |
| Secret proxy for any API | Yes | No | Yes |
| Preinstalled agents | Yes | Yes | Yes |
| Agent harness API | Yes | No | Yes |
| MCP server | Yes | Yes | No |
| GPU | No | No | No |
| Windows | No | No | No |
| Arm64 | Yes | Yes | No |
| Self-hosting | No | Yes | No |
| BYOC | No | 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 | Not published | Not published | No |
| SSO | No | Yes | No |
| SOC 2 | Yes | No | No |
| HIPAA | No | No | No |
| EU data residency | No | No | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
There is no comparable measurement for either: neither Upstash Box nor smol cloud has been run on the StarSling hpc-sandbox-benchmarks CPU test. boat did 26.69 runs per second on that Node.js build-and-test loop at 4 vCPU / 8 GB, on dedicated AMD Ryzen 9 9950X hosts. smol machines publishes a boot time under 200ms for smolvm, which is a start-time figure, 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. Upstash Box 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 | Upstash Box, a month | smol machines, a month | boat, 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 | $21 · Pay as You Go | $25 · Standard | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $21 · Pay as You Go | $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 | $900 · Pay as You Go · 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 | $306 · Pay as You Go | $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 | $1,822 · Pay as You Go | $1,389 · Startup | $2,000 · $2000/mo · with limits |
Upstash Box: A standard box is billed for the CPU it actually uses, at $0.10, $0.20 or $0.40 per active CPU hour for Small, Medium and Large, plus $0.10 per GB-month of storage, and RAM is free. A keep-alive box costs a flat $8, $16 or $32 a month whether it is busy or not.
smol machines: smol cloud charges a base fee for every 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 disk.
Limits in those scenarios
Upstash Box does not run Docker inside a box, so 50 agents in parallel with Docker does not fit there, and its disks stop at 5, 10 or 20 GB by size. Its egress price is not published. 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 at once needs Startup. boat's limit is start rate: the $2,000 plan queues starts above 90 a minute, so that burst does not fit.
| Scenario | Upstash Box | smol machines | boat |
|---|---|---|---|
| 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 Upstash Box when
your agents are light, mostly wait, need a built-in coding agent with webhooks and schedules, or must run in the US.
- Coding agents built in. Teams that want Claude Code, Codex or OpenCode running with webhooks and scheduled prompts get it without writing a harness.
- Idle costs no CPU. Good for agents that wait a lot: an idle box costs no CPU, RAM is not billed, and a request wakes it.
- Cheap always-on boxes. A keep-alive box stays on all month for a flat price, which suits one light agent that never stops.
Use smol machines when
you need a real VM with Docker, live branches with memory, bigger machines, or the same open-source engine on your own servers.
- A real VM that runs Docker. Agents that need Docker or their own kernel get a microVM, where an Upstash box is itself a container.
- Live branches with memory. Useful for RL and test fan-out: branch a running machine with its memory and processes into many children.
- Open source, from laptop to your servers. Teams that want the same VM locally, in a hosted cloud and on their own servers can use one open-source engine.
Where boat fits
If your agents do real software work, look at boat. It gives each agent a full VM with Docker, /dev/kvm, SSH, a 60fps desktop and coding agents you drive from outside, with real keys kept out of the sandbox. Upstash Box and smol machines each cover part of that list, and neither covers all of it.
Docker and emulators both work
An Upstash box cannot run Docker, so the 50-agent scenario does not fit there. smol machines runs Docker but does not expose nested virtualization on hosted machines, so an Android emulator or a VM inside the sandbox fails on both.
A desktop the agent can see
A computer-use agent needs a screen. Upstash gives a headless browser with no desktop, and on smol cloud you build, package and maintain your own desktop and screen stream. boat streams a Linux desktop at 60fps out of the box.
Keys that never enter the sandbox
On smol cloud secrets are plaintext inside the guest, so one prompt injection can leak them. Upstash's header proxy is fixed when the box is created. boat's credentials proxy works with any HTTPS API and can switch to another account when credits run out.
Use boat when your agents need a whole machine: Docker, emulators, SSH, a desktop, hosting on many ports, and coding agents you drive from outside with keys that never enter the sandbox. Compare it one to one: boat vs Upstash Box and boat vs smol machines.
Questions people ask
Is Upstash Box cheaper than smol machines?
Where both fit, Upstash costs less in three of four scenarios: one agent that never stops is $21 a month on Upstash against $93 on smol machines. For 1,000 short jobs at once, smol machines is $1,389 a month against $1,822 on Upstash. For 50 agents with Docker, Upstash does not fit, smol machines is $1,139 a month and boat is $317.
Can I run Docker in Upstash Box or smol machines?
smol machines runs Docker inside the VM, with Docker data on the machine's ext4 disk. Upstash's docs do not offer it, since each box is itself a Docker container. boat runs Docker, docker compose and systemd as on any Linux server.
Which is faster?
Neither has a comparable CPU measurement, so there is no fair speed ratio. boat did 26.69 runs per second on the hpc-sandbox-benchmarks Node.js test at 4 vCPU / 8 GB.
Can they fork a running sandbox?
smol machines branches a running machine with its memory and running processes. Upstash snapshots a running box's filesystem and starts new boxes from it. boat forks a running sandbox with its disk.
Do they have a desktop for computer use?
No. Upstash gives a headless Chromium with AI page actions, and smol machines documents how to run your own Chromium inside a machine. boat streams a full Linux desktop at 60fps with computer-use tools preinstalled.
Is boat SOC 2 compliant?
SOC 2 is in progress. We're open about where we stand: live status at status.ascii.dev and our data retention policy at docs.boat.dev/data-retention.
Try boat
Install the CLI, then run boat new.
7-day free trial