ci / rust-arm64 (pull_request) Successful in 1m30s
apple / swift (pull_request) Successful in 1m59s
apple / distribute (pull_request) Skipped
apple / screenshots (pull_request) Skipped
ci / web (pull_request) Successful in 2m5s
ci / bun-nix (pull_request) Successful in 46s
ci / docs-site (pull_request) Successful in 1m25s
ci / docs-drift (pull_request) Successful in 46s
android / android (pull_request) Successful in 8m17s
ci / rust (pull_request) Successful in 22m6s
WP2 of the docs-and-onboarding overhaul (punktfunk-planning design/docs-and-onboarding-overhaul.md), stacked on #337 (WP0+WP1). Nav (meta.json) is now Get started / Guides / Switching from Sunshine / Reference / Troubleshooting. Get-started track, rewritten for someone with no Linux expertise — one task per page, happy path, under two minutes each: quickstart (5 steps), install (a pick-your-system hub), ubuntu, debian, fedora, arch, bazzite (+ a firewall step it was missing), a new nixos page (moved out of install), pairing. Every distro page quotes its install snippet through a new <Install platform="…"/> MDX component that reads docs-site/src/data/platforms.json — a byte-identical snapshot of data/platforms.json (the Docker build context is docs-site/ alone, same arrangement as openapi.json) which scripts/ci/check-docs-drift.sh now gates. <Ports/> renders the port table the same way on a new reference page, ports.mdx, so the four distro pages stop restating port lists. platforms.json itself was fixed while wiring it up: the apt snippet lacked the keyring lines, the winget one lacked `winget source add`, the Arch repo-add is now idempotent (grep guard — the documented double-append gotcha disappears at the source), names match the real floors (Ubuntu 26.04+, Windows 11 22H2+), a web-console port entry and the firewall profile names were added, and client platforms (Windows MSIX, macOS, TestFlight, Play, Steam Deck) so the website can render its cards from the same file. Dense material moved down rather than deleted: build-from-source.md (the three distro appendices), the Mint/LMDE/Cinnamon analysis → requirements.md, TOFU/`--open` → security.md, Secure Boot MOK paths and the Arch libavcodec soname refusal → troubleshooting, sysext channels/rollback/rebase → updating.md, the 0.28.1 cert note → windows-host. New page switching-from-sunshine.md: coexistence via the 47990 move (PUNKTFUNK_MGMT_BIND), the Windows display-topology overlap, detect-conflicts exit semantics (1 only for an active host — the troubleshooting page said "non-zero if any"), what maps to what, migration steps. The troubleshooting Sunshine section is tightened and points there. The three facts whose only home was a README now live in troubleshooting — the ffmpeg-libs weak dependency (no NVENC on Fedora), the pacman double-append error, the ds_inhibit SELinux storm with DualSense pads on Bazzite — and packaging/bazzite + packaging/arch READMEs are pointers. Stale claims corrected against the tree: the packaged unit runs the native-only `serve` and GameStream is opt-in on every route (kde, hyprland, security, steamos-host said otherwise); host.env is optional (EnvironmentFile=-); Fedora 43 uses the `bazzite` group; the iOS clipboard bridge exists; PUNKTFUNK_GAMESCOPE_SDR_NITS defaults to 203. Guides trimmed for verbosity (~5% by words — they are fact-dense; every heading, command, number, env var and link target is preserved, verified by token-inventory diffs). Tooling: docs-site README and CONTRIBUTING describe the platforms snapshot; input/uninstall/support-matrix links retargeted. Verified: check-docs-drift.sh and check-docs-links.sh green, docs-site `bun run build` + `bun run lint` green, and the built site served locally to confirm every cross-page anchor the rewrite links to (37) renders, plus the <Install/> blocks and the <Ports/> table. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
64 lines
4.4 KiB
Plaintext
64 lines
4.4 KiB
Plaintext
---
|
|
title: Introduction
|
|
description: Low-latency desktop and game streaming from a Linux or Windows host to any of your devices.
|
|
---
|
|
|
|
import { Cards, Card } from 'fumadocs-ui/components/card'
|
|
|
|
**Punktfunk** streams your desktop or games to your other devices — a laptop, a Mac, a tablet,
|
|
a TV — at low latency and at **each device's own resolution and refresh rate**. Run the host on a
|
|
Linux machine or a Windows PC, connect a client, and you're streaming.
|
|
|
|
It's built for the things that make streaming feel native:
|
|
|
|
- **Your device's exact mode.** The host spins up a virtual display sized to the client that's
|
|
connecting — 1080p60 to your laptop, 1440p120 to your desktop, 4K to your TV — at the same time.
|
|
No letterboxing, no scaling, no juggling your real monitors. On Windows that's Punktfunk's own
|
|
indirect display driver, frames pushed straight in — so there's no physical monitor or dummy HDMI
|
|
plug to deal with, even on the secure desktop.
|
|
- **Low latency, GPU end to end.** Frames go straight from the compositor to the GPU encoder —
|
|
NVENC on NVIDIA, Vulkan Video or VAAPI on AMD and Intel on Linux, AMF or QSV on Windows — with no
|
|
CPU copies on the paths where that's been validated (the
|
|
[support matrix](/docs/support-matrix#zero-copy-capture-to-encode) says which), and over a
|
|
transport tuned for responsiveness rather than throughput.
|
|
- **Works with the apps you already have.** Punktfunk also speaks the GameStream protocol, so with
|
|
`--gamestream` any **Moonlight** client connects — alongside a faster **native protocol** with
|
|
dedicated apps for **macOS, iOS, tvOS, Linux, Windows, and Android**.
|
|
- **Secure by default.** Hosts require a one-time PIN pairing; after that, devices reconnect on a
|
|
pinned identity. No accounts, no cloud.
|
|
|
|
## Pick your path
|
|
|
|
**New here? Start with the [Quick Start](/docs/quickstart)** — it takes you from nothing to a
|
|
stream and links out to the detail as you need it. The rest of these are for when you want depth.
|
|
|
|
<Cards>
|
|
<Card title="Quick Start" href="/docs/quickstart" description="From nothing to streaming: set up a host and connect your first client." />
|
|
<Card title="How It Works" href="/docs/how-it-works" description="The ideas behind Punktfunk in a few minutes — virtual displays, the two protocols, pairing." />
|
|
<Card title="Support Matrix" href="/docs/support-matrix" description="What works where — every host desktop, GPU and client app, each cell read out of the code that decides it." />
|
|
<Card title="Install the Host" href="/docs/install" description="One page per system — Ubuntu, Debian, Fedora, Arch, Bazzite, SteamOS, NixOS, or Windows — with the install command and nothing else." />
|
|
<Card title="Switching from Sunshine" href="/docs/switching-from-sunshine" description="Run Punktfunk next to Sunshine, Apollo or Vibeshine while you try it, then migrate — what maps to what." />
|
|
<Card title="Connect a Client" href="/docs/clients" description="Stream with the native app for your device — macOS, Linux, Windows, Android — or any Moonlight client." />
|
|
<Card title="Your Game Library" href="/docs/game-library" description="The host finds your installed games by itself — browse a paired host and launch a title straight into the stream." />
|
|
<Card title="API Reference" href="/api" description="Interactive OpenAPI reference for the host's management REST API — status, devices, pairing, library." />
|
|
</Cards>
|
|
|
|
## What you need
|
|
|
|
- A **host** with an NVIDIA, AMD, or Intel GPU (there's a software encoder to fall back on without
|
|
one) — either a **Linux** machine running one of the [supported setups](/docs/requirements)
|
|
(**Ubuntu**, **Debian**, **Fedora**, **Arch**, **Bazzite**, or **SteamOS**), or a
|
|
**[Windows](/docs/windows-host) PC**. What each combination can actually do — codecs, HDR, 4:4:4,
|
|
cursor, input — is in the [Support matrix](/docs/support-matrix).
|
|
- A **client device** to stream to — there are native apps for **macOS, iOS/iPadOS, tvOS, Linux,
|
|
Windows, and Android**, plus any device that runs **Moonlight**.
|
|
- Both on the **same network** (LAN or VPN). Punktfunk is designed for a trusted local network.
|
|
|
|
Ready? Head to the [Quick Start](/docs/quickstart).
|
|
|
|
## Community
|
|
|
|
Questions, help, or want to try the **Android beta**? Join the
|
|
[**Discord**](https://discord.gg/kaPNvzMuGU) — request a tester invite there — or
|
|
[**r/Punktfunk**](https://www.reddit.com/r/Punktfunk/) on Reddit.
|