Ah so this is where the influx of activity comes from..
Hi, creator of Moonshine here.
I'll try to answer some common questions here instead of replying the same thing everywhere:
What is it?
At it's core it's similar to Sunshine but with one important difference: Moonshine creates its own compositor and does not rely on an existing desktop environment. The benefits:
- You do not need a running desktop environment: it can run headless.
- The compositor is created with any resolution and any refresh rate, without requiring a dummy plug.
- Because Moonshine controls the compositor, it has HDR support out-of-the-box, even if your monitor does not support HDR (ongoing development, it works in the games I tested).
- If you do have a running desktop environment, you can keep using it while streaming a game at the same time.
On a more technical level: I like the narrow focus that Moonshine has. Only one encoder (Vulkan), only one OS supported (Linux), no GUI, no compatibility with old Moonlight clients. The codebase is intentionally "lean". Of course this also has disadvantages like requiring semi-recent GPUs & drivers, only working on Linux and newer Moonlight clients, but I can live with that.
Why create it?
The short answer: a lazy girlfriend and a stubborn Linux user.
The long answer: Moonshine is a hobby project that I've been working on for a few years (first commit goes back to 2022). It was (and still is) a fun exercise and helped me learn a lot, which if it never became functional would have been a nice outcome already. In fact, in earlier README's I advise people not to use it because at the time it did what Sunshine does but worse. I removed that section when I started adding features that made it different from Sunshine.
Should I use it?
Today I would say to a new user: use Sunshine, there's tons of guides and online information and it will likely work fine for you.
If you like tinkering and trying out new things: sure, why not :).
The Sunshine/Moonlight combo allowed me to stream emulated, upscaled SSX Tricky (PS2 game) from my desktop to an (at least 7 year-old) Android streaming box as smooth as silk.
The only downside was that the game had to be running, visibly, on the screen of the desktop machine, meaning the desktop is unusable for anything else - ie. if someone else wanted to play the game while I was working on the desktop.
This appears to solve that. Sunshine/Moonlight was already cake with a fair layer of icing. This is a sprinkling of glacé cherries on top. I love glacé cherries.
I use moonlight/apollo.
1. Connect my Dualsense controller to my macbook
2. Open moonlight on my macbook
3. Connect to my gaming desktop in full screen mode
3. Launch my AAA game on Steam
4. Profit
Over Wifi 7 I get basically no discernable lag, which was crazy to me the first time I tried it. I also have a Minisforum attached to my large screen TV and the process is identical except I push a different combo on the Dualsense controller to connect to the Minisforum. Because apollo saves settings, I can pretty seamlessly switch between the two with basically no issues.
> Moonshine runs each streaming session in its own isolated environment, separate from your desktop. This means your host PC stays usable while you stream, and it works without an active desktop session.
So does this create like a virtual desktop? How does that work? Is this just a separate "screen" or is this more like an entirely separate compositor instance (if thats the right term here)?
This is how people play Switch games on Wii U and 3DS. Emulate on PC and stream on the older systems
I am very happy with Moonlight/Sunshine combo. Runs neatly on my RTX 4000 Pro GPU Server. The only thing I miss is automated resolution adjustment to connected Clients, but I was able to script this with Home Assistent Windows client.
I’m currently using sunshine and moonlight for remote access to ros2 development VMs with passed through GPUs.
We needed an old version of Ubuntu hence the VM. And gpu pass through is needed for gazebo simulations.
I started with RDP but the desktop was super laggy and unresponsive. Sunshine/moonlight has made it usable.
I don't remember whether it was this or "sunshine", but game streaming from your own PC hasn't been the same since it was simply "turn on the Nvidia feature". It was way too difficult to figure out how to make it work the last time I tried and I gave up and haven't tried again since. For all the good they do otherwise, FOSS devs just never seem to get usability right.
I wonder if Moonlighting (which is the title of a 1980s TV series, but also refers to "having a second job, typically secretly and at night, in addition to one's regular employment", as in "my phone is moonlighting as a gaming PC") wouldn't be a better name? But yeah, that's probably the explanation for the name of the Moonlight client, and it would be too close to that name?
Life is really funny, I spent most of the last week scripting hyprland to run gamescoped steam on a headless monitor to achieve this via sunshine. Tried wolf/games on whales but since I sometimes play the same games directly on the same PC it makes it weird to share the game directories.
Although I can't use my PC at the same time as streaming, I'm really happy with my janky setup for now, but kinda really want to try this!
Since this doesn't take over the desktop (per the FAQ) this sounds amazing for headless machines.
Shame it needs such a modern GPU and $feature which isn't offered by my preferred Alpine Linux. But that shouldn't detract from what it's promising.
Last time I tires it I learned that the Intel meaa driver doesn't support video deckde and encoded on some older Intel ARC cards like the A770 which is a bummer
idk I'd rather run both sunshine and steam in a container nice and decently isolated rather than just have the compositor be a separate instance with moonshine
scales nicer for multiple clients, keeps dependencies far away from my host
and lets me use NvFBC for lower latency, which yes you can easily patch onto consumer nvidia gpus
I wonder how it compares to Games on Whales.
GoW had that advantage over Sunshine, that it allowed selecting any resolution, it didn't require hdmi connector that simulated a monitor.
I spent quite a while trying to set up streaming from my laptop to my phone using Sunshine/Moonlight. I never got decent results despite following tutorials that were supposed to make it all very easy.
Gaming is something I do to relax and I eventually decided it wasn't worth it since I had spent a week of my limited downtime messing around with codecs, latency, wifi settings, trying different apps, etc. and not gotten any kind of usable results.
I guess it was about three years ago. Have things improved since then?
Has a anyone run this on Fedora or similar yet? From the readme it sounds like it could work but I've been surprised before and I can't find a discussion about it.
I don't quite understand the difference between this, sunshine, and apollo?
Is this basically Apollo but for Linux?
I’ll try this out later. Mostly interested in the controller handling, will this pass-through my Steam Controller or emulate it to an Xbox controller like Sunshine does?
If it’s pass-through like the README makes it seem, then I’m instantly sold.
See also Games on Whales / wolf:
huh i think i can use that with a S7150 to make a cheap vdi server with the video encoding happenng in the host
I've tried several times to set this up on my Steam Deck from my PC, and I just can't get it to work reliably. 9/10 times it just opens to a black screen. I've followed 20 different guides on forums, on reddit, on facebook - nothing. The only way it works reliably is if I don't use the virtual screen option, but then it looks all wrong as my main monitor is an ultrawide.
Moonlight is pretty popular on Chinese gaming handhelds. Was wondering what it was exactly. How is the Android performance vs Linux?
I’m not completely clear on how this differs from running Sunshine on a Linux box
I'm down to try this new rust server. It seems to replace either Sunshine or the more recent fork Apollo. They both work fine
Note that Moonlight also has a fork, Artemis.
I'm genuinely not sure what difference Sunshine/Moonlight has vs somewhat newer Apollo/Artemis, but kind of just posting here to let folks know there are already some fairly active forks from Sunshine, the classic way to host a server for Moonlight clients.
[flagged]
[flagged]
[flagged]
So, to sum up:
First there was Nvidia Gamestream, which was proprietary and later deprecated by Nvidia themselves.
Then came Sunshine and Moonlight, open source server and client implementations of the protocol to allow low latency streaming for all platforms.
Along the way the Game on Whales project started, to allow multi seat streaming plus virtual displays so currently logged in user sessions aren't impacted. Basically this is a whole "host your own Stadia/Geforce Now" solution. But instead of running already setup applications as an existing user, you run these curated containers of Steam, Firefox, etc.
Then someone forked Sunshine and Moonlight into Apollo and Artemis, to make streaming from a virtual display turnkey and OOTB easy. Sadly the virtual display feature of Apollo is in practice Windows only.
And then there's this, Moonshine, in a way doing what Apollo brings to the table but for Linux servers.
Oh, and along the way someone forked Apollo into Vibepollo, an almost fully vibecoded "enhancement". Personally not touching that.
Did I miss anything?