A follow-up to my previous posts on NX App Sandbox.
In my previous two posts analyzing NX App Sandbox, I repeatedly used this framing:
"NX Sandbox is what you get when you cross a $5 VPS with Vercel's workflow."
That was wrong. It was lazy shorthand, and it undersells NX by an order of magnitude. Here's why.
Let's look at what a typical $5/month VPS actually gives you, using Hetzner CX22 (one of the better-value options) as our reference:
| Resource | $5 VPS (CX22) | The Catch |
|---|---|---|
| vCPU | 1 vCPU, shared | Throttled to 20-40% after sustained use |
| RAM | 2 GB | Hard ceiling. OOM killer lives here. |
| Disk | 40 GB | Shared SSD, noisy neighbor I/O |
| Postgres possible? | Yes, but... | PG + app = ~500MB left for shared_buffers + work_mem |
| Burst capability | None | You get what you pay for, always |
Now let's compare that to what NX Sandbox proposes:
| Dimension | $5 VPS | NX Sandbox | Delta |
|---|---|---|---|
| CPU model | Shared, throttled | Burst — 100% core when needed | 3-5x peak perf |
| RAM model | Hard ceiling (2 GB) | Burst — spike above baseline | No OOM on traffic spikes |
| Postgres RAM | Shares 2 GB with app | Dedicated allocation | work_mem actually usable |
| DB latency | TCP localhost (~0.3ms) | App↔PG same machine, dedicated | Microseconds, not milliseconds |
| Disk I/O | Noisy neighbor | Dedicated allocation | Consistent under load |
| Sustained CPU | Throttled after minutes | Full speed | Long builds don't degrade |
The gap between a $5 VPS and NX Sandbox is bigger than the gap between NX Sandbox and Vercel.
On a $5 VPS, your "1 vCPU" is not a core. It's a time slice. Run stress --cpu 1 for 5 minutes and watch:
Minute 0: 100% CPU utilization
Minute 3: 60% (throttle begins)
Minute 5: 30% (hard throttle)
Minute 10: 20% (capped indefinitely)
This is how cloud providers make $5 VPSes profitable — they oversell hardware 8:1 to 20:1 and throttle anyone who actually uses what they paid for.
NX Sandbox flips this. Burst CPU means:
The same model applies to RAM. A $5 VPS with 2 GB means your Postgres shared_buffers gets 256 MB if you're lucky, and your app gets whatever's left. NX Sandbox gives both the app and the database breathing room when they need it.
This is where the $5 VPS comparison truly collapses. On a $5 VPS, if you run Postgres alongside your app:
Total RAM: 2048 MB
OS + overhead: -400 MB
App runtime: -512 MB (Go binary, generous estimate)
Postgres baseline: -300 MB (shared_buffers=128MB, wal_buffers, connections)
───────
Remaining: 836 MB
Now run a query with a sort or hash:
work_mem = 4MB × 4 concurrent queries = 16 MB
shared_buffers hit ratio? Maybe 60% if you're lucky.
On NX Sandbox with burst memory:
App runtime: 512 MB (same)
Postgres buffers: 512 MB (shared_buffers + work_mem actually meaningful)
Burst headroom: 1+ GB available for query spikes
───────
Result: shared_buffers hit ratio → 95%+
Complex queries complete in milliseconds, not seconds
The database isn't just "closer" — it's actually functional at production scale. A $5 VPS running Postgres is a toy. NX Sandbox running Postgres is a real database.
The correct framing:
NX Sandbox isn't a VPS substitute. It's a VPS upgrade. Same simplicity (push binary, it runs), but with burst compute that no budget VPS can match, dedicated Postgres that actually performs, and a promotion workflow that makes
scp+systemdfeel like 2005.
Or more concisely:
NX Sandbox costs like a VPS, performs like a dedicated server, and deploys like a PaaS.
With the corrected understanding:
| $5 VPS | NX Sandbox | Railway | Fly.io | Vercel | |
|---|---|---|---|---|---|
| CPU model | Shared/throttled | Burst | Shared | Shared (1 vCPU) | Shared |
| RAM model | Hard ceiling | Burst | Hard ceiling | Hard ceiling | Hard ceiling |
| DB performance | ⚠️ Anemic | ✅ Dedicated | ✅ Add-on | ⚠️ Add-on | ❌ 3rd party |
| DB latency | ~0.3ms | Microseconds | ~5ms | ~2-10ms | ~10-50ms |
| Build required? | N/A (manual) | ❌ Pre-built binary | ✅ Git push | ✅ Docker build | ✅ Git push |
| Lock-in | None | None (pg_dump) | Medium | Medium | High |
| Deploy time | Manual (minutes) | ~30s | ~3-8 min | ~2-5 min | ~1-3 min |
| Previous Statement | Why It Was Wrong |
|---|---|
| "Cross a $5 VPS with Vercel" | Implies VPS-grade resource limitations. NX provides burst capabilities that budget VPSes fundamentally cannot offer. |
| "Same simplicity as scp + systemd" | Ignores preview URLs, promotion workflow, DB backup CLI, and entire management layer. |
| Underplayed bwrap isolation | bwrap + cgroups enables per-app resource limits without Docker's overhead. A VPS has zero isolation between your own processes. |
It's not "just use a $5 VPS." It's Coolify — which already has 55K+ GitHub stars, Docker-based isolation, per-app Postgres, and a web dashboard. If Coolify adds "upload pre-built binary" as a deployment option, they eat NX's lunch.
NX's window: build the binary-first workflow so polished, so fast, so invisible that Coolify can't catch up before NX has momentum. The moat isn't technology — it's developer experience.
I apologize for the lazy comparison. NX Sandbox deserves better framing:
NX Sandbox is not a cheap VPS hack. It's a new category: managed infrastructure without the managed compromises. Burst compute. Dedicated Postgres. Binary deployment. Zero lock-in.
The $5 VPS comparison was wrong. This correction sets the record straight.