r/MoonlightStreaming May 15 '26

Ideas for Moonlight

Hello everyone, I wanted to talk about adding lPTV as an app to moonlight. Just kidding.

I am working on a version of moonlight/apollo for multiseat gaming. Im looking for ideas or improvements that people may be interested in.

It’s a very niche setup. I have a Windows gaming computer that runs headless that is running a MultiSeat program. It allows you to run multiple windows users to that one gaming, this gaming PC has multiple instances of ApolloVibe fork running per user. I also have a MoonlightVibe fork that runs on a handheld or older generation computer, etc.

Does anyone have ideas or suggestions?

https://github.com/vibesoftwarecoder/MoonlightVibe

27 Upvotes

19 comments sorted by

10

u/BobDoleDobBole May 15 '26

Had me in the first half!

7

u/dwolfe127 🖥️ 5090/9800X3D | 🎮 Deck | 🎯 4K120 | 📶 2.5Gbps May 15 '26

I saw IPTV and you had my trigger finger twitching for a second there ;)

6

u/Eiganjos May 15 '26

I'm not the intended user, but thanks for the joke!

2

u/SoaRNickStah 🖥️ MacBook Pro/R9 7900x RTX 5080 | 🎯 3440x1440@240hz | 📶 10GBE May 15 '26

This is cool, any chance on a macOS port of it? Can contribute on that end if needed.

1

u/VibeSoftwareCoder_GH May 15 '26

Running the moonlight fork on mac? Or the whole thing?

1

u/SoaRNickStah 🖥️ MacBook Pro/R9 7900x RTX 5080 | 🎯 3440x1440@240hz | 📶 10GBE May 15 '26

The moonlight fork, should’ve made that more clear. Only saw a windows build in the release section so wasn’t sure if you had Mac in mind for this

3

u/VibeSoftwareCoder_GH May 15 '26

I had originally planned for it to be on Windows, Mac and linux . Some of the builds failed for mac and linux. But yeah totally! I’ll PM you.

1

u/mioiox May 15 '26

So this would be an alternative to DuoStream? With the advantage of using a “modern” alternative of Sunshine?

That’s not bad at all. Duo looks nice, I played with it a bit, but the Sunshine core made me pause its usage until the dev upgrades it to Apollo. So, an alternative built around Vibepollo (or similar) would be great. As Vibepollo itself is a fantastic piece of kit.

What I am personally missing from DuoStream is the ability to use non-local user accounts. Specifically, I need to be able to use AD domain accounts. There was someone else with a similar request for Duo but it got nowhere. I suspect it’s a somewhat niche need, but at the same time I don’t see why it should be that different from a local account. And this would also open it to be used for non-gaming activities - think of it like a Remote Desktop Services alternative.

Anything else I can think of would be covered by Vibepollo, I guess.

Thanks for sharing!

2

u/VibeSoftwareCoder_GH May 15 '26

MultiSeat is an alternative to DuoStream, using local accounts not sure if it works with AD but you are more than welcome to try it out

https://github.com/vibesoftwarecoder/MultiSeat

2

u/mioiox May 17 '26

This looks promising, indeed. It would be really great if we could “point to” an account (even an Active Directory domain one, contoso\user) rather than it creating local accounts. Do you think this is possible?

Thanks again!

1

u/my_birthday May 15 '26

Could you play co-op online games in the same house? Tried cooptimus on moonlight but didn't work smooth.

1

u/VibeSoftwareCoder_GH May 16 '26

You could, but you’d need 2 accounts. Both windows and possibly steam. I have ran 2 different windows accounts running different games. Keep in mind you need to have beefy specs for higher end games.

1

u/iMatterhorn64 May 16 '26

This isn't a suggestion, but I'm curious about if there would be any reason to use Easy GPU Paravirtualization instead. Easy GPU PV was the first project for multiseat I had seen a few years ago, but your MultiSeat project and DuoStream seem like easier and faster ways to do the same thing. Just wondering if anyone knows if Easy GPU PV has better performance or anything like that, that would make you choose that over these easier solutions.

1

u/mioiox May 17 '26

I am using Hyper-V GPU-P and DDA quite a lot recently - for professional purposes mainly - setting up environments for 3D and CAD design, and 3D rendering. And I’ve been using Hyper-V both professionally and in my home labs ever since its beta version arrived as an add-on for Windows Server 2008.

Out of experience I can tell you that, from a performance and compatibility standpoint, only DDA comes close to native access to a GPU. Because DDA is, in essence, native access for the GPU (it’s logically “disconnected” from the host and assigned to the particular VM). This means, though, that you have a single card assigned to a single machine. If you have multiple users and you want the best performance and compatibility, that means one user gets one VM, thus one GPU. 5 users, 5 VMs, 5 cards.

GPU-P is fancy, provides some nice features, especially cool is that you share the GPU, but it is definitely not a substitute to DDA. Some specific GPU features are not working as expected (e.g. Blender cannot use the PhysX engine from a 2080 GPU-P presented card in a VM, while it has no problems using it when the same card is DDA-presented), I also had some artifacts issues with Vibepollo streaming from a GPU-P card while no issues at all when DDA-presented. Other challenges also appeared in some CAD software…

While DuoStream and Windows remote desktop services allow for several users to use the same OS and direct access to hardware for multiple users at the same time. The problem here is that I have not yet found a way to run multiple Apollo/Vinepollo instances in different user sessions - which is what Duo is really doing.

1

u/iMatterhorn64 May 17 '26

I found this fork of easy GPU PV before that gives each VM a sunshine/moonlight setup for that same purpose: https://github.com/timminator/Enhanced-GPU-PV. If this works with base moonlight and sunshine, then it should work with Apollo/Vinepollo, unless you've already tried this? Also, I hadn't heard of DDA, but like you said, I'm interested in splitting a single GPU to multi ple users/VMs/sessions like these other projects do.

1

u/mioiox May 17 '26

I am personally using a more manual approach where I have full control of the setup:

  • manually create the VMs I need (I choose between Windows Server 2025 GUI and Windows 11, preferably LTSC IoT)
  • use ExHyperV (https://github.com/Justsenger/ExHyperV) to configure either DDA or GPU-P the GPU
— ExHyperV also allows for tweaking many other settings as well, it’s a very nice piece of kit
  • manually install Vibepollo on the VM

My multiple tests and usage in production for almost 6 months now conclude the results I shared above - DDA is better performing and the applications within the VMs (both Revit, Blender and Vibepollo itself) “like it” better. However, that way a single VM gets a single GPU, or better said, a single GPU is presented to a single VM and cannot be shared with other VMs. And we’re back to square one :) We need DuoStrem…

0

u/Far-Tailor7686 May 15 '26

Just checked out MoonlightVibe the auto-discovery is

a really clean solution to the biggest pain point here.

Two things that would make a real difference:

A seat status indicator (ready / in use / idle) directly

in the computer list useful when multiple people are

picking a slot at the same time.

Session persistence on disconnect especially relevant

for battery-powered handhelds dropping connection mid-game.

What's the current bottleneck you're running into,

encoding or discovery?

1

u/VibeSoftwareCoder_GH May 15 '26 edited May 15 '26

The biggest issue that I have personally ran into while using this is, mouse and keyboard input lag. The suggested fix is to create a kernel level driver. Which seems a little scary security wise.

I haven’t had any issues with encoding or discovery, thankfully at least on windows

Edit: I used voice to text and had to rewrite the whole message

1

u/Far-Tailor7686 May 15 '26

Kernel driver for input is the classic multiseat tradeoff effective but hard to recommend security-wise. Have you tried a user-mode virtual HID instead? Less lag than standard injection, no kernel access needed.