Skip to main content
Machines can be frozen in place and woken on demand. boxd has three lifecycle states for a VM, with two levels of suspend depending on how long it’s been idle. The deeper the sleep, the cheaper to keep around, the slower to wake. Both are fast enough that callers can’t tell. Built on Ignition, the open-source microVM orchestrator by Azin that powers sub-10ms cold starts.

The three states

StateMemoryWake timeCost
runningLive in RAMalready runningfull
standbyFrozen in RAMsub-millisecondnear zero
hibernatedWritten to disk~85mseffectively free
A VM moves through these states automatically based on inbound network activity. You can also drive transitions yourself with boxd pause / boxd resume.

Auto-suspend (running → standby)

Every machine auto-suspends after 30 seconds of no inbound TCP/UDP traffic. The VMM process freezes in place. Memory, running processes, and open sockets are all preserved. The first inbound packet (SSH connection, HTTP request, even a single TCP SYN) wakes it in sub-millisecond time. The caller can’t tell whether the machine was running or suspended.
boxd info myvm                         # shows "auto-suspend: 30s" or "off"
boxd auto-suspend myvm 0               # disable auto-suspend on this VM
boxd auto-suspend myvm 300             # change to 5 minutes
boxd new --auto-suspend-timeout=60     # set at creation
boxd fork src --auto-suspend-timeout=0 # disable on the fork
Auto-suspend watches network activity, not CPU. A long training run, batch job, file encode, or cron-driven task that doesn’t touch the network looks idle to the host and will get suspended mid-work. Clocks also freeze while suspended. Cron and systemd timers won’t fire until the next inbound packet arrives.Disable auto-suspend (boxd auto-suspend NAME 0) on any VM that needs to keep running in the background without continuous network traffic.

Auto-hibernate (standby → hibernated)

After a VM stays in standby for an extended period, boxd hibernates it. The in-RAM snapshot is written to disk, the host memory is released. From the outside the machine still exists with the same name, IP, and HTTPS domain. From the inside the VM has no idea anything happened. Wake from hibernation takes ~85ms and replays the snapshot back into RAM. A hibernated VM costs effectively zero to keep around. This is what makes idle goldens and rarely-hit preview environments practical: the workload sits in a hibernated state for hours or days at near-zero cost, then resumes in under 100ms on the next request. boxd list shows hibernated VMs with status: hibernated. They wake automatically on the first inbound packet.

Manual pause / resume

You don’t have to wait for auto-suspend. Pause a machine immediately when you know it’ll be idle for a while:
boxd pause myvm                        # freeze now
boxd resume myvm                       # wake now
Pause requires the VM to be running. Resume requires it to be in standby. Both accept --json:
boxd pause myvm --json
# {"name":"myvm","status":"standby","suspend_us":23500}

boxd resume myvm --json
# {"name":"myvm","status":"running","resume_us":840}
suspend_us and resume_us report the actual snapshot/restore time in microseconds.

pause vs reboot

boxd pauseboxd reboot
Kernel / VMM processKept alive, frozenKilled, respawned
MemoryPreservedLost
Running processesContinue on resumeMust restart
Open network connectionsPreservedDropped
Wake timeSub-millisecond~2 seconds
Staterunning → standbyrunning → booting → running
Use pause when you want the VM to return to exactly where it was. Use reboot when you need a cold kernel/config restart.

How it works

Ignition uses a snapshot-based approach with two storage tiers:
  1. Run and snapshot. Your machine boots, your app initializes. Ignition captures the full VM state (memory, CPU registers, device state) into a snapshot.
  2. Suspend in RAM (standby). When no inbound packets arrive for auto_suspend_timeout seconds, or when you run boxd pause, the snapshot is retained in host memory. Sub-millisecond to restore.
  3. Hibernate to disk. After an extended idle window, the snapshot moves from RAM to disk. Host memory is released. ~85ms to restore from disk on the next inbound packet.
  4. Wake on demand. When a request hits name.boxd.sh, or when you run boxd resume, Ignition restores from whichever tier the snapshot lives in. No boot, no init, no app startup.
The transitions are transparent to your app. From the inside, the VM’s clock jumps forward and the next packet arrives. No reconnects, no re-reads of state.

What this enables

  • Pay for what you use. Machines that serve occasional traffic suspend between requests.
  • Idle goldens stay near-free. Hibernation means an unused fork-source VM costs effectively nothing to leave running for weeks.
  • Massive parallelism. Spin up hundreds of machines, let them suspend and hibernate when idle, wake on demand.
  • Instant APIs. Deploy a service that cold-starts faster than a DNS lookup.
  • Agent workspaces. An agent’s VM hibernates when the conversation ends and resumes instantly when the next one starts.

Learn more

Ignition is open source. Read the code and architecture:

Reference

https://mintcdn.com/azin/Ax1V0serIwQf0x_2/images/icons/command.svg?fit=max&auto=format&n=Ax1V0serIwQf0x_2&q=85&s=6c33d9e29e4e937c0950311233ec5659

CLI

pause, resume, auto-suspend from your local terminal.
https://mintcdn.com/azin/Ax1V0serIwQf0x_2/images/icons/chart-square.svg?fit=max&auto=format&n=Ax1V0serIwQf0x_2&q=85&s=3365002773f804e502d2a55f51a0701e

Resources and limits

Quotas, CPU, memory, and disk.