Railway vs Upstash Box
Railway is an app platform whose sandboxes are Linux VMs that are destroyed when they go idle, next to your apps and databases. Upstash Box gives each agent a light Docker container that pauses when idle, keeps its files, and wakes on the next request.
The companies and products
Railway
Railway is a cloud platform for deploying web apps, servers and databases, which now also sells sandboxes and cloud agents.
Railway's main product is app hosting: you deploy services and databases as containers on its own hardware. In 2026 it added Sandboxes, isolated Linux VMs you create from the CLI or a TypeScript SDK, run commands in and destroy, and Cloud Agents, a personal VM for running a coding agent, in early access. It suits teams already hosting on Railway who want throwaway machines next to their apps.
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.
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. “16th cheapest of 366” means 15 of the other 365 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 | Railway: price rank | Upstash Box: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Both are a compromise for a software factory: Railway sandboxes are destroyed when idle and an Upstash box cannot run Docker, while bochka keeps the disk and runs Docker. | 51st of 367, with limits $342 a month | 61st of 367, with limits $464 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB Railway fits an always-on assistant with the idle timeout set to 0 or a Cloud Agent, while Upstash fits only as a compromise here. | 16th cheapest of 366 $3,977 a month | 103rd of 366, with limits $475 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 Upstash Box ranks 10th for short code runs because an idle box costs no CPU, ahead of Railway, which bills CPU used and memory in use. | 36th cheapest of 345 $413 a month | 10th cheapest of 345 $119 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 Box ranks 2nd and bochka ranks 1st, while Railway's cap of 100 sandboxes per environment on Pro makes it a compromise for 300 users at once. | 42nd of 361, with limits $290 a month | 2nd cheapest of 361 $222 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 | 78th of 360, with limits $4,450 a month | 352nd of 360, with limits $8,068 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 | 108th of 364, with limits $364 a month | 52nd cheapest of 364 $1,011 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 neither Railway's sandbox docs nor Upstash's container boxes offer, and which bochka has on every machine. | 113th cheapest of 377 $1,210 a month | 120th cheapest of 377 $1,520 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB A flat-price keep-alive box makes Upstash a cheap light dev box, while Railway's Cloud Agents are early access and fixed at 4 vCPU / 4 GB on Pro. | 66th cheapest of 368 $89 a month | 10th cheapest of 368 $20 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 Both are headless, with no desktop to stream or drive, so computer-use agents are a compromise on either, while bochka streams a full desktop at 60fps. | 77th of 369, with limits $103 a month | 73rd of 369, with limits $76 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 | 53rd of 367, with limits $93 a month | 49th of 367, with limits $38 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 | 60th cheapest of 346 $570 a month | 37th cheapest of 346 $400 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 | 109th of 338, with limits $2,988 a month | 200th of 338, with limits $8,000 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 | 43rd of 360, with limits $574 a month | 225th of 360, with limits $259 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 | Railway | Upstash Box | bochka |
|---|---|---|---|
| Isolation | Sandboxes are isolated Linux VMs; app services are containers | One Docker container per box on AWS | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| When the sandbox goes idle | Destroyed after the idle timeout (30 minutes by default); files survive only in checkpoints you take | Pauses itself and keeps its files; storage keeps billing while paused | You stop it; the disk is saved every minute and on stop, and a stopped sandbox costs nothing |
| Docker and nested virtualization | Root shell on Ubuntu; the sandbox docs do not mention Docker or /dev/kvm | Not documented; the box is itself a Docker container, and custom images are listed as coming soon | Docker, root, systemd and /dev/kvm on every machine |
| Biggest machine | 8 vCPU / 8 GB on Hobby, 32 vCPU / 32 GB on Pro | Large: 8 vCPU / 16 GB | 8 vCPU / 16 GB on the $20 plan, 16 vCPU / 32 GB from $100 |
| Disk | Sandbox disk size and price are not published | 5, 10 or 20 GB by size, billed per GB-month | 50 GB at the default 4 vCPU / 8 GB size, 12 to 251 GB by size |
| Wake on request | No; a destroyed sandbox is booted again from a checkpoint | Yes; a request to a public URL resumes a paused box and waits for the app | No; a stopped sandbox is started by API |
| Sandboxes at once | 50 per environment on Hobby, 100 on Pro; Enterprise can ask for more | 1,000 on Pay as You Go, raised on request | 100 to 2,000 by plan |
| Desktop and browser | Headless: terminal, exec and SSH only | Managed headless Chromium with AI page actions and CDP; no desktop | Linux desktop streamed at 60fps, Chromium, computer use and browser control |
| Reaching the sandbox | Up to 10 public HTTPS domains, set only at creation; SSH and port forwarding | HTTPS URL per port, public unless you add a token or basic auth; SSH through a gateway; no raw TCP | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv6 or IPv4 |
| Outbound rules | No outbound allowlist for sandboxes | Allow all, deny all, or allow and deny by domain and CIDR, changeable on a running box | Open internet, no provider-side allowlist |
| Coding agents | Claude Code, Codex, OpenCode and Pi preinstalled; you run them headless through exec | Claude Code, Codex and OpenCode built in, with run and stream APIs, webhooks and scheduled prompts | Claude Code, Codex, OpenCode and more preinstalled, with a prompt, steer and events API |
| Keeping API keys out of the sandbox | Secrets are baked into the sandbox as environment variables, or signed in and saved in a checkpoint | Host proxy injects headers into outbound HTTPS on port 443; set when the box is created | AI credentials proxy for model providers and any HTTPS API you register; switch a credential to another account when credits run out |
| Apps and databases next to the sandbox | Deploy Postgres, Redis and services in the same project; a sandbox can join their private network | No private network for boxes | No hosted databases or app services; host your own inside a sandbox |
| Regions | US West, US East, Amsterdam and Singapore | US only (AWS us-east-1) | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Railway | Upstash Box | bochka |
|---|---|---|---|
| Full VM (own kernel) | Yes | No | Yes |
| Docker inside | Not published | No | Yes |
| Nested virtualization | No | No | Yes |
| Root | Yes | Not published | Yes |
| Systemd | Not published | Not published | Yes |
| Desktop GUI | No | No | Yes |
| Browser | Yes | Yes | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | Yes | 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 | 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 | No | Yes | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | No | No | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | No | Yes | No |
| Secret proxy | No | Yes | Yes |
| Secret proxy for any API | No | Yes | Yes |
| Preinstalled agents | Yes | Yes | Yes |
| Agent harness API | Yes | Yes | Yes |
| MCP server | Yes | Yes | No |
| GPU | No | No | No |
| Windows | No | No | No |
| Arm64 | No | Yes | No |
| Self-hosting | No | No | No |
| BYOC | Yes | No | No |
| Open source | No | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | Yes | Not published | Yes |
| Usage per sandbox (API) | No | Yes | Yes |
| Audit logs | Yes | Not published | No |
| SSO | Yes | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Yes | No | No |
| EU data residency | Yes | No | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
Neither Railway nor Upstash Box has a result in StarSling's hpc-sandbox-benchmarks CPU test, so we cannot say which of the two is faster. bochka did 26.69 Node.js build-and-test runs per second at 4 vCPU / 8 GB in that benchmark, on dedicated AMD Ryzen 9 9950X hosts.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Railway and Upstash Box 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 | Railway, a month | Upstash Box, 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 | $16 · Hobby · with limits | $21 · Pay as You Go | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $70 · Hobby · with limits | $21 · Pay as You Go | $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 | $739 · Hobby · with limits | $900 · Pay as You Go · with limits | $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 | $223 · Pro · with limits | $306 · 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 | $781 · Pro · with limits | $1,822 · Pay as You Go | $2,000 · $2000/mo · with limits |
Railway: Railway bills sandboxes per second at $50 per vCPU-month on CPU actually used and $50 per GB-month on memory in use, plus $0.05 per GB out, and memory keeps billing while a sandbox waits. The Hobby ($5) and Pro ($20) fees count toward usage, and sandbox disk has no published price, so our bills leave it out.
Upstash Box: A standard box is billed for 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 busy or not.
Upstash Box: Plans start at $20 a month, and the whole fee is usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Railway marks every scenario as not a clean fit because it is an app platform first and does not publish a sandbox disk price, and its cap of 100 sandboxes per environment on Pro means 300 users or 1,000 jobs at once need several environments. Upstash Box cannot run Docker inside a box, so the 50-agent scenario does not fit there, and its keep-alive boxes bill whether used or not, with no published egress price. On bochka, the 1,000-job burst is queued above 90 starts a minute and needs more starts per day than the $2,000 plan allows.
| Scenario | Railway | Upstash Box | 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 Railway when
your app and databases already live on Railway and you want short-lived VM sandboxes on the same private network, bigger machines, or regions in the US, EU and Asia.
- Your apps and databases in one place. Useful if your app already runs on Railway: a sandbox can join the private network of your Postgres and services.
- Regions on three continents. Useful if your users are spread out: Railway runs in California, Virginia, Amsterdam and Singapore, while Upstash Box runs in us-east-1 only.
- Bigger VMs. Useful for heavy builds: Railway sandboxes are VMs that go up to 32 vCPU / 32 GB on Pro, against 8 vCPU / 16 GB on Upstash.
Use Upstash Box when
your agents mostly wait, need to wake on an incoming request, must stay inside a strict outbound allowlist, or you need 1,000 boxes at once in the US.
- Idle costs no CPU, and a request wakes the box. Good for agents that wait a lot: an idle box costs no CPU, RAM is free, and a request to its URL wakes it.
- Outbound network rules. Useful when an agent may only reach a short list of domains or IP ranges, changeable on a running box.
- Many boxes at once. Useful for big bursts: Pay as You Go runs 1,000 boxes at once, where Railway caps Pro at 100 per environment.
Where bochka fits
If your agents work for hours or days and need a real machine, look at bochka. Each sandbox is a full VM with Docker, /dev/kvm and a 60fps desktop that stops instead of disappearing, keeps its disk, and runs coding agents you drive from outside while their keys stay outside.
Docker and KVM on every machine
An Upstash box is itself a container with no Docker inside, and Railway's sandbox docs do not mention Docker or /dev/kvm. That is why 50 agents running Docker do not fit cleanly on either.
A disk that stays
Railway destroys an idle sandbox after 30 minutes by default, and turning that off means memory bills until you destroy it. Upstash keeps files, but disks stop at 20 GB and storage bills while paused.
A desktop the agent can see
Both are headless: Railway gives a terminal and Upstash a Chromium driven over CDP. A computer-use agent on bochka gets a full Linux desktop at 60fps, with desktop apps and dialogs in reach.
Use bochka when your agents need a real machine for hours or days: Docker, /dev/kvm, a desktop, a big disk that stays, and coding agents you drive from outside. Compare it one to one: bochka vs Railway and bochka vs Upstash Box.
Questions people ask
Is Railway cheaper than Upstash Box?
In four of the five scenarios on this page, yes: one agent on workdays is $16 against $21, 50 agents are $739 against $900, and sandboxes for your users are $223 against $306. Upstash is lower for one agent that never stops, $21 against $70, and Railway's numbers leave out disk, which it does not price.
Which is faster, Railway or Upstash Box?
Neither has a result in StarSling's public CPU benchmark, so there is no fair comparison. bochka did 26.69 Node.js build-and-test runs per second there at 4 vCPU / 8 GB.
Can Railway or Upstash Box run Docker?
Railway's sandbox docs give you a root shell on Ubuntu but do not mention Docker. Each Upstash box is itself a Docker container, and custom images are listed as coming soon. bochka sandboxes are full VMs where Docker, docker compose and systemd work as on any Linux server.
Are Railway sandboxes and Upstash boxes VMs or containers?
Railway calls each sandbox a fully isolated virtual machine, while its app services are containers. An Upstash box is a Docker container with its own filesystem, process tree and network stack. Every bochka sandbox is a full VM with its own kernel.
What happens when a sandbox goes idle?
Railway destroys it once the idle timeout runs out, 30 minutes by default, unless you set it to 0; files survive only in checkpoints. Upstash pauses the box after 6 hours idle on Pay as You Go, keeps its files and wakes it on the next request. bochka stops a sandbox, keeps its disk and charges nothing while stopped.
Where do Railway and Upstash Box run?
Railway has regions in California, Virginia, Amsterdam and Singapore, and new sandboxes start in US West unless you pick one. Upstash Box runs in AWS us-east-1 only, with more regions planned. bochka runs in the EU, in Germany, Finland and France.
Try bochka
Install the CLI, then run bochka new.
Product preview