Files
punktfunk/docs-site/content/docs/clients.md
T
enricobuehler 499bf2dae8
ci / web (push) Successful in 45s
ci / docs-site (push) Successful in 51s
decky / build-publish (push) Successful in 18s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 9s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 9s
ci / bench (push) Successful in 6m15s
ci / rust (push) Failing after 9m21s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 1m15s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 6m29s
android / android (push) Successful in 12m35s
arch / build-publish (push) Successful in 14m4s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 8m26s
docker / deploy-docs (push) Successful in 27s
deb / build-publish (push) Successful in 15m2s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 15m57s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 16m6s
apple / swift (push) Successful in 5m18s
apple / screenshots (push) Successful in 20m11s
docs: document the community pf-webos client for LG TVs
Adds an LG webOS TV entry to Clients and Install a Client, pointing at
the community-maintained pf-webos project (dyptan-io) and its sideload
steps (Homebrew Channel + .ipk) — not an official punktfunk client.
2026-07-15 18:05:32 +02:00

7.1 KiB

title, description
title description
Clients The ways to connect to a punktfunk host — the Apple app, Moonlight, or the Linux client.

A punktfunk host accepts clients over its own punktfunk/1 protocol (the macOS, Linux, Windows, and Android apps) and over GameStream (Moonlight). Pick whichever fits the device you're streaming to. Ready to install? Install a Client has the step-by-step for every device.

Apple app (Mac, iPhone, iPad, Apple TV)

The native app for Apple devices speaks punktfunk's own punktfunk/1 protocol — the lowest-latency, most resilient path, with the full feature set:

  • Automatic host discovery — hosts on your network appear under On this network; no IP typing.
  • PIN pairing built in, and pinned reconnects after that.
  • Controllers, including DualSense — rumble, adaptive triggers, lightbar, motion, and touchpad.
  • A live stats overlay (resolution, fps, bitrate, latency) and a built-in network speed test to pick a bitrate for your link.

Open the app, pick your host, pair once, and stream. It builds from the clients/apple directory in the repo (Swift / VideoToolbox / Metal).

Moonlight (anything else)

punktfunk also speaks the GameStream protocol, so any Moonlight client — a browser, a smart TV, an old phone, a games console — connects with no punktfunk-specific software. (Most platforms also have a native punktfunk app below — Moonlight is the catch-all.) See Connect with Moonlight.

This is the broadest-compatibility option and great for couch gaming. It doesn't use the native protocol's FEC/encryption extensions, but for a healthy LAN that rarely matters.

Linux desktop client (GTK4)

punktfunk-client is the native graphical Linux client — a GTK4 / libadwaita app that speaks punktfunk/1 directly, with hardware decode via Vulkan Video on every GPU vendor (including NVIDIA), falling back to VAAPI dmabuf and then software, PipeWire audio, and SDL3 controllers (rumble, lightbar, DualSense touchpad/motion). Like the Apple app it discovers hosts on your network automatically, does PIN pairing, and pins reconnects.

It ships as a real package, not just a source build — full steps in Install a Client:

  • Any Flatpak distro (recommended)flatpak install https://flatpak.unom.io/io.unom.Punktfunk.flatpakref from the hosted flatpak.unom.io repo, then flatpak update; this is also what the Decky plugin launches.
  • Ubuntu / Debianapt install punktfunk-client from the punktfunk apt registry.
  • Fedora / Bazziterpm-ostree install punktfunk-client from the Gitea RPM registry.
  • Archsudo pacman -Sy punktfunk-client from the signed binary repo (see Arch Linux).

Launch it, pick your host from the list, and stream. For scripting you can skip the host list and connect straight away:

punktfunk-client --connect <host>:9777   # skip the picker, start a session immediately

Android app (phone + Android TV)

The native Android app speaks punktfunk/1 directly, on both phones and Android TV. It does hardware HEVC decode (including HDR10), Opus audio with a mic uplink, game controllers with rumble and DualSense feedback, automatic host discovery, PIN pairing with pinned reconnects, and a live stats overlay — with D-pad and game-controller focus navigation for the couch. It builds from the clients/android directory (Kotlin + a shared Rust core).

The app is in Google Play Internal Testing — request a tester invite on our Discord and we'll add you (see Install a Client). Once added, open the app, pick your host, pair once, and stream.

Windows desktop client

punktfunk-client for Windows (clients/windows) is the native graphical client for Windows — pure Rust, the same punktfunk/1 core as the Apple, Linux, and Android apps, with a WinUI 3 UI (host list, settings, PIN pairing); the stream itself runs in punktfunk's Vulkan presenter. Its decoder tries Vulkan Video, then D3D11VA, then software, with 10-bit/HDR present, WASAPI audio + mic, SDL3 controllers (rumble, lightbar, DualSense), network discovery, and the full PIN-pairing trust surface. It builds for both x86_64 and aarch64 and ships as a signed MSIX. Launch it and pick a host from the list, just like the other native apps.

Hardware decode is validated on NVIDIA and Intel GPUs; HDR10 is implemented with on-glass validation still pending. If anything misbehaves, Moonlight is a proven alternative for Windows.

A headless CLI path exists for scripting/measurement:

punktfunk-client                                   # open the WinUI 3 window (host list / settings)
punktfunk-client --discover                        # list hosts on the network
punktfunk-client --headless --connect <host>:9777  # no window: connect, count frames, print stats

Prefer the broadest compatibility, or no install? Moonlight also streams to Windows (see below).

webOS (LG TV) — community

pf-webos is a native client for LG webOS TVs, built and maintained by the community (dyptan-io) on top of punktfunk's punktfunk/1 protocol and core. It's not an official punktfunk app, but it speaks the real protocol directly (not Moonlight/GameStream) — LAN discovery or add-by-IP, PIN pairing with pinned reconnects, hardware video decode via webOS's NDL DirectMedia API, and a browsable game library with cover art, navigable with the Magic Remote.

It ships as a sideloadable .ipk (homebrew package) rather than through the LG Content Store — see Install a Client for the sideload steps.

Linux reference client (headless)

punktfunk-probe (in the repo) is a command-line client for the native protocol, used for testing, development, and latency measurement — not an everyday client. It connects, streams to a file, runs the speed test, and can discover hosts:

punktfunk-probe --discover                        # list hosts on the network
punktfunk-probe --connect <host>:9777 --pin <fp>  # connect to one

Which should I use?

You're streaming to… Use
A Mac, iPhone, iPad, or Apple TV The Apple app
A Linux desktop or laptop punktfunk-client (GTK4)
A Steam Deck The Decky plugin in Gaming Mode, or the GTK4 client in Desktop Mode
An Android phone or TV The Android app
Windows The native punktfunk-client (signed MSIX) or Moonlight
An LG webOS TV The community pf-webos client, or Moonlight
A browser, another smart TV, or any other device Moonlight
Automated tests / latency measurement punktfunk-probe (headless)

Whichever you choose, the first connection needs a one-time pairing.