$ ./benchmark_sandboxes.py --comprehensive
Last updated: 2026-01-17
== SANDBOX PROVIDER COMPARISON (5 PROVIDERS) ==

Benchmarked with real API calls. Includes performance, persistence, snapshots, images, and pricing.


== 1. PERFORMANCE BENCHMARKS ==
Provider Cold Start Cmd Exec File I/O Python
E2B 0.515s BEST 0.539s 0.512s 0.288s
Daytona 0.753s 0.975s 0.386s BEST 0.220s BEST
Sprites ~1s (wake) 0.970s 0.957s 0.543s
Modal 1.512s 1.913s 2.278s 0.222s
Blaxel 2.9s / 25ms 0.539s 0.992s N/A

== 2. FILESYSTEM ==
Provider Access Persistence How It Works
E2B Full Linux FS Ephemeral SDK: filesystem.write/read/list. Full /home/user access. Lost on kill.
Daytona Full Linux FS Optional SDK: fs.upload/download/list. Direct file ops + Git. Persistent option.
Sprites Full Linux FS BEST Persistent CLI: sprite cp, sprite exec. 100GB disk. Checkpoints at /.sprite/
Modal Container FS Volumes Mount Volumes at paths. NetworkFileSystem for shared. Up to 1TB.
Blaxel Full Linux FS Standby SDK: fs.write/read. Memory preserved on standby. Volumes for long-term.

== 3. SPIN DOWN / SCALE TO ZERO ==
Provider Behavior Resume Time
Blaxel 1s idle -> standby BEST <25ms resume
Modal Immediate scale-to-zero ~1-2s cold start
Sprites Auto-hibernate when idle ~1s wake
E2B Configurable timeout Default 300s, max 24h (Pro) / 1h (Hobby)
Daytona Configurable Scales to zero on inactivity

== 4. SNAPSHOTS / CHECKPOINTS ==
Provider Support Details
Sprites Full checkpoint/restore BEST ~300ms to create, last 5 at /.sprite/checkpoints, git-like versioning
Modal Filesystem snapshots snapshot_filesystem() creates Image, memory snapshots in preview
Blaxel Standby state Full memory state preserved during standby (like hibernation)
E2B Templates only No runtime snapshots. Pre-build custom templates with CLI.
Daytona None No snapshot support. Use persistent storage for state.

== 5. CUSTOM IMAGES ==
Provider Support Details
Modal Excellent BEST modal.Image with pip_install, run_commands, from_dockerfile
E2B Templates e2b template build - custom Dockerfile-based templates
Daytona Docker images Custom Docker images supported
Blaxel Custom images blaxel/base-image or custom Dockerfiles
Sprites Pre-configured Firecracker-based, comes with Claude pre-installed

== 6. PRICING AT SCALE ==

All calculations assume 1 vCPU + 1GB RAM sandbox, billed per-second

Per-Second Rates:

Provider CPU/s Memory/GB/s Total/s (1vCPU+1GB) Per Hour
Sprites $0.00000228 (included) $0.00000228 $0.008 CHEAPEST
Blaxel (memory-based) $0.0000115 $0.0000115 $0.041
E2B $0.000014 $0.0000045 $0.0000185 $0.067
Modal $0.00003942 $0.00000672 $0.00004614 $0.166
Daytona Per-second (pricing not public) $30-200 free credits

Scenario: 1 Sandbox x 24 Hours

Provider Cost Notes
Sprites $0.20 CHEAPEST Hibernates when idle (no cost)
Blaxel $0.99 <25ms resume, pay only when active
E2B $1.60 Configurable timeout
Modal $3.98 Scale-to-zero available

Scenario: 1000 Sandboxes x 1 Hour Each

Provider Cost Notes
Sprites $8.20 CHEAPEST Fly.io shared-cpu-1x rates
Blaxel $41.40 + fast cold start from standby
E2B $66.60 Fastest cold start (0.5s)
Modal $166.00 Best for GPU workloads

Scenario: 1000 Sandboxes x 24 Hours (Heavy Usage)

Provider Cost Monthly Equivalent
Sprites $197 CHEAPEST ~$5,900/mo at this rate
Blaxel $994 ~$29,800/mo
E2B $1,598 ~$47,900/mo
Modal $3,994 ~$119,800/mo
GPU Pricing (Modal - per hour):
  T4:   $0.59     A10G:  $1.10    L4:    $0.80
  A100: $2.50     H100:  $3.95    B200:  $6.25

COST OPTIMIZATION TIPS:
  - Use scale-to-zero (Modal, Blaxel) to avoid idle costs
  - Sprites hibernates automatically - best for intermittent usage
  - E2B: set shorter timeouts for ephemeral tasks
  - Blaxel: <25ms resume = near-zero idle cost
      

== 7. GIT-LIKE FEATURES ==
Provider Feature
Sprites Checkpoint versioning (v0, v1, v2...) - git-like restore
Daytona Built-in Git SDK (add, commit, push)
Modal Filesystem snapshots as Images
GREEN = Excellent/Native ORANGE = Partial/Available RED = None/N/A
For contact: m+sandbox@mertdev.dev