Skip to content

cua-session

Version 2026.261.1747
Repo box/github.com/opencharly/layer-cua:v2026.269.1859

Wires Cua Driver into the logged-in graphical session as systemd USER units — the daemon (cua-driver serve) and its MCP endpoint (cua-driver mcp behind supergateway on :3000). The driver cannot run outside the session (it needs WAYLAND_DISPLAY / XDG_RUNTIME_DIR / the AT-SPI bus), so the units are gated on graphical-session.target and carry ConditionEnvironment=WAYLAND_DISPLAY. The desktop account is resolved from uid 1000 at install time, so the candy composes onto any single-user desktop. Verifiable on the built image: the two unit files exist and are enabled under graphical-session.target.wants.

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
run install supergateway (the stdio→Streamable-HTTP MCP bridge the driver-mcp unit runs) — best-effort; the MCP endpoint is optional and the daemon works without it
run write the Cua Driver session units (global systemd user units)
run enable the units for the desktop user’s graphical session (global user units; systemd enables them for every user)
check the two Cua Driver session units exist
check the driver daemon unit is enabled for graphical-session.target
check the units gate on a live Wayland session (the driver cannot run outside it)