ApolloVibe is our fork of Apollo by ClassicOldSong, which is itself a Sunshine fork. It is built and released here, and installed to
C:\Program Files\ApolloVibeby MultiSeat — deliberately separate from a standalone Apollo install, so the two can coexist.Where to report a problem:
what is wrong where it goes Streaming, encoding, capture, host audio or input in ApolloVibe here The client: seat discovery, gamepad, microphone passthrough MoonlightVibe A seat will not provision, or a seat streams the wrong desktop MultiSeat A failure that looks like a MultiSeat provisioning bug is often an ApolloVibe one, so if you are unsure, file it either way and we will move it.
Problems that turn out to come from upstream Apollo still belong here. If a fix belongs upstream we will take it there ourselves — working out whose code it is is our job, not yours.
ApolloVibe is a Windows game streaming host built for MultiSeat — a system that runs multiple simultaneous Moonlight streaming sessions on one machine.
It is a fork of ClassicOldSong/Apollo with mic passthrough patches from logabell rebased onto the latest Apollo HEAD, plus MultiSeat-specific configuration support.
| Feature | ApolloVibe | Upstream Apollo |
|---|---|---|
| Mic passthrough | ✅ stream_mic = enabled via Steam Streaming Microphone |
❌ Not available |
| Multi-instance isolation | ✅ file_state written per-seat so each instance has its own UUID |
|
| MultiSeat auto-config | ✅ Config generated by MultiSeat service per seat | Manual |
| Branding | ApolloVibe | Apollo |
Everything else — virtual displays, NVENC/AMF/AV1 encoding, HDR, permission system, clipboard sync, controller input — is inherited from ClassicOldSong/Apollo.
Get the latest release from the Releases page.
Using MultiSeat? You don't need to install ApolloVibe manually. The MultiSeat prerequisites script downloads and installs it automatically.
ApolloVibe is designed to be managed entirely by MultiSeat. Each seat gets its own ApolloVibe process, config directory, port range, and sunshine_state.json — no manual configuration needed.
See the MultiSeat README for full setup instructions.
ApolloVibe works as a regular Apollo drop-in replacement. Refer to the LizardByte Sunshine documentation for general configuration — the config format is identical.
If you want mic passthrough, pair with MoonlightVibe (which includes the required mic client patches) and set stream_mic = enabled in your config.
ApolloVibe accepts Opus microphone packets from compatible clients, decodes them on the host, and renders audio into Speakers (Steam Streaming Microphone). Applications should select Microphone (Steam Streaming Microphone) as their mic source.
Requires a compatible client — MoonlightVibe is recommended.
Each ApolloVibe instance must have a unique file_state path pointing to its own sunshine_state.json. Without this, all instances share the same UUID and Moonlight treats them as the same server.
If you're running multiple instances manually, add this to each instance's sunshine.conf:
file_state = C:\path\to\this-instance\config\sunshine_state.json
MultiSeat handles this automatically.
ApolloVibe uses the same build system as ClassicOldSong/Apollo — MSYS2 UCRT64 with GCC, Ninja, and pkg-config. MSVC is not supported.
# In an MSYS2 UCRT64 terminal
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build buildSee ClassicOldSong/Apollo for the full dependency list.
ApolloVibe is licensed under the same terms as Sunshine — GPL-3.0.
Mic passthrough patches by logabell, rebased and maintained here.