Greenlight: an open-source xCloud and Xbox home streaming client
Greenlight is an open-source client for xCloud and Xbox home streaming made in Typescript.
At a glance
- What is it?
- Greenlight is a TypeScript desktop client for Xbox and xCloud streaming that runs on Linux, macOS, Windows and Steam Deck. It is a wrapper around the xbox-xcloud-player library, and its own README is thin on authentication and troubleshooting.
- Who is it for?
- Adopt Greenlight if you want a native desktop or Steam Deck front end for Xbox home streaming and xCloud and you are comfortable compiling from source or installing a Flatpak when a release does not cover your platform. Do not adopt it if you need a documented authentication flow, a supported commercial product, or a client that is not tied to Microsoft's streaming endpoints.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 10 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Greenlight solves, and who it is for
Microsoft ships official Xbox streaming through the Xbox app and the browser, but neither gives you a small native window that you can launch from a desktop launcher or a Steam Deck game mode entry. Greenlight fills that gap. It is an open-source client for xCloud and Xbox home streaming, written in JavaScript and TypeScript, and the README describes it as "an application wrapper around xbox-xcloud-player". That framing matters: the streaming protocol work lives in a separate library, and Greenlight is the desktop shell around it.
The audience is narrow and specific. You own an Xbox One or Xbox Series console, or you subscribe to xCloud, and you want to play on a machine that is not a Windows PC with the official app. The README lists Linux, macOS, Windows and Steam Deck as supported platforms. Gamepad controls, rumble on xCloud, keyboard controls and an online friends list are the features it advertises. If you only ever stream from a Windows desktop with the official Xbox app, Greenlight offers little that you do not already have.
How the wrapper and the player library fit together
The repository is a Yarn workspace monorepo. The root package.json declares workspaces including packages/player, packages/platform, packages/desktop and packages/desktop-v3, plus packages/logger and packages/docs. The build scripts chain these together: build:depsv3 runs the logger, player and platform builds in sequence, and build:pages depends on that chain before building the pages workspace. So the desktop application consumes the player and platform packages rather than reimplementing streaming logic inline.
That split has a practical consequence for anyone filing a bug. If the video decoder stalls, the defect may sit in the player library, not in the desktop shell. The README anticipates this by asking users to include the debug statistics overlay in issue reports "if it is related". The overlay, opened with the ~ key, shows video and audio decoder FPS and latency in the top-right, buffer queue debug information in the bottom-right, and a status line in the bottom-left that the README itself admits is "not always accurate". Treat that status line as a hint, not a diagnosis.
The default branch is main-v2, which is worth noting because the root package.json also defines a desktopv3 workspace. The v2 and v3 desktop packages coexist in the tree, and the release notes show the v2.4.x line as the current published series. If you clone the repository expecting the default branch to match the newest published binary, check which desktop workspace the branch actually builds.
Installing Greenlight from Flathub or a release binary
The README gives three installation routes: Flathub, pre-compiled binaries from the releases page, and compiling from source. Flathub is the least ambiguous if you are on Linux, because the application ID is fixed and updates come through the Flatpak tooling. The README links to the Flathub listing for io.github.unknownskl.greenlight.
If you prefer a direct download, the releases page carries the pre-compiled binaries. The most recent release listed is v2.4.2, published on 2026-06-05, following v2.4.1 and v2.4.0 in December 2025. Pick the artifact matching your operating system and architecture from that page; the README does not enumerate the artifact names, so the release assets themselves are the source of truth.
For a source build, the README requires NodeJS and Yarn, then gives a short sequence. Clone the repository, install dependencies with Yarn, and run the desktop development task:
git clone https://github.com/unknownskl/greenlight.git
cd greenlight
yarn
yarn desktop devFor a production build, the README specifies a different task:
yarn desktop buildThe root package.json pins the package manager as [email protected], so a Yarn 2 or 3 installation is not what the project expects. The README does not document the NodeJS version range, which is a gap if you are building on a machine with an unusual runtime.
A first stream, and the launch arguments that skip the UI
After installation you authenticate, and then you either pick a title in the interface or hand the application a target at startup. The README documents two optional launch arguments. --fullscreen starts the application in fullscreen, and --connect=<value> starts a stream once the user is authenticated. The value format differs by target: a console uses the F000000000000000 format, and xCloud uses xcloud_<title>.
For an xCloud title the value takes the xcloud_ prefix, so the argument becomes --connect=xcloud_<title> with the title substituted in. The README does not explain where to obtain the console identifier, and it does not say what happens when authentication fails before the connect argument is honoured. That is the first thing to test: launch without --connect, sign in, confirm the friends list populates, then relaunch with --connect.
Keyboard controls are mapped by default and are listed in the README. The D-pad uses the keypad direction keys, A, B, X and Y map to Enter, Backspace, and the letter keys, the Nexus or Xbox button is N, the bumpers are [ and ], the triggers are - and =, and View and Menu are V and M. To close the application, the README says to click the Xbox logo at the top-left and confirm. There is no documented keyboard shortcut for quitting, which is awkward if you launch in fullscreen on a device without an obvious pointer.
Steam Deck caveats and the friends list
The Steam Deck section is candid in a way the rest of the README is not. It states that the application is "reported to be working on the Steam Deck with some small bugs and side-effects". Reported, not verified by the maintainer. The suggested workaround for the missing Xbox button is to map one of the Steam Deck back buttons to the N key, which matches the default Nexus mapping in the keyboard controls table.
That workaround tells you something about the input model. Greenlight translates keyboard events into gamepad semantics, so any controller that the operating system presents as a keyboard can be made to work, and any controller that the application does not recognise natively has no fallback. If your gamepad is not picked up, remapping at the OS or Steam Input layer is the route the README implies.
The online friends list is the other feature worth calling out. The README says it lets you see which of your friends are online, framed as a quick check before inviting someone to play. It is a read-only convenience, not a messaging system, and the README does not describe how often the list refreshes or whether it works when the console is offline. Do not expect presence accuracy beyond what the underlying Xbox service returns.
Where Greenlight is the wrong tool
Greenlight is not a remote play client in the Moonlight sense, and the README is explicit that it is not affiliated with Moonlight. It speaks the Xbox and xCloud protocols, which means it inherits their constraints: you need a Microsoft account with the appropriate entitlement, and you need the console or the cloud service to be reachable. There is no documented local network discovery mode, no manual IP entry, and no fallback for streaming from a PC.
The bigger limitation is documentation depth. The README covers installation, keyboard mappings, launch arguments and the debug overlay, and then stops. Authentication is mentioned only in passing through the --connect argument, which "will start stream once the user is authenticated", but the README never describes the sign-in flow, token storage, or what to do when sign-in loops. The changelog lives on the documentation site rather than in the repository, and the README does not document rollback to a previous release if an upgrade breaks streaming. If you need a client with a support contract, a published compatibility matrix, or an issue tracker with guaranteed response times, this is not it.
There is also the v2 and v3 split. The default branch is main-v2 while a desktop-v3 workspace exists in the same tree. Anyone building from source needs to know which line they are on, and the README does not explain the difference or which one the Flathub package tracks.
Alternatives and the difference in approach
The obvious alternative for local game streaming is Moonlight, which the README names only to disclaim any affiliation. Moonlight implements NVIDIA's GameStream protocol and its open successor, so it streams from a PC with a compatible GPU rather than from an Xbox console or xCloud. If your library lives on a gaming PC, Moonlight is the right shape and Greenlight is not. If your library lives on an Xbox, the reverse holds.
The other alternative is Microsoft's own clients: the Xbox app on Windows and the browser player. They are supported, they handle authentication for you, and they update without user action. Greenlight's advantage is the platforms Microsoft does not cover natively (Linux, and Steam Deck in game mode) and the fact that the source is MIT licensed and auditable. The trade-off is that you are relying on a wrapper around a community player library to keep pace with whatever Microsoft changes on the service side.
Within the project itself, xbox-xcloud-player is the library Greenlight wraps. If you are building your own client rather than using a desktop app, that library is the lower-level dependency and Greenlight is one consumer of it.
Maintenance, licensing and upgrade cost
The repository is not archived, and the last push was on 2026-09-21. The most recent release is v2.4.2 from 2026-06-05, with v2.4.1 and v2.4.0 in December 2025. That is a slow but non-zero release cadence: roughly two release windows in the period covered by the release list, with commits landing after the last tagged release. There is no published support window, no long-term release branch, and no documented deprecation policy for the v2 line as v3 work continues in the same repository.
Upgrade cost is mostly the Flatpak or binary swap. The README does not document a migration step between v2.4.x releases, and it does not describe whether configuration or cached credentials survive an upgrade. If you build from source, the pinned Yarn 1.22.22 and the workspace build chain mean you should expect to re-run the dependency install after a branch change.
The licence is MIT, which permits commercial and private use, modification and redistribution provided the copyright notice and permission notice are retained. That is a permissive licence with no copyleft obligation. It does not grant any rights to Microsoft's trademarks or services, and the README carries a disclaimer that Greenlight is not affiliated with Microsoft, Xbox or Moonlight. Nothing here is legal advice; if you plan to redistribute a build, read the LICENSE file in the repository and the terms that govern the Xbox and xCloud services separately.
Editorial conclusion
Adopt Greenlight if you want a native desktop or Steam Deck front end for Xbox home streaming and xCloud and you are comfortable compiling from source or installing a Flatpak when a release does not cover your platform. Do not adopt it if you need a documented authentication flow, a supported commercial product, or a client that is not tied to Microsoft's streaming endpoints. Before committing, verify that a current release exists for your operating system, that your Microsoft account can authenticate in the app, and that the streaming statistics overlay (toggled with ~) shows a stable video decoder FPS on your network.
Frequently asked questions
How do I install Greenlight on Steam Deck?
The README lists Steam Deck as a supported platform and points to Flathub, pre-compiled binaries from the releases page, or a source build with NodeJS and Yarn. It notes the application is reported to work on the Steam Deck with small bugs and side-effects, and suggests mapping a back button to the N key to simulate the Xbox button.
How do I use Greenlight on Steam Deck?
Launch the application from your Flathub or binary install, authenticate, and pick a title, or pass --connect=<value> at startup to begin streaming once authenticated. Because the Xbox button maps to N by default, the README recommends binding a Steam Deck back button to N.
How do I install Greenlight?
The README gives three routes: install from Flathub, download pre-compiled binaries from the releases page, or compile from source. The source route requires NodeJS and Yarn, then git clone, yarn, and yarn desktop dev or yarn desktop build.
Official sources
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.
[](https://hysenlabs.com/projects/unknownskl-greenlight)