A real-world workload benchmark inspired by this tweet from dax to test potential sandbox providers for OpenCode.
Median duration per phase of the clone + install + typecheck cycle.
Provider | Phases | Success | Total (med) | Prepare | Bun DL | Bun Unpack | Clone | Install | Cost / Workload | Typecheck |
|---|---|---|---|---|---|---|---|---|---|---|
| PromigencePre-release | 7/7 | 100% | 33.96s | 1.83s | 0.34s | 0.50s | 2.69s | 7.92s | — | 19.07s |
| Isorun | 7/7 | 100% | 34.81s | 1.21s | 0.23s | 0.43s | 1.18s | 8.47s | $0.0043 | 19.21s |
| Miosa | 7/7 | 100% | 39.06s | 0.77s | 0.63s | 0.43s | 2.40s | 10.66s | — | 20.20s |
| Beam | 7/7 | 100% | 45.86s | 2.58s | 0.44s | 0.59s | 1.64s | 10.34s | $0.012 | 24.38s |
| Microsandbox | 7/7 | 100% | 45.89s | 2.18s | 0.34s | 0.53s | 1.79s | 11.09s | $0.0084 | 23.60s |
| Blaxel | 7/7 | 100% | 47.13s | 1.41s | 0.28s | 0.47s | 2.51s | 9.67s | $0.0087 | 25.20s |
| Upstash | 7/7 | 100% | 51.29s | 4.34s | 0.28s | 0.62s | 2.23s | 9.91s | $0.0057 | 24.45s |
| CreateOS | 7/7 | 100% | 51.44s | 5.87s | 0.58s | 0.44s | 3.77s | 12.34s | $0.0095 | 24.33s |
| GravixlayerPre-release | 7/7 | 100% | 53.63s | 4.60s | 1.27s | 0.54s | 3.27s | 12.15s | — | 28.16s |
| Mosaic | 7/7 | 100% | 58.49s | 1.17s | 0.25s | 0.62s | 2.51s | 14.03s | — | 29.09s |
| Sail | 7/7 | 100% | 67.19s | 4.72s | 1.60s | 0.70s | 3.13s | 17.63s | $0.0049 | 31.92s |
| Arker | 7/7 | 100% | 68.41s | 6.76s | 0.30s | 0.62s | 1.87s | 12.92s | — | 42.03s |
| Superserve | 7/7 | 100% | 68.70s | 4.94s | 0.39s | 0.62s | 6.64s | 11.26s | $0.013 | 42.51s |
| Vercel | 7/7 | 100% | 75.03s | 17.59s | 0.22s | 0.81s | 2.62s | 13.18s | $0.028 | 34.40s |
| Daytona | 7/7 | 100% | 75.28s | 7.19s | 0.14s | 0.53s | 1.85s | 16.95s | $0.014 | 36.97s |
| Modal | 7/7 | 100% | 75.35s | 2.37s | 0.34s | 0.56s | 2.57s | 23.41s | $0.020 | 39.94s |
| Buddy | 7/7 | 100% | 78.22s | 5.16s | 0.54s | 0.62s | 2.12s | 30.18s | — | 28.24s |
| Tensorlake | 7/7 | 100% | 82.48s | 13.27s | 0.26s | 0.63s | 2.16s | 15.82s | $0.018 | 44.57s |
| Tenki | 7/7 | 100% | 88.39s | 13.56s | 0.49s | 0.73s | 2.54s | 21.68s | $0.016 | 38.57s |
| Sandbox0 | 7/7 | 100% | 93.19s | 17.12s | 0.35s | 0.66s | 2.71s | 24.52s | $0.0083 | 43.63s |
| Novita | 7/7 | 100% | 96.10s | 22.63s | 2.89s | 1.25s | 5.83s | 22.00s | — | 31.72s |
| Cloudflare | 7/7 | 100% | 125.40s | 3.63s | 0.68s | 0.81s | 7.88s | 38.45s | $0.025 | 57.22s |
| Declaw | 7/7 | 100% | 185.88s | 12.89s | 0.70s | 0.69s | 3.29s | 28.31s | — | 126.59s |
| CodeSandbox | 6/7 | 0% | Failed | — | 0.34s | 0.61s | 1.88s | — | — | — |
| Freestyle | 6/7 | 0% | Failed | 18.56s | 1.26s | 1.53s | 5.67s | — | — | — |
| Namespace | 6/7 | 0% | Failed | 7.41s | 0.33s | 0.55s | 1.83s | — | — | — |
| E2B | 5/7 | 0% | Failed | 9.55s | 0.80s | 0.80s | — | — | — | — |
| Cloud Run | 2/7 | 0% | Failed | — | — | — | — | — | — | — |
| sfcompute | 2/7 | 0% | Failed | — | — | — | — | — | — | — |
| Archil | 0/7 | 0% | Failed | — | — | — | — | — | — | — |
| Hopx | 0/7 | 0% | Failed | — | — | — | — | — | — | — |
| Northflank | 0/7 | 0% | Failed | — | — | — | — | — | — | — |
| Run Cloud | 0/7 | 0% | Failed | — | — | — | — | — | — | — |
if you think you have a good option run this
— dax (@thdxr) July 17, 2026
curl -fsSL https://t.co/sKj7k7aqWZ | BENCH_PROVIDER=unknown BENCH_REGION=unknown bash
Want to see a provider added?
Each run executes a cold clone + install + typecheck cycle of the opencode repository inside a fresh sandbox: install system packages and Node.js, download and unpack Bun, shallow-clone opencode at a pinned commit, run bun install, then bun typecheck.
Each provider runs 1 iteration per scheduled benchmark run. Benchmarks run via GitHub Actions and results are committed to the public benchmarks repo.
The Composite Score is the median number of the 7 benchmark phases (prepare, cache clear, bun download, bun unpack, clone, install, typecheck) a provider completed before failing, if any — shown as a fraction like 7/7.
The other metrics (Total, Prepare, Clone, Install, Typecheck) are real-world phase durations in seconds — providers are ranked by median duration (lower is better) when one of those is selected. The benchmark requires curl, root/sudo, and a package manager (apt, dnf, or apk) inside the sandbox — providers without those capabilities fail early, which shows up as a low phase count.