MCPcopy Index your code
hub / github.com/unknownskl/greenlight

github.com/unknownskl/greenlight @v2.4.2 sqlite

repository ↗ · DeepWiki ↗ · release v2.4.2 ↗
715 symbols 1,527 edges 148 files 0 documented · 0%
README

Greenlight

Build/Desktop Build/Docs

Quality Gate Status Lines of Code Vulnerabilities Maintainability Rating

Greenlight is an open-source client for xCloud and Xbox home streaming made in Javascript and Typescript. The client is an application wrapper around xbox-xcloud-player. The application runs on Linux, macOS, Windows and Steam Deck.

DISCLAIMER: Greenlight is not affiliated with Microsoft, Xbox or Moonlight. All rights and trademarks are property of their respective owners.

Features

  • Stream video and audio from the Xbox One and Xbox Series
  • Support for gamepad controls
  • Supports rumble on xCloud
  • Keyboard controls
  • Build-in online friends list

Install

Install from Flathub:

Install on Flathub

Download pre-compiled binaries:

Latest releases can be found here.

Compile from source

See Local development.

Keyboard controls

Keys are mapped as following by default:

Dpad: Keypad direction controls
Buttons: A, B, X, Y, Backspace (Mapped as B), Enter (Mapped as A)
Nexus (Xbox button): N
Left Bumper: [
Right Bumper: ]
Left Trigger: -
Right Trigger: =
View: V
Menu: M

Streaming stats

During the stream you can show debug statistics that contain extra data about the buffer queues and other information. To bring this up you can press ~ on your keyboard.

At the bottom-left you can see the status (although not always accurate). At the top-right you can find the FPS of the video and audio decoders including the latency. At the bottom-right you can find debug information about the buffer queues and other information that is useful for debugging perposes.

When possible always provide this information with your issue, if it is related.

Online friends list

The application also provides a way to see which of your friends are online. This can be useful when you want to quickly check if anyone is online to play with :)

Steam Deck Setup

This application is reported to be working on the Steam Deck with some small bugs and side-effects. You can map one of the Steam Deck back buttons to the 'N' key to simulate the Xbox button.

Optional launch arguments

Argument Description
--fullscreen Starts the application in fullscreen
--connect= Will start stream once the user is authenticated.

For console use F000000000000000 format and for xCloud use xcloud_<title>.

To close the application

Click on the Xbox logo at the top-left. It will ask you to confirm to close the window.

Local Development

Requirements

Steps to get up and running

Clone the repository:

git clone https://github.com/unknownskl/greenlight.git
cd greenlight

Install dependencies:

yarn

Run development build:

yarn desktop dev

Create production build:

yarn desktop build

Translations

Want to help out with new translations? Help us on https://poeditor.com/join/project/9SfHRQDbfN

Changelog

See changelog.

Extension points exported contracts — how you extend this code

AuthProps (Interface)
(no doc)
packages/desktop/renderer/components/auth.tsx
SinkData (Interface)
(no doc)
packages/logger/src/sink.ts
StreamPlayerProps (Interface)
(no doc)
packages/player/src/client/index.tsx
WebToken (Interface)
(no doc)
packages/platform/src/types/webtoken.ts
Window (Interface)
(no doc)
packages/desktop-v3/renderer/preload.d.ts
AuthContextType (Interface)
(no doc)
packages/platform-playground/src/client/contexts/AuthContext.tsx
FooterProps (Interface)
(no doc)
packages/desktop/renderer/components/footer.tsx
StreamPlayerHandle (Interface)
(no doc)
packages/player/src/client/index.tsx

Core symbols most depended-on inside this repo

log
called by 132
packages/desktop/main/application.ts
log
called by 88
packages/logger/src/index.ts
send
called by 39
packages/desktop/renderer/lib/websocket.ts
on
called by 38
packages/desktop/renderer/lib/websocket.ts
getVideoElement
called by 23
packages/player/src/client/lib/player.ts
getSession
called by 18
packages/desktop/main/helpers/streammanager.ts
get
called by 17
packages/desktop/main/helpers/http.ts
error
called by 15
packages/logger/src/index.ts

Shape

Method 344
Function 197
Class 106
Interface 67
Enum 1

Languages

TypeScript100%

Modules by API surface

packages/player/src/client/lib/channel/input/packet.ts26 symbols
packages/player/src/client/lib/input/gamepad.ts22 symbols
packages/player/src/client/index.tsx19 symbols
packages/desktop/main/helpers/xcloudapi.ts19 symbols
packages/desktop/main/helpers/titlemanager.ts18 symbols
packages/player/src/client/lib/channel/input/queue.ts17 symbols
packages/desktop/main/ipc/streaming.ts17 symbols
packages/player/src/client/lib/channel/input.ts16 symbols
packages/desktop/main/ipc/app.ts16 symbols
packages/player/src/client/lib/player.ts14 symbols
packages/platform-playground/src/client/pages/Player.tsx14 symbols
packages/desktop/main/helpers/streammanager.ts14 symbols

Dependencies from manifests, versioned

@babel/core7.28.5 · 1×
@eslint/eslintrc3.3.5 · 1×
@eslint/js10.0.1 · 1×
@fortawesome/fontawesome-free7.2.0 · 1×
@greenlight/platform* · 1×
@next/eslint-plugin-next16.2.6 · 1×
@tanstack/react-query5.100.11 · 1×
@trpc/client11.17.0 · 1×
@trpc/server11.11.0 · 1×
@trpc/tanstack-react-query11.17.0 · 1×
@types/chai5.2.3 · 1×

For agents

$ claude mcp add greenlight \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact