vm
| plugin-vm — Served by | plugin-vm |
| plugin-vm — Placement | compiled-in (in-process) |
| plugin-vm — Version | 2026.177.0400 |
| plugin-vm — Served by | plugin-vm |
| plugin-vm — Placement | compiled-in (in-process) |
| plugin-vm — Version | 2026.177.0400 |
vm is a command word served by 2 plugin candies — plugin-vm and plugin-vm — at different points in the command tree. Both are real invocations; charly --help prints which is which.
About plugin-vm, which serves it
Section titled “About plugin-vm, which serves it”The VM subsystem relocated into a COMPILED-IN plugin candy (P10). It provides TWO
capabilities: verb:libvirt — the libvirt live check verb (list, info, screenshot,
send-key, QMP, qemu-guest-agent, snapshots, events) plus the internal VM-resolution ops
(resolve-target / domain-state / list-domains the host’s spice/vnc/ssh/status/preempt
consumers call), dispatched through the provider registry; and command:vm — the
charly vm … lifecycle CLI (build / create / start / stop / destroy / console / ssh /
snapshot / gpu / import / clone / cp-box / list), COMPILED-IN and dispatched IN-PROC via
Invoke(OpRun), so its handlers run in charly’s own process (native stdio/TTY for
console/ssh). The handlers own the CLI + the libvirt/qemu engine in-package and reach the
host-only Mechanisms over generic seams: the config loader + deploy-ledger READ via
HostBuild(“config-resolve”), the deploy-ledger WRITE plugin-side via
deploykit.SaveVmDeployState/RemoveVmDeployEntry directly (#55 coneC-dsh β2 — the
config-persist host seam is deleted), the VM-disk build engine plugin-side
(candy/plugin-vm/vm_build_resolve.go — the former HostBuild(“vm-build”) is deleted),
egress via verb:egress, preempt via verb:arbiter, GPU via verb:gpu.
All of it is backed by go-libvirt + kata-containers/govmm + libvirt.org/go/libvirtxml,
compiled into charly for this canonical placement. The libvirt: verb dispatches through
the provider registry exactly like a built-in (the libvirt: <method> sugar desugars to
plugin/plugin_input — the method + every libvirt-exclusive modifier ride the input map,
validated against this plugin’s own #LibvirtInput; authoring unchanged), running the
LibvirtCmd Kong tree IN this plugin’s process.
About plugin-vm, which serves it
Section titled “About plugin-vm, which serves it”The VM subsystem relocated into a COMPILED-IN plugin candy (P10). It provides TWO
capabilities: verb:libvirt — the libvirt live check verb (list, info, screenshot,
send-key, QMP, qemu-guest-agent, snapshots, events, session = the host-side detached libvirt
framebuffer recorder over the runner’s generic background-session service, Cutover E E-2) plus the
internal VM-resolution ops
(resolve-target / domain-state / list-domains the host’s spice/vnc/ssh/status/preempt
consumers call), dispatched through the provider registry; and command:vm — the
charly vm … lifecycle CLI (build / create / start / stop / destroy / console / ssh /
snapshot / gpu / import / clone / cp-box / list), COMPILED-IN and dispatched IN-PROC via
Invoke(OpRun), so its handlers run in charly’s own process (native stdio/TTY for
console/ssh). The handlers own the CLI + the libvirt/qemu engine in-package and reach the
host-only Mechanisms over generic seams: the config loader + deploy-ledger READ via
HostBuild(“config-resolve”), the deploy-ledger WRITE plugin-side via
deploykit.SaveVmDeployState/RemoveVmDeployEntry directly (#55 coneC-dsh β2 — the
config-persist host seam is deleted), the VM-disk build engine plugin-side
(candy/plugin-vm/vm_build_resolve.go — the former HostBuild(“vm-build”) is deleted),
egress via verb:egress, preempt via verb:arbiter, GPU via verb:gpu.
All of it is backed by go-libvirt + kata-containers/govmm + libvirt.org/go/libvirtxml,
compiled into charly for this canonical placement. The libvirt: verb dispatches through
the provider registry exactly like a built-in (the libvirt: <method> sugar desugars to
plugin/plugin_input — the method + every libvirt-exclusive modifier ride the input map,
validated against this plugin’s own #LibvirtInput; authoring unchanged), running the
LibvirtCmd Kong tree IN this plugin’s process.
charly --help prints the command tree, including where each vm is invoked and under which parent.