Low Latency Game Streaming, with First-Class Linux and Windows Support
A ground-up streaming stack with a shared Rust protocol core and native clients per platform — Moonlight-compatible on day one.
8Kmax
client-native — up to 7680×4320 (HEVC/AV1)
10-bitHDR
client-negotiated — Windows hosts
< 1 ms
capture-to-encode
8
native client platforms
> 1 Gbps
QUIC + FEC, past GameStream's ceiling
What makes it different
Engineered end to end
From the display the host conjures to the frame on your screen, every layer is ours — and it shows.
Native resolution
A display built for your screen
The host conjures a real display per session at your device's exact resolution and refresh — a handheld's 1280×800, a 1440p desktop, a 4K TV, an ultrawide, up to 8K (7680×4320 on HEVC/AV1) — negotiated when you connect and renegotiated mid-stream. No dummy plugs, no EDID hacks. And it isn't Windows-only: punktfunk builds these virtual displays natively on Linux too — per Wayland compositor (KWin, gamescope, Mutter, wlroots) — where other streaming hosts still need a dummy HDMI plug. Run a headless PC, and on multi-monitor hosts the client always gets the right screen.
IDD-Push capture
Frames straight to the encoder
Most hosts capture with Desktop Duplication or Windows.Graphics.Capture and inherit their blind spots. Punktfunk's own signed, all-Rust display driver pushes finished frames straight to the encoder — no Desktop Duplication, no WGC, none of the helper-juggling.
Zero-copy latency
Sub-millisecond capture-to-encode
The captured frame goes straight to the hardware encoder with no CPU copies — a true zero-copy GPU path (dmabuf → CUDA → NVENC on NVIDIA/Linux, with vendor-native paths on AMD and Intel) — for sub-millisecond capture-to-encode, carried over a QUIC transport with Leopard FEC that stays smooth on lossy Wi-Fi and pushes past GameStream's ~1 Gbps ceiling.
< 1 ms
HDR + 4:4:4
HDR that looks like HDR — and text that stays sharp
Real end-to-end 10-bit HDR with capability negotiation — even in Vulkan games, via a Vulkan layer we wrote when the GPU driver wouldn't. And full 4:4:4 chroma keeps small text and thin UI lines razor-sharp, instead of the smeared 4:2:0 most streaming ships.
Native clients
Eight platforms, all native
Real native apps per platform — iPhone, iPad, Apple TV, macOS, Windows, Linux, Android, and the Steam Deck — not one cross-platform shell. Moonlight-compatible too, so stock Moonlight and Artemis clients work day one.
8platforms
Audio
Sound that stays clean and in sync
Audio is the quietly hard part of streaming. Punktfunk keeps it crackle-free and A/V-synced across machines, and carries full 5.1/7.1 surround end to end instead of quietly collapsing it to stereo.
Switching
Coming from Sunshine or Moonlight?
Punktfunk speaks NVIDIA's GameStream, so your Moonlight and Artemis clients work on day one — but underneath it's a new Rust protocol with real virtual displays, HDR, and native clients, not a Sunshine fork. Switch at your own pace.
Also included
Secure by default
SPAKE2 PIN pairing, pinned device identities, and AES-GCM-encrypted streams; LAN hosts appear automatically over mDNS. Trust-on-first-use stays opt-in.
Rich DualSense support
Gyro, touchpad, motion, rumble, lightbar, player LEDs, and adaptive triggers — passed through end to end.
Microphone passthrough
Stream your mic to the host's virtual microphone, so voice chat and push-to-talk run on the remote PC.
Steam game library
Your installed Steam games, auto-detected from local files — no API key — with artwork, ready to launch.
Built-in speed test
The host bursts filler over the data plane so the client measures your link and picks an informed bitrate.
Multi-monitor hosts
Stream the right screen every time — no cursor escape, no black bars.
Headless hosts
Run a gaming PC with no monitor attached — the virtual display stands in.
From the blog
PIN pairing that can't be brute-forced: SPAKE2 for game streaming
A 4-digit PIN sounds weak — only 10,000 combinations. Here's how punktfunk pairs a new device with a PIN you can type from the couch while giving an attacker just one online guess and no offline dictionary attack, using a PAKE that binds both devices' certificates.
