Linux game streaming that answers to you.
Polaris turns a Linux gaming PC or a Steam Deck into a modern, self-hosted streaming home for Nova, Moonlight, and other compatible clients. Choose whether a session uses a private compositor, a virtual display, your desktop, or the Steam Game Mode screen, then see the active capture, encoder, client, and runtime path in one web console.
Explore Polaris · Download · Join the Matrix community · Quick start · Compatibility
Important
Polaris is a Linux host application by design. Windows and macOS host ports are not planned; Nova and standard Moonlight clients can connect from their supported platforms.
Polaris is the matched host for Nova. Together they make the whole player loop explicit:
- Where games run is a real choice. Private Stream, Gamescope Stream, Host Virtual Display, Headless Dongle, and Mirror Desktop are described by their display and privacy impact, unavailable modes fail closed, each app can fix its own mode with Launch as, and the displays Polaris creates for a stream go up to 240 FPS.
- Steam Game Mode is supported. Stream a gamescope Steam session, launch a Steam title from Nova, and end only the title the stream opened. Proven on Steam Deck OLED; the handhelds guide covers switching between Desktop Mode and Game Mode.
- Spaces, an early preview. Give a player their own sign-in, library and saves with Steam, Heroic or Lutris. Host Setup installs the runtime; NVIDIA Spaces use the host driver. One Space can be active at a time. Read Spaces and Spaces or regular streaming.
- Anyone can watch. A second device can watch the stream that is running, whatever its own resolution. The host says up front what there is to watch, so Nova asks for exactly that stream; Moonlight still asks for the stream's mode.
- ROM folders become a library. Import once and rescan for new games. Emulator presets, local covers and launch-health checks explain what is ready; the emulators guide covers setup.
- Refusals say why. A refused launch carries what went wrong and the one change that fixes it, with a code Nova shows, instead of error 503.
- Doctor acts only when it can prove the step is safe. It can make one reversible same-stream bitrate change, verify the encoder and fresh evidence, and restore the previous target when verification fails. Other findings stay read-only guidance, including the forecast, before any stream, of when capture on this host would copy frames through system memory and why.
- Launches are deterministic. Auto, Quality, High FPS, and Stability resolve into one app- and topology-bound envelope that Nova sends back unchanged.
- The Library keeps identity intact. Native and Flatpak Heroic GOG/Epic imports retain their runner and installation identity, while built-in utility entries keep their shipped artwork unless the player chooses a manual match.
Read the changelog for the release-by-release change and validation record.
- Choose a game. Launch from Polaris, Nova, or a compatible Moonlight client.
- Resolve where this session runs. Private and Gamescope modes get a session-owned compositor; Host Virtual Display gets an extra output; Mirror Desktop deliberately uses the physical desktop. A Space runs its own Steam in a container, chosen per device. Polaris validates the matching capture and encoder path before admitting the stream.
- Observe and recover. Mission Control reports what actually happened; Doctor suggests bounded corrections when live evidence needs attention.
Read the runtime guide for the detailed Private Stream, virtual-display, and desktop-mirroring behavior.
The same Mission Control surface changes from an idle host with a paired client to an active stream with live telemetry, Doctor status, and the observed capture and encoder paths. Capture can involve CPU copies even when encoding runs on the GPU; an idle capability forecast does not verify a live path.
The Library keeps launch health and source context beside the artwork. Control Ultimate Edition leads this representative Aurora capture.
Every capture above and across papi-ux.com comes from the tagged public release; the pixel-level provenance manifest ships with the site.
Use an official package from the latest GitHub release, then perform the explicit host setup. On Bazzite, follow the RPM installation guide and reboot into the staged deployment before setup:
sudo -H polaris --setup-host
polarisFresh install: open https://localhost:47990/#/welcome and create the web
account. Upgrade or reinstall: open https://localhost:47990/#/login and
use the existing account; package operations intentionally preserve credentials,
pairing keys, settings, and the library under ~/.config/polaris. The
quick-start guide contains the current
Fedora, Arch, SteamOS, Ubuntu, Bazzite, openSUSE, and source paths, and on a
Steam Deck the SteamOS guide also keeps
Polaris running in Game Mode. Only use
polaris --setup-host --enable-kms when the guide says your DRM/KMS capture path
needs it.
Nova is the enhanced client for Android and for x86_64 Linux desktops, laptops and handhelds, including Steam Deck, as an Alpha. It adds a host-backed Library, the Space chooser, Play Setup, Private Stream choices, Command Center, NovaHUD, session ownership and tuning provenance. Choose Android APKs or the standard Linux Flatpak from stable or beta releases; the Linux install guide covers native streaming and Steam Input. Steam Frame uses a separate experimental ARM64 development route; sustained 1080p/90 and color/clarity qualification remain open.
Nova reviews the launch plan before play.
Nova beta candidate; exact source and screenshot hashes. The Polaris console images above retain their labelled 1.3.8 provenance.
Standard Moonlight-compatible clients remain supported for pairing, browsing, launching, input, and streaming; the client table says what they get next to Nova. Check the maintained compatibility guide before choosing a distro, GPU, capture path, HDR mode, or experimental Browser Stream setup.
PyroWave is experimental SDR and needs compatible host, client and network capabilities. Nova Linux includes it in the standard 1.4.14 bundle, with a device check on selection. Read the PyroWave guide for request versus encoder units and limits; a suggested target does not prove network capacity.
Doctor grades fresh media-loss evidence, not control-channel retransmissions. A verified loss reduction can pause Live Tuning for that stream; Undo restores bitrate and tuning without changing host settings. See Doctor.
Newly paired clients receive Game Control by default: enough access to browse, launch, and play, without clipboard, file-transfer, or server-command permissions. Existing clients keep their saved access until it is changed under Devices.
- Documentation · Spaces · Emulators · Play with Moonlight · Launch modes · Doctor · FAQ
- Roadmap · Website changelog · GitHub changelog
- Matrix community · Releases · Issues · Discussions
- Security policy · Contributing · Source
Polaris builds on the Apollo and Sunshine host lineage and stays protocol-compatible with the wider Moonlight ecosystem. Thanks to those maintainers and communities for the foundation.
Polaris is a maintainer-led project. I use AI-assisted tools as research, debugging, comparison, and drafting aids, especially when validating unfamiliar Linux compositor, packaging, and client behavior.
Those tools do not decide what Polaris is or what ships. I review changes, test every aspect, and own the final decisions around validation, trust boundaries, and release quality.
Before starting an imported objective, check the current product work and review queue for existing implementation, open PRs and remaining acceptance.
Contributions are welcome, especially focused fixes, docs, translations, packaging improvements, real-hardware testing, and careful feature work. Polaris is still a small maintainer-led project, so the easiest pull requests to review are the ones that explain the problem clearly, keep the change scoped, and say what was tested on Linux. See CONTRIBUTING for the full workflow.
Polaris is free and open-source software licensed under the GNU General Public License v3.0.



