cstream-desktop
| Version | 2026.243.1417 |
| Repo | box/github.com/opencharly/layer-cstream-desktop:v2026.243.1831 |
The cstream desktop metalayer: the transport spine plus the nested compositor, composed as one candy so a box gets a streamed Hyprland desktop by naming a single name.
It carries no plan of its own beyond the composition assertion below. That is the point – a metalayer that also installed things would give a consumer two places to look for the same behaviour, and the two members already own theirs: pod-cstream the parent/gateway/PAM stack and its streaming gates, pod-hyprland the nested compositor, its Lua config and the file-capability strip.
Composition ORDER is load-bearing and is why this exists as a candy rather than as two lines in every consumer. Hyprland has no headless mode and Aquamarine’s DRM backend needs a KMS card node a rootless pod never gets, so it can only ever run nested in a parent that advertises zwp_linux_dmabuf_v1 and binds xdg_wm_base at version 6. pod-cstream supplies exactly that parent. Composing pod-hyprland WITHOUT it yields an image that builds cleanly and dies at start with “CBackend::create() failed!” – a failure that names the compositor rather than the missing parent.
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 |
both halves of the desktop are present – the parent that streams and the compositor that draws |