Skip to content

GCIS Plugin System ​

GCIS (GameStream Cloud Infrastructure Services) is NVIDIA's server-side framework powering GeForce NOW cloud gaming sessions. Each streaming rig runs a set of plugins loaded by the GCIS service, each responsible for a different domain.

Architecture ​

All plugins are native C++ DLLs (x64) that export a single entry point:

c
NvPluginGetInfo() // Returns plugin metadata to the GCIS host

They communicate over NVIDIA's Bifrost message bus and serialize data with Protocol Buffers.

Plugin Overview ​

PluginFileSizePrimary RoleDocs
ElmPluginElmPlugin.dll15,162,912 bytesSession lifecycle, security violations, streaming events/plugins/elmplugin
GciPluginGciPlugin.dll23,769,120 bytesKernel-level monitoring (files, processes, drivers, registry) via GFNMON/plugins/gciplugin
GcpPluginGcpPlugin.dll14,361,120 bytesSecurity-control/event messaging layer (incl. on-seat patching and game-start notifications)/plugins/gcpplugin
GssmPluginGssmPlugin.dll22,280,736 bytesSession/plugin guard; enforces mandatory plugin join/leave constraints/plugins/gssmplugin
LkmPluginLkmPlugin.dll15,868,448 bytesGame session management, app launching, VM allocation/plugins/lkmplugin
UadMLPluginUadMLPlugin.dll29,284,896 bytesML-based anomaly detection (LightGBM + SageMaker)/plugins/uadmlplugin
UadPluginUadPlugin.dll14,990,368 bytesLegacy user-activity/network anomaly rules engine/plugins/uadplugin

Additional model asset in plugin folder:

FileSizeNotes
UadMLPlugin.dat3,937,176 bytesLocal model/config payload for UadML runtime

Replacement and Deprecation Notes ​

WARNING

UadPlugin is legacy in newer stacks. Current snapshots ship both UadPlugin.dll and UadMLPlugin.dll, but UadML is the modern ML path. Keep Uad docs for compatibility and historical seats.

WARNING

NvGridSvc-centric legacy flows still appear in binaries/scripts. Keep legacy docs available, but treat GS2 + newer GCIS plugin set as the primary path in latest releases.

GCIS Host Context ​

Plugins are loaded by the GCIS host (NvContainerGcis.exe) and communicate over Bifrost/MessageBus. In this snapshot the plugin folder is:

text
C:\Asgard\services\GCIS\plugins\

Shared Dependencies ​

All plugins share a common set of libraries:

  • Poco C++ Libraries v1.10.1 β€” networking, threading, JSON
  • Protocol Buffers v2.6.1 β€” message serialization
  • MessageBusClient (Bifrost) β€” inter-plugin communication
  • NvTelemetry β€” NVIDIA telemetry framework
  • spdlog β€” structured logging
  • Windows APIs: KERNEL32, ADVAPI32, WS2_32, CRYPT32, etc.

Build Environment ​

All plugins were built from NVIDIA's internal Perforce depot:

C:\dvs\p4\build\sw\gcomp\dev\src\GCIS\
β”œβ”€β”€ _out\x86_64\release\
β”‚   β”œβ”€β”€ ElmPlugin\
β”‚   β”œβ”€β”€ GciPlugin\
β”‚   β”œβ”€β”€ LkmPlugin\
β”‚   └── UadMLPlugin\
└── Common\
    └── GciTelemetry.cpp

Communication Flow ​

Loaded plugin set in this snapshot:

  • ElmPlugin
  • GciPlugin
  • GcpPlugin
  • GssmPlugin
  • LkmPlugin
  • UadMLPlugin
  • UadPlugin (legacy compatibility)
                 Bifrost MessageBus
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ElmPluginβ”‚ β”‚GciPlugin β”‚ β”‚GcpPlugin β”‚ β”‚GssmPluginβ”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
     β”‚            β”‚            β”‚            β”‚
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
            β”‚           β”‚            β”‚
         β”Œβ”€β”€β–Όβ”€β”€β”€β”   β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”   β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”
         β”‚Lkm   β”‚   β”‚UadML   β”‚   β”‚Uad     β”‚
         β”‚Pluginβ”‚   β”‚Plugin  β”‚   β”‚Plugin* β”‚
         β””β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
                  AWS SageMaker

* Legacy/compatibility path

Each plugin can emit SecurityTerminationInitiated events that flow through the message bus to terminate sessions when violations are detected.

admindesk.top β€” Reversed & documented from Asgard rig backups and GCIS plugin binaries.