vmlab

Summary

A declarative QEMU/KVM VM-lab orchestrator: labs and virtual networks declared in WCL, reusable disk templates built locally or distributed over OCI registries, and guest automation written in wscript.

Version1.0
Created2026-06-21
Last updated
Maintainerai@wiltaylor.dev

vmlab orchestrates single-host virtual-machine labs. A lab — a set of VMs plus the virtual networks that connect them — is declared in WCL (vmlab.wcl). Reusable disk templates are built from installer media and either kept in a local store or pushed to and pulled from any OCI registry. Guest automation — power control, command execution, keystrokes, screen matching and OCR — is written in wscript provision scripts and event handlers. A two-tier daemon (the supervisor vmlabd plus one daemon per running lab) is auto-started by the CLI; the network fabric is entirely userspace, so vmlab runs unprivileged in containers and on WSL2 with only /dev/kvm.

NameRelationStatus
wcllabs and templates are declared in WCL; this skill documents the vmlab schema, not the language itselfexists

§ 2Sources

Sources drive the update workflow only — they are not topic content.

IDKindLocatorCoversLast checkedReflects version
vmlab_prddocsdocs/vmlab-prd.mdThe binding product requirements: the source of truth for design and scope (sections §N are referenced throughout the code).2026-06-211.0
vmlab_reporepo/home/wil/dev/vmlabSource of truth for behaviour: src/config/schema.wcl (WCL schema), src/scripting/ (wscript host API), src/cli/, src/template/, src/profiles/shipped.wcl, examples/.2026-06-211.0
vmlabclihelpclivmlab --helpSubcommand help text for the full verb surface (lifecycle, vm, snapshot, exec, script, console, logs, template, daemon).2026-06-211.0