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 certificatesWARNING
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:
SET AG_HOME=C:\Asgard
SET AG_LOGS=C:\Asgard\logsThe Python framework also uses AG_STATEDB pointing to a Redis instance (default port 6399).
Metadata
Each rig has identity metadata from the hypervisor:
{
"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:
| Segment | Meaning |
|---|---|
gl40g | GPU family (L40 generation) |
_1 | Full GPU (vs _2 = half, _4 = quarter) |
.br25 | Board revision / rack type |
_2xlarge | Compute tier |
For official non-alliance tier-to-rig mapping and overlay naming snapshot, see Official GFN Seat Specs.
User Accounts
| Account | Purpose |
|---|---|
Kiosk | Primary game seat user — the player's session runs here |
xen | Hypervisor/system user — runs infrastructure services |
Boot Sequence
- nvcloudinit runs
010-common_env_on_boot.bat— sets AG_HOME, AG_LOGS - Display setup — activates display via
GameSeatDisplay.exe --activate-display - Core parking disabled — sets min logical processor unparked to 100%
- Network configuration — interfaces configured from
networkdata.txt - Driver checks — GPU validated, masquerade/filter drivers loaded
- Session orchestration starts — GS2 stack in newer bundles, NvGridSvc on legacy seats
- Crash detector — scheduled task monitors for crash dumps
- Seat package updates — downloads and installs latest packages
- 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.vhdxImage ID
The rig OS image is identified as:
GS-W11-ENGLISH-master-119df3c-20230816-165457.qcow2This 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:
| Package | Purpose |
|---|---|
asgard_config | Config class, Redis state DB connection |
asgard_storage | RedisStorage wrapper for state management |
asgard_util_cs | Config Service client (HTTPS) |
asgard_util_dhcp | DHCP info parsing |
asgard_util_local | Local system ops, GPU detection, user data |
asgard_util_logging | Remote syslog integration |
asgard_util_ns1 | NS1 DNS management |
asgard_util_r53 | AWS Route53 DNS management |
asgard_util_remote | SSH/PuTTY remote command execution |
asgard_util_sps | Seat Provider Service client |
asgard_util_xen | Xen hypervisor operations |
asgard_util_zone_properties | Zone configuration constants |
nimbus_seat_ctrl | AWS EC2 seat control, IAM, security groups |
asgard_protobuf_common | 121 Protocol Buffer definitions |