ClassicOldSong / Apollo
Sunshine fork - The easiest way to stream with the native resolution of your client device
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing ClassicOldSong/Apollo in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewApollo Apollo is a self-hosted desktop stream host for Artemis(Moonlight Noir). Offering low latency, native client resolution, cloud gaming server capabilities with support for AMD, Intel, and Nvidia GPUs for hardware encoding. Software encoding is also available. A web UI is provided to allow configuration and client pairing from your favorite web browser. Pair from the local server or any mobile device. Major features: • [x] Built-in Virtual Display with HDR support that matches the resolution/framerate config of your client automatically • [x] Permission management for clients • [x] Clipboard sync • [x] Commands for client connection/disconnection (checkout Auto pause/resume games) • [x] Input only mode Usage Refer to LizardByte's documentation hosted on Read the Docs for now. Currently Virtual Display support is Windows only, Linux support is planned and will be implemented in the future. About Permission System Check out the Wiki > [!NOTE] > The **FIRST** client paired with Apollo will be granted with FULL permissions, then other newly paired clients will only be granted with and permission. If you encounter error when trying to launch any app, go check the permission for that device and grant permission. The same applies to the situation when you find that you can't move mouse or type with keyboard on newly paired clients, grant the corresponding client and permissions. About Virtual Display > [!WARNING] > ***It is highly recommend to remove any other virtual display solutions from your system and Apollo/Sunshine config, to reduce confusions and compatibility issues.*** > [!NOTE] > **TL;DR** Just treat your Artemis/Moonlight client like a dedicated PnP monitor with Apollo. Apollo uses SudoVDA for virtual display. It features auto resolution and framerate matching for your Artemis/Moonlight clients. The virtual display is created upon the stream starts and removed once the app quits. **If you do not see a new virtual display added or removed when the stream starts or stops, there may be a driver misconfiguration, or another persistent virtual display might still be active.** The virtual display works just like any physically attached monitors with SudoVDA, there's completely no need for a super complicated solution to "fix" resolution configurations for your devices. Unlike all other solutions that reuses one identity or generate a random one each time for any virtual display sessions, **Apollo assigns a fixed identity for each Artemis/Moonlight client, so your display configuration will be automatically remembered and managed by Windows natively.** Configuration for dual GPU laptops Apollo supports dual GPUs seamlessly. If you want to use your dGPU, just set the to your dGPU and enable in tab, save and restart your computer. No dummy plug is needed any more, the image will be rendered and encoded directly from your dGPU. About HDR HDR starts supporting from Windows 11 23H2 and generally supported on 24H2. Some systems might not have HDR toggle on 23H2 and you just need to upgrade to 24H2. Any system lower than 23H2/Windows 10 will not have HDR option available. > [!NOTE] > The below section is written for professional media workers. It doesn't stop you from enabling HDR if you know what you're doing and have deep understanding about how HDR works. > > Apollo and SudoVDA can handle HDR just fine like any other streaming solutions. > > If you have had good experience with HDR previously, you can safely ignore this section. > > If you're curious, read on, but don't blame Apollo for poor HDR support. Whether HDR streaming looks good, it depends completely on your client. In short, ICC color correction should be totally useless while streaming HDR. It's your client's job to get HDR content displayed right, not the host. But in fact, it does affect the captured video stream and reflect changes on devices that can handle HDR correctly. On other devices that can't, the info is not respected at all. It's very complicated to explain why HDR is a total mess, and why enabling HDR makes the image appear dark/yellow. If it's your first time got HDR streaming working, and thinks HDR looks awful, you're right, but that's not Apollo's fault, it's your device that tone mapped SDR content to the maximum of the capability of its screen, there's no headroom for anything beyond that actual peak brightness for HDR. For details, please take a look here. For client devices, usually Apple products that have HDR capability can be trusted to have good results, other than that, your luck depends. DEPRECATION ALERT Enabling HDR is **generally not recommended** with **ANY streaming solutions** at this moment, probably in the long term. The issue with **HDR itself** is huge, with loads of semi-incompatible standards, and massive variance between device configurations and capabilities. Game support for HDR is still choppy. SDR actually provides much more stable color accuracy, and are widely supported throughout most devices you can imagine. For games, art style can easily overcome the shortcoming with no HDR, and SDR has pretty standard workflows to ensure their visual performance. So HDR isn't *that* important in most of the cases. How to run multiple instances of Apollo for multiple virtual displays Follow the instructions in the Wiki. FAQ Moved to WiKi Stuttering Clinic Here're some common causes and solutions for stutters: WiKi. Device specific setups • Pixel devices might not be able to use native resolution: • Change the device resolution to High: https://github.com/ClassicOldSong/Apollo/issues/700 System Requirements > **Warning**: This table is a work in progress. Do not purchase hardware based on this. **Minimum Requirements** | **Component** | **Description** | |---------------|-----------------| | GPU | AMD: VCE 1.0 or higher, see: obs-amd hardware support | | | Intel: VAAPI-compatible, see: VAAPI hardware support | | | Nvidia: NVENC enabled cards, see: nvenc suppor…