Open-source project
moonlight-stream/moonlight-embedded avatar
moonlight-stream/moonlight-embedded

Moonlight Embedded for GameStream on Linux devices

Gamestream client for embedded systems

1,665 stars395 forksCGPL-3.0

At a glance

What is it?
Moonlight Embedded is a C client for Sunshine and NVIDIA GameStream on embedded Linux systems such as Raspberry Pi, CuBox-i, and ODROID. It suits local-network remote gaming projects, but the repository provides little build or configuration guidance outside its wiki.
Who is it for?
Moonlight Embedded is appropriate for engineers building a Sunshine or NVIDIA GameStream client on a supported embedded Linux device. It is a poor fit for users who need a documented one-command installation, a desktop client, or evidence that every named board is supported by the current branch.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 139 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Moonlight Embedded's place in the GameStream client family

Moonlight Embedded targets embedded Linux systems rather than the more familiar desktop and mobile Moonlight clients. The repository describes it as an open source client for Sunshine and NVIDIA GameStream. Its intended use is to receive games and applications streamed from a PC, which lets a comparatively small or appliance-like Linux device act as the endpoint for remote play.

The documented examples include Raspberry Pi, CuBox-i, and ODROID. Those names define the product's scope more clearly than the broader Moonlight family does. Moonlight Embedded is for people assembling or maintaining a dedicated streaming client on embedded hardware, including developers who need a C codebase rather than the PC, Android, or iOS implementations linked by the README.

This is a client, not a game server. A PC still performs the host role, and Moonlight Embedded connects to software running there, identified in the README as Sunshine or NVIDIA GameStream. The repository does not state which Sunshine versions, NVIDIA GameStream versions, network topologies, display servers, or graphics drivers are supported. That absence matters because host-side availability alone does not prove that an embedded device has the required video decoding, input, audio, and rendering stack.

The repository's C client and native component structure

Moonlight Embedded is written primarily in C and follows a native build-oriented layout. The top-level `CMakeLists.txt`, `cmake/`, `src/`, and `third_party/` directories show that the source tree is prepared for compilation through CMake and includes both project code and native dependencies. The `libgamestream/` directory points to a separate component associated with the streaming protocol, while `.gitmodules` indicates that some dependencies are represented as Git submodules.

This structure matters for maintainers. A source checkout is not necessarily a self-contained consumer package. Git submodules must be present in the expected locations before the build can resolve its referenced sources. The repository also contains `moonlight.conf`, so runtime behavior is not left entirely to hard-coded values. However, the README excerpt does not document this file's keys, defaults, search order, or the point at which the application reads it. Those details should be checked in the wiki and the configuration source before assuming that an edited file will affect a deployed client.

Moonlight Embedded shares protocol-related foundations with `moonlight-common-c`. The README identifies that repository as the shared codebase between Moonlight implementations, which can reduce duplicated work for engineers familiar with the common C components. It also means that diagnosing behavior may require distinguishing an Embedded-specific issue from a problem in the shared layer.

Installing Moonlight Embedded requires the project wiki

The README does not provide installation commands, build arguments, dependency packages, or a sample `moonlight.conf`. It directs users to the Moonlight Embedded wiki for installation and runtime information. It also links to nightly build downloads through `nightly.link/moonlight-stream/moonlight-embedded/workflows/build/master`. The existence of that download route does not establish which board images, distributions, or architectures those artifacts cover.

For that reason, this review cannot provide a defensible terminal command for installing Moonlight Embedded. Copying an invented package name or build flag would risk producing an image that does not correspond to the repository. The first real installation attempt should start with the wiki named in the README, identify the exact target board and Linux release, and follow the build or image instructions that apply to that combination.

The repository also points contributors through a standard sequence of forking the repository, editing code, and sending a pull request. That workflow explains how changes enter the project, but it is not an end-user tutorial. A user seeking a ready-made embedded distribution should first check the wiki and available nightly artifacts. A developer planning to compile the C client should expect to inspect `CMakeLists.txt` and initialize the dependencies represented by `.gitmodules`.

Connecting an embedded Linux device to a Sunshine host

The README describes the intended data flow at a functional level: games and applications remain on a PC, while Moonlight Embedded receives the stream on an embedded Linux device for remote play. Sunshine is identified as a host option, and NVIDIA GameStream is the other named target. The wiki is the stated source for instructions on running the client, so host discovery, pairing, connection selection, and input configuration are not documented in the repository excerpt.

That sequence should not be confused with self-hosting a library of games. Moonlight Embedded does not store or execute the hosted applications itself according to the README. Its job begins after a suitable host service is available. Engineers therefore need to verify both sides of the deployment, especially when moving a newly built image to hardware that lacks desktop-oriented media libraries or accelerated video decoding.

The repository also points contributors through a standard sequence of forking the repository, editing code, and sending a pull request. That workflow explains how changes enter the project, but it is not an end-user tutorial. A user seeking a ready-made embedded distribution should first check the wiki and available nightly artifacts. A developer planning to compile the C client should expect to inspect `CMakeLists.txt` and initialize the dependencies represented by `.gitmodules`.

Moonlight Embedded's hardware and documentation boundaries

Embedded Linux is a broad category, so the board examples in the README should be treated as target examples rather than a compatibility guarantee. The excerpt does not publish a support matrix covering board revisions, processors, memory, graphics drivers, operating-system versions, local storage, networking hardware, or audio output. It also does not state whether acceleration is mandatory or which fallback path exists when hardware video decoding is unavailable.

This makes Moonlight Embedded a poor first choice for a plug-and-play remote gaming project. A team that wants a supported desktop experience can use the linked PC, Android, or iOS Moonlight client instead. Moonlight Embedded becomes more relevant when the endpoint must run on a Raspberry Pi, CuBox-i, ODROID, or a comparable device and the team accepts responsibility for platform integration.

Latency and visual quality are plausible concerns for remote play, but the repository provides no benchmark data, configuration guidance, or video-quality controls in the excerpt. It would be unjustified to describe any board, driver, or host configuration as fast based on the project name alone. Purchase or deployment decisions require information that this repository does not provide, particularly decoder support and the chosen Linux image's media stack.

Maintenance, upgrades, and GPL-3.0 distribution

The repository is not archived, and its last push was on 2026-06-06. That supports treating the project as having recent repository activity, although the push date alone does not guarantee that every embedded target or host combination receives timely fixes. The latest listed release is v2.7.1 from 2025-11-30, after v2.7.0 from 2024-02-20 and v2.6.2 from 2023-11-03.

Upgrade planning must account for more than copying the newest client binary. Moonlight Embedded uses a shared Moonlight codebase, a protocol-related component, native dependencies, CMake configuration, and submodules. A board image may also contain system video and audio packages outside the repository. The excerpt does not document migration steps, configuration compatibility between releases, or whether the named nightly artifacts are intended for production devices.

Moonlight Embedded is distributed under GPL-3.0. For an engineering review, that license belongs in the early acceptance checklist because it can affect how modified binaries and corresponding source are distributed. This is not legal advice, and the repository excerpt does not provide guidance for a specific product or deployment. Teams that distribute binaries should review the actual `LICENSE` and their compliance process rather than relying on the README's short project description.

Editorial conclusion

Moonlight Embedded is appropriate for engineers building a Sunshine or NVIDIA GameStream client on a supported embedded Linux device. It is a poor fit for users who need a documented one-command installation, a desktop client, or evidence that every named board is supported by the current branch. Before adoption, verify the wiki's build instructions, host compatibility, controller support, and expected behavior for the exact board and Linux distribution, then confirm that the GPL-3.0 licensing model fits the intended distribution method.

Frequently asked questions

What operating systems and devices does Moonlight Embedded support?

Moonlight Embedded is described as a client for embedded Linux systems, with Raspberry Pi, CuBox-i, and ODROID given as examples. The README does not provide a board, distribution, or architecture support matrix.

Can Moonlight Embedded connect to Sunshine?

Yes. The README explicitly identifies Sunshine as one of the supported host technologies, alongside NVIDIA GameStream.

How do I install Moonlight Embedded?

The README directs users to the project's wiki for installation and running instructions. It does not document installation commands in the repository excerpt, although it also links to nightly build downloads.

Official sources

  1. License: GPL-3.0
  2. moonlight-stream/moonlight-embedded on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/moonlight-stream-moonlight-embedded.svg)](https://hysenlabs.com/projects/moonlight-stream-moonlight-embedded)

Was this useful?