Skip to content

v0.1.0a13 — the headless-vision release

Pre-release
Pre-release

Choose a tag to compare

@DustinTrap DustinTrap released this 08 Jul 03:22
103c9dc

The headless-vision release. GL's video encoder is on-demand — it runs only while a video client is connected — so a headless snapshot/classify/watch (the flagship AI-agent case) used to 503 forever on an idle unit. This release makes it work, grounded in a full live reliability sweep of the GL-RM1PE fleet (.11/.20 V1.9.1, .39 V1.5.1; findings in #176).

Per the support matrix this line stays alpha: only GL-RM1PE is live-validated (V1.9.1 reaches beta-grade there), while the other drivers remain emulator-only.

Added

  • Headless snapshot now works on idle GL units (#142) — on a streamer: null 503 the driver registers a stream client over kvmd /api/ws, waits for the encoder (~1.5s), and retries. Verified live: recovers a valid JPEG on RM1PE V1.9.1; on V1.5.1 it emits H.264, honestly surfaced (#107), not a false success.
  • GLKVMDriver.streamer_warm() keep-alive (#142) — holds the stream client open in a background thread so every snapshot in the block is instant (~0.1s vs ~5s cold), no vision/LLM. watch and MCP wait_for_state use it.
  • websocket-client promoted to a base dependency — headless GL snapshot needs it; events now works out of the box (kvm-pilot[ws] kept as a no-op alias).
  • GLKVM quirk snapshot-needs-video-client; driver-features (#171) + reusable hardware test plan (#172) docs, published to the wiki.

Fixed

  • snapshot 503 no longer misdiagnoses an idle streamer as a wedged encoder (#173) — and the matching video-signal healthcheck remediation.
  • power/power-cycle on unwired ATX returns a clear CapabilityError instead of an opaque HTTP 500 (#174).

Full changelog: see CHANGELOG.md. Install: pip install --pre kvm-pilot.