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:SandboxUnhealthyError → reboot()
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
Thenanovm-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/.