AutoOnboarder (CTMT)
AutoOnboarder is the Content Transport Management Tool (CTMT) service. It manages user state baseline snapshots, game installation, and restores the "Kiosk" user account to a clean state between sessions.
NOTE
In newer bundles, AutoOnboarder co-exists with newer orchestration services (gs2, morph) rather than being the only lifecycle coordinator.
Version
CTMT version 2023.4.6.19552 (DLL: ctmt-plugin.dll)
CTMT Python service: 2023.4.6.9653344Core Responsibilities
- Baseline capture — snapshots the clean Kiosk user account state
- State restoration — restores registry, files, Steam account before each session
- User save management — uploads/downloads cloud saves
- Platform controller — manages game stores (Steam, Epic, etc.)
- Content controller — handles game installation and updates
Directory Structure
C:\Asgard\services\AutoOnboarder\
├── baseline\ ← Clean system snapshot
├── user-saves\ ← Per-user cloud save data
├── fpgen\ ← Fingerprint generation
├── misc\ ← Miscellaneous tools
└── plugins\ ← Plugin extensionsScraper Configuration
scraperConfig.ptxt defines what gets captured in the baseline snapshot:
Captures
- Registry hives:
HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_CLASSES_ROOT - User profile:
C:\Users\Kiosk\(excluding Steam user data) - NVIDIA config dirs:
C:\ProgramData\NVIDIA Corporation\GeForceNOW\
Exclusions
C:\ProgramData\NVIDIA\(driver data)- Steam's
userdata\directory - Windows system directories
MessageBus Configuration
{
"LogPath": "C:\\asgard\\logs\\AutoOnboarder",
"LocalConnectionSuffix": "",
"LogLevel": 5,
"MessageBusPort": 65000,
"InstallPath": "C:\\Program Files\\NVIDIA Corporation\\NvContainer"
}Platform Controller
From platform_controller.txt logs:
The platform controller initializes GfnGuard, then:
- Reads content controller config from userdata
- Sets up game library (Steam, Epic, etc.)
- Responds to prewarm requests
- Manages app installation requests
GFN Guard Integration
Content protection is configurable:
{
"gfn_guard": {
"cloudCheckOperationMode": 0,
"v2OperationMode": 0,
"lambdaRate": 1,
"lambdaOperationMode": "ALLOW_FAILURE",
"lambdaURL": "https://wyfbw6i2d3j3r736zs7cvsjts40btasy.lambda-url.us-west-1.on.aws/"
}
}Prewarm Disabled Games
Some games disable platform prewarming (loaded from config):
101900011, 100282511, 100044011, 101735611, 100229811,
101750911, 101791911, 100901811, 18108011, 100657311,
... (50+ game IDs total)Network Shader Cache Disabled Games
102631611, 100479111, 102412411, 102333611,
102339511, 100525911, 102061811, 102352611User Save Connector
Cloud save synchronization:
{
"user_save_connector": {
"enabled": true,
"deltaMode": "ENABLED_BY_DEFAULT",
"deltaPeriodicitySec": 1800,
"userSaveDataSizeLimitMB": 10737,
"uploadTimeLimitSec": 900,
"downloadTimeLimitSec": 120,
"ncssTokenLifetimeSec": 300,
"ncssRequestTimeoutMs": 30000,
"compressionLevel": 0
}
}Delta saves trigger every 30 minutes, with a 10GB per-user limit.
Content Config: Volume Setup
{
"volume_setup": {
"fastInstallImageSizeGB": 250,
"imageBufferMB": 1024,
"systemDriveReservedSpaceMB": 4096
}
}Masquerade Integration
The masquerade system (IO throttling for game installs):
{
"masquerade": {
"ioThrottlingEnabled": true,
"ioThrottlingDelayMs": 1000,
"touchPriority": 2,
"threadPoolSize": 2
}
}Registry Restoration
From the scraper.log, the scraper restores registry hives between sessions:
- Reads baseline registry snapshot
- Applies
HKEY_CLASSES_ROOTentries - Applies
HKEY_CURRENT_USERentries - Restores Steam registry configuration
- Validates final state matches baseline
Post-Session Log Merge
post_session_backuplog.bat merges GameStream logs after each session:
python GamestreamLogsMerger.py
python AnalyzeGameStreamMergedLog.pyOutput: %AG_LOGS%\gslogs\GameStreamLogs.log
Steam Integration
{
"steam": {
"steamWhitelisting": true,
"steamIntegration": true
}
}steam_client_init_bat.log shows:
- Steam Client Service creation with
subinaclACL modifications MBSteamWatcher.exefor Steam event monitoring- Steam shortcut monitoring enabled