Game streaming that outgrew GameStream
Its own protocol, its own display driver, one shared Rust core — Linux-first, and Moonlight-compatible from day one.
240fps
stable at 5120×1440 — client-native, measured
~1.3 ms
capture to received, across two machines on a LAN
> 1 Gbps
past GameStream's ceiling — on a wired LAN
0
accounts, clouds, or dummy plugs required
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.
Our own protocol
Past GameStream's ceiling, by design
Every other self-hosted streaming stack still speaks GameStream — NVIDIA's abandoned protocol, whose error correction caps usable video around 1 Gbps. Punktfunk speaks it too, so Moonlight and Artemis clients work on day one. But its native clients ride punktfunk/1: a QUIC control plane and an encrypted data plane with GF(2¹⁶) forward error correction that clears the 1 Gbps wall, changes resolution and refresh mid-stream without a reconnect, and probes your link so the bitrate matches reality, not a guess.
QUICGF(2¹⁶) FECGameStream's FEC wall
Linux-first
The streaming host Linux never had
On KDE, GNOME, gamescope, and Sway, the host asks your compositor for a real virtual display at your device's exact resolution and refresh — a handheld's 1280×800, a 4K TV, a 5120×1440 ultrawide — no dummy plugs, no EDID hacks, fully headless if you like. Several devices can stream at once, each on its own display. And on atomic distros like Bazzite, the host installs as a systemd extension: no layering, no reboot. Linux isn't a port of Punktfunk — it's where Punktfunk was built.
Keep-alive
Your game survives the disconnect
What happens after a drop is a policy you set, not luck. The host can keep the virtual display — and on a gamescope host, the game itself — alive through a disconnect, for a grace window or forever, so reconnecting drops you straight back in: no renegotiation, no desktop reshuffle. One-click presets cover real setups — gaming rig, shared desktop, hot-desk, workstation — several devices can become monitors of one desktop, and each client's display scaling sticks across reconnects.
Drops you back inStarts from scratch
Every layer ours
One Rust core, from our driver to your screen
On Windows, Punktfunk ships its own signed, all-Rust display driver and pushes finished frames straight into it — no screen scraping in between, working even on the lock screen — plus a small Vulkan layer for HDR where GPU drivers fall short. A single Rust core carries the protocol, error correction, and crypto in the host and every client alike, so a fix lands on eight platforms at once. Nothing is inherited from someone else's stack.
Rust driverScreen scraping
Measured, not marketed
Numbers you can check — on hardware you own
Every client ships a tiered stats overlay speaking the same vocabulary, and the web console graphs host performance live. Cross-machine latency is corrected for clock skew, so ~1.3 ms capture-to-received on a LAN is a measurement, not a promise. And the whole thing stays yours: SPAKE2 PIN pairing, pinned device identities, encrypted streams — no accounts, no cloud, and the legacy GameStream plane stays off until you switch it on.
No accounts, no cloudStats overlay
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 displays that survive disconnects, its own Windows display driver, and native clients on eight platforms. Switch at your own pace.
And everything you'd expect
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.