Quickstart
IMP adds virtual-machine resources to Kubernetes. The operator decides which VMs should exist, and the node agent starts them on KVM-capable nodes.
Prerequisites
- Kubernetes cluster
kubectl,helm, and cluster-admin context- Nodes with
/dev/kvmand capabilities for Firecracker runtime operations - At least one Ready, schedulable node labeled
imp/enabled=true
Use your normal cluster configuration to label the nodes that should run Imp:
kubectl label node <node-name> imp/enabled=true --overwriteInstall
From the IMP source checkout, create the dedicated runtime namespace and install the chart:
kubectl create namespace imp-system --dry-run=client -o yaml | kubectl apply -f -
kubectl label namespace imp-system \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/audit=privileged \
pod-security.kubernetes.io/warn=privileged \
--overwrite
kubectl get nodes -l imp/enabled=true
helm upgrade --install imp ./charts/imp -n imp-system --create-namespace
kubectl -n imp-system get podsThe chart schedules the node agent only onto nodes labelled imp/enabled=true.
Create a Network and VM
Each ImpVM needs exactly one compute source: either a direct classRef, as in this example, or a reusable templateRef.
Save the following manifest as quickstart.yaml, then apply it:
kubectl apply -f quickstart.yamlapiVersion: imp.dev/v1alpha1
kind: ImpVMClass
metadata:
name: tiny
namespace: default
spec:
vcpu: 1
memoryMiB: 512
---
apiVersion: imp.dev/v1alpha1
kind: ImpNetwork
metadata:
name: quick-net
namespace: default
spec:
subnet: 192.168.100.0/24
nat:
enabled: true
---
apiVersion: imp.dev/v1alpha1
kind: ImpVM
metadata:
name: quick-vm
namespace: default
spec:
image: docker.io/library/nginx:1.27-alpine
classRef:
name: tiny
networkRef:
name: quick-netFirst VM with expireAfter
Imp can auto-delete a VM after a fixed window anchored to status.runningAt. 0 or unset means disabled; minimum enabled value is 60s.
apiVersion: imp.dev/v1alpha1
kind: ImpVM
metadata:
name: quick-vm-ephemeral
namespace: default
spec:
image: docker.io/library/nginx:1.27-alpine
classRef:
name: tiny
networkRef:
name: quick-net
expireAfter: 1hResolution precedence: ImpVM.spec.expireAfter → creator pool (ImpVMRunnerPool / ImpWarmPool) → ImpVMTemplate.spec.expireAfter → disabled.
Verify
Replace default with your namespace if different.
kubectl get impvm -A
kubectl describe impvm quick-vm -n default
kubectl get impnetwork quick-net -n default -o yamlA successful deployment shows quick-vm in Running phase.
Optional: Sandbox
Imp does not require sandbox. Use imp-sandbox for isolated AI-agent tenants:
Optional: imp-sandbox →
/sandbox/— multi-tenant isolation with standard and hard tenancy.
See Sandbox Overview and Sandbox Install. Otherwise, continue with base Imp.
