plugin-spice
| Version | 2026.174.1700 |
| Repo | superproject |
| Plugin | yes — see the plugin reference |
OUT-OF-TREE charly plugin serving the spice SPICE-wire display/input
check verb — a standalone Go module (go.mod + main.go) that speaks the
SPICE remote-desktop protocol over go-plugin gRPC via the charly plugin
SDK (github.com/opencharly/sdk). charly’s loader fetches this candy’s repo,
go-builds the provider binary on the HOST, and serves it OUT-OF-PROCESS
via LocalTransport — so the github.com/Shells-com/spice library lives
HERE (vendored under third_party/spice), out of charly’s core go.mod, with
its cgo audio channels (the opus/portaudio decoders) removed ENTIRELY so it
is unambiguously pure Go — no opus/portaudio/asound/jack (the fourth
dep-shed after candy/plugin-appium, candy/plugin-adb, candy/plugin-kube).
Since the schema-compaction cutover an authored spice: step desugars to
the internal plugin/plugin_input envelope, and every spice-exclusive
modifier (method/x/y/text/key/artifact/…) lives in the plugin’s OWN
#SpiceInput (schema/spice.cue); the verb
dispatches through the provider registry exactly like a built-in
(ResolveVerb → grpcProvider → invokeVerbProvider hands it the full #Op).
The host owns the go-libvirt VM resolution (vm_target.go’s ResolveVmTarget
- SpiceEndpoint) and any qemu+ssh:// side tunnel, pre-resolving the VM’s live SPICE endpoint to a DIALABLE address it ships in the check env — so this plugin needs no libvirt at all. Provides the full 7-method surface (status/screenshot/cursor/click/mouse/type/key). The R10 consumer is a disposable libvirt VM bed whose desktop check composes this plugin.
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
check |
the SPICE wire handshake completes against the bed VM (the out-of-process plugin verb dispatches through the registry and dials the host-resolved SPICE endpoint) |