Moonlight client on SteamOS

Scope

Moonlight Qt is a client for compatible GameStream protocol hosts such as Sunshine. It decodes video/audio and sends controller, pointer, keyboard, and touch input according to client and host support.

Trust boundary

Pairing grants a host-client relationship and exposes the host application list and remote input path. Verify the host identity and pair on a trusted local network before considering remote access.

Supported installation

Install com.moonlight_stream.Moonlight through Discover/Flathub. Pair with the expected host on the local network using the displayed PIN. Begin with a conservative resolution, frame rate, codec, and bitrate.

Verification

Record client/host versions, codec, HDR, resolution, FPS, bitrate, Wi-Fi/Ethernet, signal/link rate, host encode, network latency/loss, client decode, frame drops, and controller path. Test local-network behavior before remote access.

Update

Update through Discover/Flatpak. Recheck decoder, HDR, controller, and permission behavior after major client, host, GPU-driver, or SteamOS updates. Preserve a known-good profile.

Uninstall

Remove the host from Moonlight and revoke the client on Sunshine. Reset any explicit Flatpak permission overrides, then uninstall the client. Do not remove Sunshine or host applications as part of client cleanup.

Rollback

Restore the prior codec/resolution/FPS/bitrate profile, pair only with the recorded host, and retest on the trusted LAN. Remove newly added remote-network exposure independently.

Use Moonlight with Sunshine when you need explicit host control and detailed codec/client options. Choose Steam Remote Play when its integrated Steam account and library workflow is the better operational fit.

Frequently asked questions

Is Moonlight the streaming host?
Is Moonlight the streaming host?
No. Moonlight is the client. Sunshine or another compatible server captures and encodes the host session.
Does a higher bitrate always improve quality?
Does a higher bitrate always improve quality?
No. It can increase congestion, loss, latency, decoder load, and power use. Tune one variable against frame pacing and end-to-end latency.

Sources

Version history

  • 2026-07-15: Phase 6 client, pairing, decode, input, permission, and rollback review.