Boot VMs from any OCI or Docker image

snapshots.create(oci_image=...) pulls any OCI image and applies build_args: apt packages, pip/npm installs, git clone, environment variables. VMs boot from the resulting snapshot in under 500ms.

<500ms

Snapshot boot

3 GB

Max disk

1–8 vCPU

Per VM

run any oci

$client.snapshots.create(oci_image='python:3.11-slim', ...)

pulling layers from docker.io | 183MB

running build_args: git clone, pip install numpy pandas

#snapshot status: ready (5.72s)

$client.vms.create(snapshot_id='snap_c2f8', wait=True)

vm provisioned in 392ms | snapshot boot

$

Capabilities

Any OCI image reference

Docker Hub, GitHub Container Registry, private registries. Pass the image URL to snapshots.create() — no format translation needed.

Build-time setup via build_args

git_clone_url, git_clone_branch, extra_apt_packages, extra_pip_packages, extra_npm_packages, envs, post_build_cmd. All run during snapshot build.

Snapshot reuse

Build once, boot many. vms.create(snapshot_id=...) launches a new VM from the same snapshot. No re-pulling, no re-installing.

VM-level isolation

Each VM from the snapshot gets its own Firecracker kernel. Not a container fork — full hardware isolation with configurable egress.

SDK reference

run-any-oci.py
pythonSnapshot + VM
1from instavm import InstaVM
2
3client = InstaVM(api_key="sk_instavm_...")
4
5# Build snapshot from OCI image (async — polls until ready)
6snap = client.snapshots.create(
7 oci_image="docker.io/library/python:3.11-slim",
8 name="agent-runtime",
9 build_args={
10 "git_clone_url": "https://github.com/org/agent.git",
11 "git_clone_branch": "main",
12 "extra_pip_packages": "numpy pandas",
13 "envs": {"APP_ENV": "production"},
14 },
15)
16
17# Boot VM from snapshot (<500ms)
18vm = client.vms.create(
19 wait=True,
20 snapshot_id=snap["snapshot_id"],
21 vcpu_count=4,
22 memory_mb=2048,
23)
24print(vm["vm_id"])

How it works

Image pull, snapshot build, VM boot

01

Create snapshot from image

snapshots.create(oci_image='python:3.11-slim', build_args={...}) pulls layers and runs setup. Build is async — poll status until 'ready'.

02

Boot VM from snapshot

vms.create(snapshot_id=..., wait=True) launches a VM from the snapshot. Boot time is under 500ms since layers are pre-cached.

03

Reuse across workloads

Same snapshot, many VMs. Run evals, CI jobs, or agent sessions in parallel — each with identical starting state.

Get started with InstaVM

Free tier available. No credit card required. VMs provision in under 200ms.

We use cookies
We use cookies to ensure you get the best experience on our website. For more information on how we use cookies, please see our cookie policy.

By clicking Accept, you agree to our use of cookies.

Learn more