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.
| Version | 1.0 |
| Created | 2026-06-21 |
| Last updated | — |
| Maintainer | ai@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.
| Name | Relation | Status |
|---|---|---|
| wcl | labs and templates are declared in WCL; this skill documents the vmlab schema, not the language itself | exists |
§ 2Sources
Sources drive the update workflow only — they are not topic content.
| ID | Kind | Locator | Covers | Last checked | Reflects version |
|---|---|---|---|---|---|
| vmlab_prd | docs | docs/vmlab-prd.md | The binding product requirements: the source of truth for design and scope (sections §N are referenced throughout the code). | 2026-06-21 | 1.0 |
| vmlab_repo | repo | /home/wil/dev/vmlab | Source 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-21 | 1.0 |
| vmlabclihelp | cli | vmlab --help | Subcommand help text for the full verb surface (lifecycle, vm, snapshot, exec, script, console, logs, template, daemon). | 2026-06-21 | 1.0 |