Entities

Each entity has its own page — open one from the list below or the sidebar.

- lab {} blockwcl block — Declares a lab: a set of VMs plus the virtual networks connecting them, in vmlab.wcl.

- vm {} blockwcl block — Declares one guest: its template, hardware, NICs, disks, shares and media.

- segment {} blockwcl block — Declares a virtual L2 switch and its subnet, DHCP, NAT, routing and peering options.

- nic {} blockwcl block — Attaches a VM to a segment, with optional static IP/MAC, NAT shorthand or port isolation.

- container {} blockwcl 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 {} blockwcl 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 {} blockwcl block — Turns a host folder into an ISO or floppy image with a content-addressed cache; declarative, no CLI.

- template {} blockwcl block — Declares a disk template to build: arch, version, profile, working disk, exactly one source, build media/NICs and provisions.

- source {} build sourcewcl block — Exactly one source {} block per template selects what the build starts from: iso, qcow2, template, or scratch.

- provision {} blockwcl block — Names a wscript file that runs on vmlab up, declared inside the vm/container it configures.

- on "event" {} handlerwcl block — Binds a wscript file to a lifecycle event; handler failures are logged, never fatal.

- web {} blockwcl 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 {} blockwcl block — Binds a config-weave play to the machine that declares it, with the variables for that machine's run.

- vmlab-webtool — The web UI server: an Actix-web binary exposing vmlab over REST + WebSockets and serving the embedded console UI, with username/password auth.

- vmlab-agentsoftware — 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.wclfile — 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 storedirectory — ~/.local/share/vmlab/templates/<arch>/<name>/<version>/ — sealed disk.qcow2 + template.wcl metadata.

- Labapi object — The lab handle passed to fn main(lab: Lab) / fn handle(event, lab) — find machines and segments, log.

- Machineapi 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 handleapi 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.

- Segmentapi object — Runtime network-rule mutation: DNS, blocking, redirects and forwards on a live segment.

- Matchdata type — An image-match or OCR hit: bounding box, score, center point (cx/cy) and OCR text.

- ExecResultdata type — The result of a guest command run via vm.exec: exit_code, stdout, stderr.

- Eventdata type — The payload passed to an event handler's fn handle(event, lab): name, vm, data (JSON as text).