Skip to content

Morph Service

Morph transition-controller notes are consolidated here from the 2026-05-19 snapshot.

Deep-only retained findings

  • https://checkip.amazonaws.com is referenced by Morph for external/open-network IP checks.

2026-05-19 application notes

morph.exe

What this program actually does

morph.exe implements the Gameseat Morph Service (NTS) — a Windows service that orchestrates seat network/volume morphing during SSLM session transitions. It waits for NGS:SSLM on MessageBus, subscribes to session notifications, and runs TransitionMonitor to verify the seat has morphed from closed → open network (IGW IP CIDR check) and attached block volumes before acknowledging SessionContentSetup.

Telemetry schema: gfn-team.open.morph:9 (MorphInitializedEvent, MorphCompletedEvent).


Architecture / control flow (recovered symbols)

main
  └─ MorphService (CServiceBase@systemservicebase@nv)
        ├─ MorphService::OnStart → ServiceThread
        │     └─ MorphController
        │           ├─ MessageBus observer (Morph:Morph, Morph:Telemetry)
        │           ├─ TasConnector → TAS / Kratos events
        │           ├─ ConfigReader → GSConfigClient (SeatConfig, ZoneConfig, SessionObject)
        │           ├─ NotificationHandler → SSLM notifications
        │           └─ TransitionMonitor (worker thread polling loop)
        └─ MorphService::StopMorph / OnStop / OnShutdown

Build tree: C:\builds\ngn-gia-storage\gfn\gameseat\morph\src\

PDB: C:\builds\ngn-gia-storage\gfn\gameseat\morph\out\x64-windows-release\src\morph.pdb


RTTI / telemetry types (deep extract sample)

ClassRole
MorphController, MorphServiceCore service/controller
GSConfigClient@gsprerequisitesFetches seat/zone/session configs
Connector@tas@gs@gfn@nvTAS telemetry connector
*@Fields@morphBlockVolumeCount, BlockVolumeConfigureTimeMs, BlockVolumesConnectionTimeMs, DuplicateBlockVolumes, ErrorCode, FailureReason
MessageBusEx, BusObserverInterface_v3Extended message bus observer

External interfaces

InterfaceRole
Windows ServiceInstalled via morph.exe -install; log name "Gameseat Morph Service (NTS)"
MessageBusPeers Morph:Morph, Morph:Telemetry; config C:\Program Files\NVIDIA Corporation\NvContainer\plugins\LocalSystem\messagebus.conf
GSConfiguratorGetConfiguration for SeatConfig, ZoneConfig, SessionObject (Services=["Morph"])
SSLMWaits for NGS:SSLM, subscribes; handles SessionContentSetup
HTTPS / WS2TransitionMonitor queries https://checkip.amazonaws.com; validates IP against Open CIDRs from zone config
Block volumesPolls for volume serial from SessionObject (e.g. [REDACTED_VOLUME_ID])
NVP morph checkCPUID leaf 0x40000000 — log: EBX: 0x7263694d, ECX: 0x666f736f, EDX: 0x76482074 → "NVP transition check passed"
CryptoADVAPI32 Crypt*, bcrypt.dll, CRYPT32.dll (HTTPS client)
Logslogs/Morph/Morph.log

TransitionMonitor behavior (logs + strings)

CheckEvidence
IGW open networkIP must fall in configured Open CIDRs (log: [REDACTED_IP] is in Open CIDR: [REDACTED_CIDR])
Block volume attachChecking for volume with serial number: … until volume present
Session handlerNotificationHandler.cpp:137 Handling SessionContentSetup notificationWaiting for transition to complete...
Timeout stringsTAS not found on MessageBus before overall init timeout of {}

Runtime timeline (from logs/Morph/Morph.log)

Time (local)Event
18:43:04.973Custom log formatter; GSConfigClient init
18:43:05.125Morph Service banner; MorphController created
18:43:05.147MessageBus observer OK; TAS connector init
18:43:05.124Initial SSLM subscription cancelled (NGS not on bus)
18:43:05.466Waiting for NGS SSLM peer
18:43:22.361NGS joined; SSLM subscribe success
18:43:22.606MorphController initialized; listening for SSLM
18:48:22.474Session phase: TransitionMonitor created; has_block_volumes: true
18:48:22.482Block volume serial discovered; polling started
18:48:22.482–23.258IGW checks fail ([REDACTED_IP] not in CIDR), then pass ([REDACTED_IP])
18:48:23.647SessionContentSetup received; waiting for transition

Failure modes (strings + logs)

String / logMeaning
Failed to create MessageBus observer for MorphControllerBus DLL/config missing
TAS not found on MessageBus before exitTelemetry connector could not find TAS peer
IP {} is not in Open CIDRs: {}Seat still on closed network
No volume found with serial number: {}Block volume not yet attached
Received an unknown notification type. Ignoring...Unhandled SSLM notification
Exception in ServiceThread: {}Service thread fault path

Relationships

ComponentInteraction
GfnSdkService, StutterSharkSibling services; all wait/subscribe to NGS:SSLM
GSConfiguratorPluginConfig source for seat/zone/session
SmithyControllerObserves Morph:Morph, Morph:Telemetry peers
mb-repeaterBridges Morph peers to remote repeater
Pandora / SAS2Seat software install via VHDX (logs/startup/morphSoftwareInstall.log)

Not verified

  • Exact protobuf type for SSLM notifications handled vs ignored.
  • Whether MorphCompletedEvent fired in this session (not seen in truncated log tail).
  • Service SCM name string in registry (install log shows display name only).

Evidence

  • readpe, strings, r2 on services/morph/morph.exe
  • logs/Morph/Morph.log
  • logs/startup/morphSoftwareInstall.log
  • logs/GSP/GSConfiguratorPluginCurrent.log, logs/SmithyV2/SmithyController/.../SmithyControllerPlugin.log, logs/mb-repeater/mb-repeater.log

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