Skip to main content
Hard limits (measured/enforced as of 2026-09-05; each is a real bound): Rate limits are per organization per minute (new organizations: 300 acquisitions — creates/snapshots/forks/exposes/templates/exports — and 12,000 other operations; DELETE is never limited). Each figure is a per-minute guarantee enforced as a fixed-window bucket per gateway replica (two), refilled in full each minute — so sustained throughput can measure up to ~2× the figure before any 429, and after a 429 the budget returns all at once; a 429 carries Retry-After, and successful responses carry x-ratelimit-remaining (nv.rate.acquire / nv.rate.ops in the SDK).

Behaviors

Idle sleep policy (since 2026-09-07). The platform never auto-sleeps a sandbox that is doing work: a process that outlived its exec, guest CPU above the idle floor, live network connections, or an exposed port all count as work. Only a sandbox idle by every measure, with no API call for ~60 s, is slept; the next call wakes it transparently. No maximum hold. Fork bombs are contained to their sandbox; a watchdog freezes and kills the storm near the pids cap and the sandbox’s agent normally survives (measured 2026-09-05/07). If the guest wedges anyway: SandboxUnhealthyErrorreboot() or delete. archive/unarchive is a true resume: processes, sockets and memory continue. /tmp is ordinary writable-disk space (not RAM), so it survives archiving and counts toward the disk. delete() returns before the guest is gone: the record answers 404 immediately (repeat DELETE = no-op 204) while the host tears down asynchronously — typically under a second. Its URL and in-flight execs fail during that window; that is teardown, not a leak. Network policy. Link-local 169.254.0.0/16 is blackholed for every sandbox. disable_internet is inherited by snapshots’ restores and fork children; a no-egress connect blocks until the client’s own timeout (no fast rejection) — give such clients short connect timeouts. Environment variables cannot be set per sandbox at create: bake them into the image or set them per run (run("VAR=value cmd") or a session’s export). Clock. Guests boot with clocksource=kvm-clock: CLOCK_MONOTONIC is consistent across vCPUs.

Harbor benchmarks

The nanovm-harbor wheel (/sdk/ on the console) is a Harbor environment provider (--env nanovm_environment:NanoVMEnvironment); it handles template builds, retries, compose tasks, and ships python -m nanovm_prebuild images.txt. README inside the wheel or the repo’s integrations/harbor/.