Available snapshots
A name resolves to the first entry carrying it, so
vsnap-base gives you the
256 MB one. To pin another, pass its id. Both columns are accepted anywhere a
snapshot is named, and name:tag works too.
uv comes preinstalled in every snapshot, so additional Python packages can be installed with uv pip install --system <package>. System packages remain available through Alpine’s package manager with apk add <package>.Pulling ahead of time
Sandbox.create() pulls whatever it needs, so there is usually nothing to do.
Pull explicitly when you want the download to happen at a different moment from
the run: baking a container image, a CI setup step, or before going offline.
Path is the decompressed snapshot
on disk.
Snapshot API
Private snapshots
A snapshot you built in the console is not in the public catalogue. Pass an API key to reach it:VPOD_API_KEY is read from the environment when api_key is not passed, so you
normally set the variable and leave the argument out:
snapshots.pull() and snapshots.catalog().
Where the cache lives
Downloads land in~/.local/share/vpod/snapshots on Linux and
~/Library/Application Support/vpod/snapshots on macOS, shared with the CLI and
the Node SDK. Files are named by snapshot id and verified against the digest in
the catalogue, so a name that resolves differently under another key is
re-downloaded rather than reused.
Set VPOD_SNAPSHOT to an absolute path to bypass the registry entirely and boot
a snapshot you built yourself.