explaingit

classicoldsong/apollo

9,384C++Audience · generalComplexity · 4/5Setup · hard

TLDR

A self-hosted game and desktop streaming server that lets you access your PC remotely from any device with low-latency video, featuring automatic resolution matching so each client device gets a stream at its native screen size.

Mindmap

mindmap
  root((Apollo))
    What it does
      Game streaming
      Desktop access
      Virtual display
    Tech Stack
      C++
      Windows
      Linux
      macOS
    Use Cases
      Remote gaming
      Mobile streaming
      Home server
    Features
      Auto resolution match
      Client permissions
      Hardware encoding
    Audience
      Gamers
      Home lab users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Stream PC games to a phone or tablet over your home Wi-Fi with low latency using the Artemis client app

USE CASE 2

Access your Windows desktop remotely at the client device's exact native resolution via the virtual display feature

USE CASE 3

Set up a home streaming server that remembers display preferences for each paired client device

Tech stack

C++WindowsLinuxmacOS

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a 5 GHz Wi-Fi connection minimum, wired recommended for 4K streaming. Virtual display feature works on Windows only.

License not specified in the explanation.

In plain English

Apollo is a self-hosted game and desktop streaming server that lets you access your PC remotely from another device using low-latency video streaming. You run it on the host computer, and then use a compatible client app called Artemis (a fork of Moonlight) on your phone, tablet, or another computer to connect and control the host as if you were sitting in front of it. The project is itself a fork of Sunshine, another open-source streaming server. The main thing that distinguishes Apollo from its relatives is its virtual display feature for Windows. When a client connects, Apollo creates a virtual monitor on the host machine that automatically matches the exact screen resolution and frame rate of the client device. This means if you connect from a phone with an unusual screen size, the stream will be rendered at that native resolution rather than being scaled down from a fixed desktop resolution. Each client device gets a fixed identity so Windows remembers your display preferences between sessions. Hardware-accelerated video encoding is supported for AMD, Intel, and Nvidia graphics cards, with a software fallback if no compatible GPU is present. Apollo also includes a permission system for managing what different paired clients are allowed to do, such as controlling the mouse, using the keyboard, or launching applications. Clipboard sync between host and client is included, as are hooks that run commands when a client connects or disconnects. A web interface is provided for configuration and pairing clients. Apollo can run on Windows, macOS, and Linux, though the virtual display feature currently works only on Windows. The minimum network requirement is a 5 GHz Wi-Fi connection, and a wired connection is recommended for 4K streaming.

Copy-paste prompts

Prompt 1
Set up Apollo streaming server on Windows so I can play my Steam library on my phone using the Artemis client
Prompt 2
Configure Apollo's virtual display feature on Windows to stream at my phone's native resolution automatically
Prompt 3
How do I pair a new Artemis client with my Apollo server and set its permissions for mouse and keyboard control
Prompt 4
Install Apollo on Linux and set it up to stream my desktop to a tablet over my home network
Prompt 5
Configure Apollo to run a script when a streaming client connects and another when it disconnects
Open on GitHub → Explain another repo

← classicoldsong on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.