Entities
Each entity has its own page — open one from the list below or the sidebar.
- lab {} block — wcl block — Declares a lab: a set of VMs plus the virtual networks connecting them, in vmlab.wcl.
- vm {} block — wcl block — Declares one guest: its template, hardware, NICs, disks, shares and media.
- segment {} block — wcl block — Declares a virtual L2 switch and its subnet, DHCP, NAT, routing and peering options.
- nic {} block — wcl block — Attaches a VM to a segment, with optional static IP/MAC, NAT shorthand or port isolation.
- container {} block — wcl block — Declares an OCI container in a lab: image reference, env/volumes/ports/healthcheck — run in a micro-VM on the same segments as VMs.
- share {} block — wcl block — Mounts a host folder into a guest — over virtiofs when host and guest support it, falling back to SMB served by the lab daemon at the segment gateway.
- media {} block — wcl block — Turns a host folder into an ISO or floppy image with a content-addressed cache; declarative, no CLI.
- template {} block — wcl block — Declares a disk template to build: arch, version, profile, working disk, exactly one source, build media/NICs and provisions.
- source {} build source — wcl block — Exactly one source {} block per template selects what the build starts from: iso, qcow2, template, or scratch.
- provision {} block — wcl block — Names a wscript file that runs on vmlab up, declared inside the vm/container it configures.
- on "event" {} handler — wcl block — Binds a wscript file to a lifecycle event; handler failures are logged, never fatal.
- web {} block — wcl block — Declares an HTTP UI served inside a guest, proxied into the web console as a sandboxed iframe tab — with the guest app's own login handled by the proxy.
- playbook {} block — wcl block — Binds a config-weave play to the machine that declares it, with the variables for that machine's run.
- vmlab-web — tool — The web UI server: an Actix-web binary exposing vmlab over REST + WebSockets and serving the embedded console UI, with username/password auth.
- vmlab-agent — software — vmlab's first-party in-guest agent on the vmlab.agent.0 virtio-serial port: terminals, exec, file transfer, tail, event logs, clipboard, metrics, network/OS identification and graceful shutdown — no guest network involved.
- vmlab.wcl — file — The lab definition, found by walking up from the current directory (like git).
- .vmlab/ — directory — Lab-local working data beside vmlab.wcl: linked clones, snapshots, built media, screenshots, SMB creds. Gitignore it.
- Template store — directory — ~/.local/share/vmlab/templates/<arch>/<name>/<version>/ — sealed disk.qcow2 + template.wcl metadata.
- Lab — api object — The lab handle passed to fn main(lab: Lab) / fn handle(event, lab) — find machines and segments, log.
- Machine — api object — The machine handle obtained from lab.machine/vm/container: the entry point to lifecycle, snapshots, input, screen matching and the guest agent, for a VM or a container alike.
- Container handle — api object — lab.container(name) returns the same Machine handle a VM does — this page is the container-flavoured tour of it, plus the one capability containers do not report.
- Segment — api object — Runtime network-rule mutation: DNS, blocking, redirects and forwards on a live segment.
- Match — data type — An image-match or OCR hit: bounding box, score, center point (cx/cy) and OCR text.
- ExecResult — data type — The result of a guest command run via vm.exec: exit_code, stdout, stderr.
- Event — data type — The payload passed to an event handler's fn handle(event, lab): name, vm, data (JSON as text).