Skip to content

Latest commit

 

History

1,998 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Polaris

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.

Stars Matrix License Release

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 Aurora Mission Control ready for a client, with host vitals, launch checks, and quick controls

Built for the whole player loop

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.

Why Polaris


A private streaming desktop. Private Stream runs a game in its own compositor instead of changing your physical monitor layout.

Operational truth, not a mystery box. Mission Control shows the chosen runtime, capture path, encoder, viewers, latency, loss, and Doctor guidance.

A client-aware launch model. Nova can present available display modes, session ownership, safe disconnects, and host-backed tuning before and during play.

Local-first and open. Pairing state, permissions, library data, and core streaming remain on your host. Optional AI features use only the provider you configure.

How isolation works

  1. Choose a game. Launch from Polaris, Nova, or a compatible Moonlight client.
  2. 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.
  3. 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.

Ready, live, and back to the library

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.

Polaris Aurora Mission Control during a live Android Handheld session, showing Doctor and the GPU-native runtime path

The Library keeps launch health and source context beside the artwork. Control Ultimate Edition leads this representative Aurora capture.

Polaris Aurora Library with Control Ultimate Edition and other ready games

Every capture above and across papi-ux.com comes from the tagged public release; the pixel-level provenance manifest ships with the site.

Install and start a first stream

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
polaris

Fresh 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.

Clients and compatibility

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 Android 1.4.14-beta.1 candidate game page for Control Ultimate Edition, with the reviewed stream plan and matching secondary action buttons

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 and Doctor

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 and project links

Acknowledgments

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.

AI Transparency

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.

Contributing

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.

License

Polaris is free and open-source software licensed under the GNU General Public License v3.0.

About

linux game streaming that answers to you.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

398 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages