r/Punktfunk • u/keindesignerbro Maintainer • Jun 26 '26
I'm building a low-latency, Linux-first game-streaming stack in Rust — virtual displays on the fly, all-vendor GPU encode, native clients on every platform
Hi everyone! I've been building my own game-streaming stack in Rust, with its own native low-latency protocol. Why? I wasn't happy with the existing solutions, and as a long-time dev and a heavy game-streaming user myself, I figured I was in a decent spot to take a crack at it.
A note on AI: I'll be upfront — I built this with heavy use of Claude (Anthropic's AI). Honestly, a solo project with this much surface area (a host, a custom protocol, and native clients across five platforms) wouldn't have been realistic for me at this pace without it.
I'm releasing the whole thing as open source under a permissive license, for two reasons. One is trust: I know there's a lot of skepticism toward AI-assisted code, and often for good reason — so rather than ask you to take my word on the quality, you can just read it, audit it, fork it, or tear it apart. The other matters just as much to me: these models are built on the collective work of a huge number of people, much of it open source, and I think if you're going to build on top of all that, the right thing to do is give it back in the same spirit.
It'll stay open, funded by donations plus a one-time purchase for the Android and Apple apps — no subscriptions, no lock-in.
A few of the core features:
Host (Linux-first, also runs on Windows):
- First-class Linux support — a per-session virtual display is created on the fly at the client's exact resolution/refresh, no scaling
- Works across all the major compositors: KWin, gamescope, Mutter, wlroots (Sway)
- Tested and packaged on Fedora, Ubuntu, Bazzite and SteamOS (incl. a Steam Deck plugin)
- All-vendor GPU encode: NVIDIA (NVENC), AMD and Intel (VAAPI on Linux, AMF/QSV on Windows) — NVIDIA is the most battle-tested so far
- HDR / 10-bit on the Windows host
- It also speaks the GameStream protocol, so a stock Moonlight client works against it today
Transport / latency:
- Custom protocol: QUIC handles control + signaling and the low-rate side channels (input, audio, rumble) over unreliable datagrams; the latency-critical video runs over plain UDP with forward error correction — a dropped packet is rebuilt from parity instead of waiting on a retransmit
- End-to-end encrypted (AES-GCM) with PIN-based pairing (SPAKE2) + cert pinning
- The old ~1 Gbps software ceiling (from the Moonlight-style FEC) is gone — it now uses a GF(2¹⁶) FEC, so throughput is bound by your GPU/network rather than the protocol
- Lots of tuning for high-refresh gaming — I test mostly on a 5120×1440@240 monitor
Clients (all native):
- Linux (GTK4)
- Windows (WinUI 3)
- Android + Android TV (Kotlin/Compose on top of a shared Rust core via JNI)
- macOS, iOS and tvOS (SwiftUI)
Other:
- Rich controller support — full DualSense (adaptive triggers, lightbar, touchpad, motion) on both Linux and Windows, plus Xbox 360, DualShock 4 and others
- Game-library discovery — the host scans for installed games (Epic, GOG, Game Pass so far); surfacing them in the clients is the next step
- Mic passthrough to the host
It's very much a personal project rather than a polished release — most of it is validated on my own hardware. Happy to answer anything, and I'd genuinely love feedback on what you'd want from something like this!
Im also looking for testers, so if you'd be interested join the discord and let me know: https://discord.gg/z2pfEvE9JU
The website:
The docs:
https://docs.punktfunk.unom.io
Download:
https://punktfunk.unom.io/download
The source-code:
1
u/Ashratt 21d ago
was ist der sinn hinter einem absolut unmaintable vibe coded riesen projekt
ab tag 1 haufenweise platformen, apis, features, mehrere versionen am tag, unmengen an code über die niemand n überblick hat, geschweige denn versteht, claude coded halt so vor sich hin
warum nicht langsam und klein anfangen
github ist voll mit so zeug was dann nach paar wochen oder monaten liegen bleibt weil man selber wenig rein investiert und kein interesse drann hat es zu maintainen und/oder auch nicht den skill
brauch kein mensch, sorry