Persistent State, Volumes, and Resources
A machine combines managed guest state with resources and optional host integrations. Their lifetimes differ.
Machine state
A persistent machine keeps changes to its managed disk across stop and start operations. Package installations, generated files, and other disk writes remain until the machine is deleted or the state is otherwise replaced.
An ephemeral run is cleaned up when it exits. Use a persistent machine, a pack, a volume, or external storage when data must outlive that run.
Volumes and mounts
A volume maps storage into the guest. A host-directory mount shares a selected host path with the machine and therefore crosses the VM isolation boundary.
Volumes are runtime attachments. A .smolmachine artifact does not make its external volume bindings portable or persistent. Re-specify the required volumes each time a packed artifact runs.
For Docker inside a machine, place Docker data on the machine’s ext4 storage disk, such as /storage/docker. Docker’s overlay2 driver cannot nest on the overlay-backed root filesystem.
CPU and memory
CPU and memory are assigned when the machine is configured. The local CLI defaults are 4 vCPUs and 8 GiB of memory when no Smolfile overrides them. Smolfile defaults may differ, so set values explicitly when reproducibility matters.
Memory uses virtio ballooning. The configured amount is the guest-visible capacity; the host can reclaim unused guest memory. A high configured limit does not mean the host permanently commits that full amount.
Available cloud sizes and limits are service-specific. Do not infer hosted limits from local defaults.
Architecture and portability
Machine artifacts are architecture-specific. An arm64 artifact cannot be restored as an x86_64 machine, or the reverse. Host support also depends on the required hypervisor and optional GPU features.