Upstash Box vs Agent 37
Both give each AI agent its own persistent machine in the US. Upstash Box runs a light container billed only for the CPU it uses, while Agent 37 runs a gVisor sandbox per user that can sleep with its memory kept, plus an opt-in VM type for Docker.
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.
Agent 37
Agent 37 hosts AI agents, one isolated, always-on sandbox per user, behind one API.
You create an instance from a template (Hermes, OpenClaw, Claude Code, Codex, OpenCode, Pi, Grok or your own Docker image) and talk to it through a chat API, files, exec, SSH and HTTPS URLs. The default instance is a container enforced by gVisor; a VM type gives a full Linux machine with its own kernel for Docker, Kubernetes and Android emulators. It is built for companies that give each of their customers an agent.
- Where it runs
- Dedicated servers in the United States
- Instance types
- Default (shared), Performance (dedicated cores), VM
- Compliance
- SOC 2 Type I, Type II in progress
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 | Agent 37: 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 needs Docker, which an Upstash container does not offer and Agent 37 runs only on its VM type at 2.5 times the compute rate; bochka runs it in every sandbox. | 61st of 367, with limits $464 a month | 2nd cheapest of 367 $551 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB Agent 37 is built for this: one always-on assistant per user that sleeps when idle, keeps its memory and wakes on the next message; Upstash keeps a light container on instead. | 103rd of 366, with limits $475 a month | Cheapest of 366 $279 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 Agent 37's small default sandboxes cost very little per minute. | 10th cheapest of 345 $119 a month | Cheapest of 345 $22 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 Upstash allows 1,000 boxes at once and wakes a user's box on the next request, while Agent 37's self-serve tiers stop at 200 instances, counting sleeping ones. | 2nd cheapest of 361 $222 a month | 30th of 361, with limits $79 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 | 352nd of 360, with limits $8,068 a month | 6th of 360, with limits $363 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 | 90th of 364, with limits $58 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 containers need Docker, which rules out an Upstash box and Agent 37's default type; bochka has Docker and /dev/kvm in every sandbox. | 120th cheapest of 377 $1,520 a month | 2nd cheapest of 377 $84 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB Both keep a cheap machine around the clock; Agent 37 costs less to keep idle, and Upstash sells a flat-price keep-alive box. | 10th cheapest of 368 $20 a month | 3rd cheapest of 368 $12 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 Upstash has only a headless browser with no desktop, Agent 37 adds a noVNC desktop through a template, and bochka streams a 60fps desktop out of the box. | 73rd of 369, with limits $76 a month | Cheapest of 369 $53 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 | 48th of 367, with limits $29 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 | Cheapest of 346 $32 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 | 36th of 338, with limits $648 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 Upstash can snapshot a running box and start many copies from it, Agent 37 has no fork, and bochka forks a running sandbox directly. | 225th of 360, with limits $259 a month | Cheapest of 360 $43 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 | Agent 37 | bochka |
|---|---|---|---|
| Isolation | One Docker container per box on AWS | gVisor sandbox by default; full VM as an opt-in instance type | Every sandbox is a full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Docker inside | Not offered; the box is itself a container and custom images are listed as coming soon | Only on the VM type, at 2.5x the default compute rate | Yes, Docker and systemd in every sandbox |
| Nested virtualization | No VM support documented | /dev/kvm on the VM type, with a ready Android template | /dev/kvm in every sandbox, Android emulator works |
| Biggest machine and disk | Large: 8 vCPU / 16 GB with a 20 GB disk; 10 GB at 4 vCPU | Up to 16 vCPU / 32 GB; at most 20 GB disk at 4 vCPU / 8 GB | Up to 16 vCPU / 32 GB on the $100 plan and above; 50 GB disk at 4 vCPU / 8 GB |
| Idle behavior | Idle CPU costs nothing; the box pauses after an idle timeout and keeps its files | Opt-in auto-sleep after a quiet period (default 15 minutes), with memory checkpointed | No idle timer; a time limit you set, or none; disk kept and a stopped sandbox costs nothing |
| Wake on request | Yes; a request to a public URL resumes a paused box | Yes; a sleeping instance wakes on the next request | No; a stopped sandbox is started by API |
| Fork | Snapshot a running box and start many new boxes from it | No fork; daily backups plus one on-demand backup, restored in place only | Fork a running sandbox with its disk; snapshots every minute |
| Custom images | Not yet; environments are reused through filesystem snapshots | Your own linux/amd64 Docker image as a template | Templates from named snapshots, no Dockerfile builds |
| Desktop and browser | Managed headless Chromium with AI page actions and CDP; no desktop | noVNC desktop through a template build or the Ubuntu VM template | Linux desktop streamed at 60fps with Chromium and computer-use tools |
| Built-in agents | Claude Code, Codex and OpenCode, with run and stream APIs, webhooks and scheduled prompts | Hermes, OpenClaw, Claude Code, Codex, Grok, OpenCode and Pi, with a chat API per instance | Claude Code, Codex, pi, OpenCode and more, with a prompt, steer and events API |
| Keys kept out of the sandbox | Host proxy adds headers to outbound HTTPS on port 443, set when the box is created | Managed LLM, search and Composio through a per-instance token; your own keys go in as env vars | Proxy for model providers and any HTTPS API; switch a credential to another account when credits run out |
| Outbound rules | Allow or deny by domain and CIDR, changeable on a running box | Open internet, no allowlist documented | Open internet, no provider-side allowlist |
| Inbound access | HTTPS URL per port, SSH through a gateway; no raw TCP | HTTPS URL per port, signed URLs, custom domains; SSH through a WebSocket tunnel; no public IP | HTTPS URLs for up to 50 ports, token-protected by default; raw TCP |
| Regions | AWS us-east-1 only | Dedicated servers in the United States | EU only (Germany, Finland, France), EU data residency |
Every feature Battleships tracks (43)
| Feature | Upstash Box | Agent 37 | bochka |
|---|---|---|---|
| Full VM (own kernel) | No | No | Yes |
| Docker inside | No | No | Yes |
| Nested virtualization | No | No | Yes |
| Root | Not published | Yes | Yes |
| Systemd | Not published | Not published | Yes |
| Desktop GUI | No | Yes | Yes |
| Browser | Yes | Yes | Yes |
| Computer-use API | No | Yes | Yes |
| SSH | Yes | Yes | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | Yes | Yes |
| Automatic snapshots | No | Yes | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | Yes | Yes | Yes |
| Memory fork | No | No | 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 | No | No |
| Secret proxy | Yes | Yes | Yes |
| Secret proxy for any API | Yes | No | Yes |
| Preinstalled agents | Yes | Yes | Yes |
| Agent harness API | Yes | Yes | Yes |
| MCP server | Yes | No | No |
| GPU | No | No | No |
| Windows | No | No | No |
| Arm64 | Yes | No | No |
| Self-hosting | No | No | No |
| BYOC | No | No | No |
| Open source | No | No | 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 | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | No | No | No |
| EU data residency | No | No | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
Neither Upstash Box nor Agent 37 has a result on the hpc-sandbox-benchmarks Node.js build-and-test loop, so there is no comparable measurement between them. bochka did 26.69 runs per second on that test at 4 vCPU / 8 GB, on dedicated AMD Ryzen 9 9950X hosts. Agent 37 says its default instances share host resources and sells a Performance type on dedicated cores.
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 Agent 37 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 | Agent 37, 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 | $21 · Pay as You Go | $6 · Wallet (any top-up) | $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 | $12 · Wallet (any top-up) | $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 | $329 · Wallet ($100 lifetime top-ups) | $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 | $33 · Wallet ($250 lifetime top-ups) · with limits | $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 | $73 · Wallet ($250 lifetime top-ups) · with limits | $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 with CPU and storage included.
Agent 37: A prepaid wallet with no plan fee, metered per minute: $0.80 per vCPU and $0.70 per GB of RAM per month while running, and $0.09 per GB of disk per month even while asleep. Performance compute costs 4x and VM compute 2.5x the default rate.
Agent 37: 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 cannot run Docker inside a box, so the 50-agent scenario does not fit there, and its disks stop at 5, 10 or 20 GB by size. Agent 37 holds at most 200 instances on its top self-serve tier, counting sleeping and stopped ones, so the 300-at-once user sandboxes and the 1,000-job burst do not fit; Upstash runs both. Neither publishes an egress price. bochka queues the 1,000-job burst because it caps how fast sandboxes start.
| Scenario | Upstash Box | Agent 37 | bochka |
|---|---|---|---|
| One coding agent, workdays |
|
| 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 Upstash Box when
your agents mostly wait, should wake on an incoming request, must stay inside an outbound allowlist, or need many light boxes at once.
- Pay only for CPU you use. For agents that wait a lot: an idle box costs no CPU, RAM is never billed, and a request wakes it.
- Big bursts by default. Pay as You Go runs 1,000 boxes at once, so short jobs and per-user sandboxes start without queueing.
- Outbound allowlists. Useful when an agent may only reach a short list of domains or IP ranges, changeable on a running box.
Use Agent 37 when
you host one mostly idle assistant per customer that should sleep with its memory kept, and some of them need a VM or your own Docker image.
- Sleeps with its memory kept. For one assistant per customer: an instance sleeps when idle, saves its memory and wakes on the next message.
- A VM type when you need one. When some agents need Docker or an Android emulator, the VM type gives a full kernel and /dev/kvm.
- Your own image, dedicated cores. Build templates from your own Docker image, and pick the Performance type on dedicated cores for steady speed.
Where bochka fits
Upstash Box and Agent 37 are both built around agents that sit idle and wake up cheaply. If your agents spend their hours installing, building, testing and running Docker, look at bochka: every sandbox is a full VM, it can be forked while it runs, and keys stay outside for any API.
Docker and systemd in every sandbox
An Upstash box is itself a container, so an agent cannot start a database in Docker there. On Agent 37 Docker needs the VM type, which costs 2.5 times the compute rate and has no init system.
Fork a running machine
Agent 37 has no fork, so every new try rebuilds its state from scratch. Upstash can copy a running box through a snapshot; bochka forks the running sandbox directly and saves its disk every minute.
A desktop and room to work
Upstash has no desktop and a 10 GB disk at 4 vCPU, and Agent 37 needs a template build for a noVNC desktop. bochka streams a 60fps desktop with a 50 GB disk at that size.
Use bochka when your agents do real work for hours: Docker, emulators and a desktop on a full VM, with forks of running machines and keys kept outside for any API. Compare it one to one: bochka vs Upstash Box and bochka vs Agent 37.
Questions people ask
Is Upstash Box cheaper than Agent 37?
Mostly no. Agent 37 costs less for one coding agent on workdays, $6 against $21 a month, and for one agent that never stops, $12 against $21. Upstash fits the 300-at-once user sandboxes and the 1,000-job burst, which go past Agent 37's 200-instance cap.
Which is faster, Upstash Box or Agent 37?
There is no comparable measurement: neither has a result on the hpc-sandbox-benchmarks CPU test. bochka did 26.69 runs per second there. Agent 37 sells a Performance type on dedicated cores for steady speed.
Can Upstash Box or Agent 37 run Docker?
Upstash Box does not offer Docker inside a box, which is itself a container. Agent 37 runs Docker only on its VM type, at 2.5 times the default compute rate. On bochka, Docker works in every sandbox.
Which one keeps an idle agent cheapest?
Both are built for it. Upstash bills no CPU while a box is idle and never bills RAM, and Agent 37 can sleep an instance, keep its memory and bill only its disk. bochka stops a sandbox at a time limit you set, and a stopped sandbox costs nothing.
Where do Upstash Box and Agent 37 run?
Upstash Box runs in AWS us-east-1, and Agent 37 runs on dedicated servers in the United States. bochka runs only in the EU, in Germany, Finland and France.
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