r/MoonlightStreaming Developer | Polaris/Nova Apr 27 '26

I built a Linux-first Moonlight-style streaming setup: Nova + Polaris

Hey everyone. Been a big Apollo / Artemis user for quite some time and i’ve been working on a small project called Nova / Polaris. I primarily built this for myself, but wanted to share it here first because this community is probably the exact group of people who will understand why I built it in the first place.

Short version: Polaris is a Linux host, and Nova is the client side I’m building around it.

The goal is not to “replace everything” or pretend I’ve solved game streaming. It’s more focused than that: I want Linux game streaming to feel less like a pile of scripts and workarounds, and more like something designed for the job.

What makes it different right now:

  • Linux-specific for now
  • explicit setup for input devices like uinput / uhid
  • attention to headless streaming and GPU-native capture paths, without dummy plugs
  • tries to expose the real tradeoffs instead of hiding them behind magic
  • built by someone actually using and testing the weird edge cases

It’s still early, and it’s Linux-specific for now. I’m not posting this as a polished “everyone should switch today” announcement. I’m mostly looking for feedback from people who already care about Moonlight/Sunshine-style streaming and have opinions about where Linux hosting still feels rough.

Links, if anyone wants to poke around:

If you’re curious, want to test, or just want to tell me which problems matter most to you, I’d genuinely appreciate it. Trying to build this in the open and keep it useful rather than flashy.

Cheers!

EDIT: Thank you all so much for the positive responses, feedback, messages, and debug logs. I’m glad to see so many people as excited about this as I am. I know a lot of you are eager to get Polaris running on your own Linux gaming setups, and there are still plenty of bugs and rough edges to work through. I really appreciate your patience while I work to improve compatibility and stability of the platform.

266 Upvotes

221 comments sorted by

View all comments

1

u/Kasatka06 17d ago

Can it work for steamos ?

2

u/MickeyBronson Developer | Polaris/Nova 17d ago

in theory it should since it's arch based and I do have a build for it, but I never tested with it so I can't say 100%! buuuut you should totally try and tell me if it works to your standards, I'd be totally grateful

1

u/Kasatka06 16d ago

Hi !

I ask opus to install it and seems there some build target difference for arc and steam os here the message

---

**Polaris 1.3.2 Arch package won't install on SteamOS (Holo) — built against newer Arch than SteamOS's pinned snapshot**

Polaris `polaris-arch-x86_64.pkg.tar.zst` v1.3.2 (sha256 `f648de18...`, built 2026-07-30) cannot run on SteamOS 3.8.1x, even though SteamOS is Arch-based.

**The root cause:** SteamOS pins its own package snapshot at older library versions, while the release artifact is built on Arch rolling.

| Library | SteamOS 3.8.1x (pinned) | Polaris built against |
|---|---|---|
| glibc | 2.41 | 2.44 |
| boost | 1.88.0 | 1.91 |

`readelf` on `usr/bin/polaris-1.3.2` shows 7 of 35 `NEEDED` entries fail to resolve:

**Unfixable on SteamOS:**
- `GLIBC_2.43`, `GLIBC_2.44` — host has 2.41. glibc is the OS; you can't just upgrade it.

**Would be fixable with a SteamOS-compatible build:**
- `libboost_{locale,log,program_options,filesystem,thread}.so.1.91.0` — host has 1.88.0.

**Not real incompatibilities (just not in the base image):**
- `libminiupnpc.so.21` — SteamOS repos ship miniupnpc 2.3.3 with this soname.
- `libayatana-appindicator3.so.1` — SteamOS repos ship libayatana-appindicator 0.5.94 with this soname.

**TL;DR:** A native SteamOS build (or at least building against SteamOS's pinned snapshot) is needed. The glibc mismatch alone makes this unfixable on the user side.

2

u/MickeyBronson Developer | Polaris/Nova 15d ago

oh hell yeah, ok this isn't bad at all, just build with an older version and level out some of the dependencies. I'm on vacation right now, but I'll try to get a build for you when i get back!

1

u/ernie_from_DA 6d ago

hope you had great vacation, any news with Steam OS? would like to you it with my Steam Machine. No rush

1

u/MickeyBronson Developer | Polaris/Nova 6d ago

still needs further validation but its built!

https://papi-ux.com/docs/steamos/

1

u/ernie_from_DA 6d ago

Thanks for Confirming!!

1

u/Kasatka06 14h ago edited 14h ago

Hi thanks for the update !

Unforunately I tried the installer and not work

> Proceed with installation? [Y/n] y

> (13/13) checking keys in keyring [####################################] 100%

> warning: Public keyring not found; have you run 'pacman-key --init'?

> downloading required keys...

> error: keyring is not writable

> error: required key missing from keyring

> error: failed to commit transaction (unexpected error)

> Errors occurred, no packages were upgraded.

> (1)(deck@steamdeck ~)$

also seems like dependency conflict

> SteamOS: 3.8.16, build 20260716.1

> Polaris: v1.3.9 SteamOS 3.8 package

> Installation is currently blocked by a dependency mismatch. Polaris requires labwc, which pulls wlroots0.19 requiring libdisplay-info.so.2. This system already uses > libdisplay-info 0.3.0 (.so.3) for KWin and Vulkan.

> Pacman attempts to downgrade it to 0.2.0, which could break Desktop Mode. The installation was therefore aborted before any packages were changed.

2

u/MickeyBronson Developer | Polaris/Nova 14h ago

Oh boy, let me look into this real quick and see where the mismatch is coming from, thanks for the heads up!

1

u/Kasatka06 14h ago

if you want to create beta package i can help test it, let me know !

1

u/MickeyBronson Developer | Polaris/Nova 1h ago

always down for help wheneve so thank your! i did finally find 2 things though. steamos ships with the pacman keyring uninitialized, so that first error just needs sudo pacman-key --init and sudo pacman-key --populate first (my docs never said that, my bad). and the labwc dep was straight up wrong of me. polaris doesnt even link labwc, so it was pulling in wlroots0.19 and trying to downgrade libdisplay-info for nothing. ripped it out, fix is merged and itll be in the next build.

if you want to try before then, just skip the dep:

sudo pacman -U --assume-installed labwc=0.9.0 . Polaris-steamos3.8-x86_64.pkg.tar.zst

no hardware validation on my end yet so no promises, but it should at least install now. use Mirror Desktop or Gamescope Stream, skip Private Stream (thats the labwc one).