The three states
A VM moves through these states automatically based on inbound network activity. You can also drive transitions yourself with
boxd machine pause / boxd machine resume.
Auto-suspend (running → standby)
Off by default. When enabled, a machine suspends after N seconds of no inbound TCP/UDP traffic. The machine 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.Auto-hibernate (→ hibernated)
On by default, set to 4 hours. After 4 hours of no inbound TCP/UDP traffic, boxd hibernates the machine: a snapshot is written to disk and its 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. Tune or disable it per VM:boxd machine list shows hibernated VMs with status: hibernated. They wake automatically on the first inbound packet.
Manual pause and resume
If you don’t have to wait for the idle timers, you can pause a machine immediately when you know it’ll be idle for a while:running. Resume requires it to be in standby. Both accept --json:
suspend_us and resume_us report the actual snapshot/restore time in microseconds.
pause vs reboot
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:- Run and snapshot. Your machine boots, your app initializes. Ignition captures the full VM state (memory, CPU registers, device state) into a snapshot.
- Suspend in RAM (standby). When no inbound packets arrive for
auto_suspend_timeoutseconds, or when you runboxd machine pause, the snapshot is retained in memory. Sub-millisecond to restore. - Hibernate to disk. After an extended idle window, the snapshot moves from RAM to disk and memory is released. ~85ms to restore from disk on the next inbound packet.
- Wake on demand. When a request hits
name.boxd.sh, or when you runboxd machine resume, Ignition restores from whichever tier the snapshot lives in, skipping boot, init, and app startup entirely.
What this enables
- Pay for what you use. Machines that serve occasional traffic suspend between requests.
- Idle machines stay near-free. Hibernation means an unused machine costs effectively nothing to keep around.
- 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 machine hibernates when the conversation ends and resumes instantly when the next one starts.