PunktfunkPunktfunk

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

8

native client platforms

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.

Read the honest comparison

And everything you'd expect

Native clients everywhere

Real native apps per platform — iPhone, iPad, Apple TV, macOS, Windows, Linux, Android, and the Steam Deck — not one cross-platform shell.

10-bit HDR on Windows hosts

Real 10-bit HDR on Windows hosts, negotiated per client — highlights that pop and shadows that stay clean, not a washed-out approximation.

4:4:4 full chroma

An opt-in full-chroma mode keeps small text and thin UI lines razor-sharp — for the desktop work between the games.

Audio that stays clean and in sync

Crackle-free stereo, in sync with the picture across machines — and your microphone streams back to the host for voice chat and push-to-talk.

Rich DualSense support

Gyro, touchpad, motion, rumble, lightbar, player LEDs, and adaptive triggers — passed through end to end.

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 sends a short burst of test traffic so the client can measure your connection and pick an informed bitrate.

Every GPU vendor — or none

Hardware encoding on NVIDIA, AMD, and Intel, plus a software H.264 fallback when there's no GPU at all.

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.

A real web console

Host status, paired devices, PIN pairing, GPU selection, display arrangement, performance graphs, and live logs — from any browser.

A couch-ready console UI

A gamepad-driven shell in every client — host list, pairing, settings, and an on-screen keyboard. No mouse required.

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.

Low-latency game streaming when the game is maxing out your GPU

The hardest case for any streaming host is the one that matters most: a demanding game already pinning the GPU. Here's why the encoder ends up waiting — and the two levers that took our encode time from ~30 ms to ~4 ms.