Skip to content

Asgard Overview

Asgard is NVIDIA's rig management framework that powers every GeForce NOW streaming machine. It lives at C:\Asgard on every Windows-based game seat and handles everything from boot initialization to session teardown.

Directory Structure

C:\Asgard\
├── conf\                     # Configuration files
│   ├── asgard_env.bat        # Environment variables
│   ├── metadata.txt          # VM identity (hostname, GPU UUID, instance type)
│   ├── networkdata.txt       # Network interface configuration
│   └── secure_userdata.txt   # Master config blob (NGS, GCIS, content, logging)
├── services\
│   ├── AutoOnboarder\        # CTMT — Content Transport Management
│   ├── CommonEnvironment\    # Core env setup scripts
│   ├── GCIS\                 # Game Client Isolation Service (plugins)
│   ├── gs2\                  # GameSeat2 orchestration stack
│   ├── GSP\                  # GameSeat configuration/service plugin host
│   ├── masquerade\           # Driver masquerading/filter drivers
│   ├── morph\                # Seat transition orchestrator (NTS)
│   ├── NDC\                  # Network Data Capture service
│   ├── NvGridSvc\            # NVIDIA Grid Service
│   ├── NvRollbackWrapper\    # Driver rollback
│   ├── nxlog-agent\          # Remote logging agent
│   ├── SeatUpdater\          # Package management & updates
│   ├── StutterShark\         # Runtime stutter/deadzone monitor
│   └── winsymbols\           # Windows debug symbols
├── startup\                  # Boot scripts and crash detector
│   └── dist\
│       ├── detector\         # Crash detection (CrashDetector.xml)
│       ├── monitor\          # Health monitoring
│       └── startup\          # Main boot sequence
├── Tools\
│   ├── edgewebview2\         # Edge WebView2 runtime
│   ├── forcedisp\            # Display EDID emulation configs
│   ├── GameSeatDisplay\      # Display activation tool
│   ├── gfndesktop\           # GFN desktop environment
│   ├── gpuviewtool\          # GPU/DirectX tracing
│   ├── langswitch\           # Language configuration (PowerShell)
│   ├── LaunchDataEditor\     # Game launch data editing
│   ├── Latencytest\          # Latency measurement
│   └── nvkblayout\           # Keyboard layout setup
├── logs\                     # All service logs
├── 7zip\                     # Bundled 7-Zip
├── gridperf\                 # GPU performance counter templates
├── test\                     # L1 validation tests
├── framework-python\         # Python rig management framework
├── nvcloudinit\              # Cloud-init boot scripts
└── cert\                     # TLS certificates

WARNING

In the newer C:\Asgard service layout, services\NvGridSvc\ is not present while services\gs2\ is present. Keep NvGridSvc references as legacy compatibility documentation.

Environment Variables

Set at every boot via asgard_env.bat:

batch
SET AG_HOME=C:\Asgard
SET AG_LOGS=C:\Asgard\logs

The Python framework also uses AG_STATEDB pointing to a Redis instance (default port 6399).

Metadata

Each rig has identity metadata from the hypervisor:

json
{
  "uuid": "GPU-135f7f28-9e9e-54dd-bb38-d0884af08445",
  "hostname": "np-ams6-br2-016-b.np-ams6.nvmetal.net",
  "instance_id": "6f86446f-85fb-4401-a079-59f54a9a5c5b.np-ams-06-gs",
  "instance_type": "gl40g_1.br25_2xlarge",
  "ngn-platform-version": "2.1"
}

Instance Type Naming

The instance type encodes the GPU and partition:

SegmentMeaning
gl40gGPU family (L40 generation)
_1Full GPU (vs _2 = half, _4 = quarter)
.br25Board revision / rack type
_2xlargeCompute tier

For official non-alliance tier-to-rig mapping and overlay naming snapshot, see Official GFN Seat Specs.

User Accounts

AccountPurpose
KioskPrimary game seat user — the player's session runs here
xenHypervisor/system user — runs infrastructure services

Boot Sequence

  1. nvcloudinit runs 010-common_env_on_boot.bat — sets AG_HOME, AG_LOGS
  2. Display setup — activates display via GameSeatDisplay.exe --activate-display
  3. Core parking disabled — sets min logical processor unparked to 100%
  4. Network configuration — interfaces configured from networkdata.txt
  5. Driver checks — GPU validated, masquerade/filter drivers loaded
  6. Session orchestration starts — GS2 stack in newer bundles, NvGridSvc on legacy seats
  7. Crash detector — scheduled task monitors for crash dumps
  8. Seat package updates — downloads and installs latest packages
  9. L1 tests — validates environment, services, user accounts, GPU

Software Deployment

Software is delivered as VHDX images mounted at boot:

GfnSw\gamestream\gamestream-gs_04_58-33263988.vhdx
GfnSw\contenttools\contenttools-gcomp_rel_ctmt-2023.4.6.vhdx
GfnSw\ngs\ngs-gcomp_rel_ngs-33258229.vhdx
GfnSw\runtimesdk\runtimesdk-gcomp_rel_runtimesdk-33258226.vhdx
GfnSw\gcis\gcis-gcomp_dev-33247214.vhdx
GfnSw\ssi\ssi-clover_rel_1_2-33223741.vhdx
GfnSw\lightning\lightning-master-aa0fc9142fcac75f.vhdx

Image ID

The rig OS image is identified as:

GS-W11-ENGLISH-master-119df3c-20230816-165457.qcow2

This tells us: Windows 11, English locale, master branch, built August 16 2023.

Python Framework

The Asgard Python framework (framework-python/) contains ~165 files across 14 packages:

PackagePurpose
asgard_configConfig class, Redis state DB connection
asgard_storageRedisStorage wrapper for state management
asgard_util_csConfig Service client (HTTPS)
asgard_util_dhcpDHCP info parsing
asgard_util_localLocal system ops, GPU detection, user data
asgard_util_loggingRemote syslog integration
asgard_util_ns1NS1 DNS management
asgard_util_r53AWS Route53 DNS management
asgard_util_remoteSSH/PuTTY remote command execution
asgard_util_spsSeat Provider Service client
asgard_util_xenXen hypervisor operations
asgard_util_zone_propertiesZone configuration constants
nimbus_seat_ctrlAWS EC2 seat control, IAM, security groups
asgard_protobuf_common121 Protocol Buffer definitions

admindesk.top — Reversed & documented from Asgard rig backups and GCIS plugin binaries.