SHEET 11 · Systems & Hardware
hyprrad
My Linux desktop streamed into a Tesla's browser — headless 1920×1084 output, NVENC HEVC at 1–1.8 Mbps, WebCodecs decode in the car, touch and keys injected back over the same socket

1–1.8 Mbps bitrate18 car sessions±10 ms A/V sync12.5k lines2026localSystems & Hardware
About
A self-hosted remote-access stack that puts a Hyprland (Wayland) desktop on any screen with a browser, including the one in a Tesla. A gate process creates a headless compositor output sized to the car's fullscreen viewport, wf-recorder captures it, NVENC encodes HEVC at a variable 1.0–1.8 Mbps tuned for a phone hotspot, and desktop audio rides along as 128 kbps Opus. Frames travel as a framed TCP stream to a WebSocket relay, and the car's browser decodes them in hardware through the WebCodecs API. Taps and swipes come back the other way as wlr virtual-pointer and virtual-keyboard events, so nothing on the desktop needs root and nothing in the browser needs a plugin.
The same encoder feeds two transports: WebCodecs over WebSocket through a Cloudflare tunnel with an identity check at the edge, or WebRTC peer-to-peer on the tailnet. One Preact app renders as phone, desk, or car, with the rail hidden on the car so the stream stays pixel-for-pixel under the car's 56 px browser bar.
Domains
01Capture and encode
- Headless Hyprland output, wlr-screencopy via wf-recorder
- NVENC HEVC/H.264 on an RTX 4090, damage-tracked, VBV-capped keyframes
- Desktop audio as 128 kbps Opus, PTS on the same clock as video
02Transport
- Framed TCP → Python WebSocket relay (RFC 6455, hand-written)
- WebCodecs VideoDecoder in the browser; newest frame painted on rAF
- GStreamer webrtcbin for peer-to-peer on the tailnet
03Input return path
- wlr-virtual-pointer for taps, drags and scroll
- Persistent virtual keyboard; every combo bracketed by modifier resets
- A rule: no desktop action is ever performed by injecting key combos
04Edge and access
- cloudflared outbound only; identity checked at the edge
- Tailscale Serve/Funnel for the private path
- Device trust: QR approval from the tailnet, 90-day remembered devices
Key features
- 01Headless CAR output at 1920×1084@30 — the Tesla's 1920×1140 fullscreen viewport minus the browser bar, so the stream lands 1:1
- 02NVENC HEVC, VBR 1.0→1.8 Mbps, 2 s GOP, VBV buffer capped so a keyframe is 54 KB instead of 135 KB; about 4× lower average bitrate than the CBR profile it replaced
- 03Audio locked to the painted frame by shared monotonic timestamps: ±10 ms steady state, 3 ms on a clean link, 4 ms fades instead of pops
- 04Two transports off one encoder: WebCodecs over WebSocket through the tunnel, or WebRTC on the tailnet, chosen per client
- 05Root-free input: wlr-virtual-pointer for touch, a persistent zwp virtual keyboard with a compiled xkb keymap in a memfd for keys
- 06Zero inbound ports: Cloudflare Tunnel plus Access at the edge, then a one-time QR approved from a phone on the tailnet, remembered per device
- 07The Tesla browser refuses the Fullscreen API, so the app hops through YouTube's fullscreen shell and detects the taller viewport
- 08One app, three form factors — phone tabs, desk rail, car — verified headlessly at the car's real viewports (773×601 windowed, 1920×1140 shell)
- 09Live-server gateway that discovers same-user Node listeners from /proc and proxies HTTP, SSE and WebSockets through the authenticated origin
- 10Six systemd user units; 113 assertions across unit, live-server, integration, access and build suites
Gallery
recording · still


Nearby
SHEET 14 · Systems & Hardware

Hyprland patches
Five patches, 292 lines, to a 7,700-commit C++ compositor: BT.1886 gamma for an HDR TV, colour-exact screenshots, a SIGBUS guard, a screencopy leak fix — and the shim stack that keeps them alive across every upgrade
2026local5 patches+292 lines
SHEET 12 · Systems & Hardware

hyprfacet
A Hyprland compositor plugin that captures every workspace to its own framebuffer each frame and shows them as a navigable solid — a cube and four other modes, 56 inline GLSL shaders, 7 live faces at 4K/120 Hz
2026local6 modes56 shaders
SHEET 02 · Systems & Hardware

Boiler Plant Telemetry
Boiler-plant telemetry over the Ayla IoT cloud — 390 parameters read from two binary properties, 216 writable — and a software outdoor-reset curve on two 2 MMBtu/h condensing boilers
2026local390 parameters216 writable