How it works

Architecture

The tray sends user choices to a local service, which validates and applies supported hardware changes.

Control path

ProjectResponsibilityTrust boundary
OpenBlade.ContractsDefines versioned IPC messages for profiles, state, capabilities, and results.Contains no platform or HID code.
OpenBlade.ProtocolValidates reports, admits exact devices, stores sanitized fixtures, exposes typed HID operations, and renders lighting.Only admitted typed operations reach HID.
OpenBlade.ServiceOwns the control handle, serializes operations, runs automation, confirms state, and handles drift and diagnostics.Runs as the privileged LocalSystem IPC server.
OpenBlade.Tray.CoreHolds presentation state, commands, profiles, telemetry choices, and service client behavior without WinUI dependencies.Runs in the unelevated user process.
OpenBlade.TrayProvides the WinUI 3 window, Mica styling, tray icon, startup preference, and user interaction.Runs as the unelevated current-user UI.
OpenBlade.DisplayFinds displays and applies Windows refresh rate, HDR, and color profile settings.Uses APIs from the current interactive session.
OpenBlade.PlatformReads Windows NVIDIA GPU activity counters, lists and closes the apps holding the GPU awake, and applies processor efficiency policy.Contains no HID code. Acts only on the current user's own processes.
OpenBlade.DeploymentParses published release metadata and verifies a signed release before the app offers it.Reads only what an update check returns. It never installs anything on its own.
OpenBlade.Session / SessionAgentHandles current-user display, input, audio, and streamed-lighting work. Profile automation, configured keys, and interactive lighting continue when the tray exits.Runs once per signed-in user. The service accepts hardware changes only from the active console session.
OpenBlade.CaptureProvides typed capture, query, and reversible validation tools for developers.Does not ship in the production installer, which rejects a payload containing it.
OpenBlade.FirmwareSmokeRuns reversible firmware checks against a connected Blade and restores the original state.A developer tool. Does not ship in the production installer.
OpenBlade.DeploymentBroker / DeploymentClientInstalls locally built OpenBlade payloads without repeated permission prompts, with first-install rollback.For local development only, and only after an explicit, machine-authorized enrollment. Does not ship in the production installer.
OpenBlade.SetupInstalls or removes the app, manages the service and session component, and preserves profiles.Requests elevation only for machine changes. It refuses to replace a newer installed version.

State and precedence

The service applies settings in this order: manual override, temporary power source override, active profile, then confirmed firmware state. It writes only changed values.

Firmware behavior varies by model. RZ09-0581 reports one manual thermal state for Fixed, Manual curve, and Maximum. Its adapter remembers the selected mode while confirming the generic firmware state.

Ownership and conflicts

Failure model

Not applied

No command was accepted. Keep the last confirmed state and report the failed control.

Result unknown

A write may have reached the laptop, but confirmation failed. Stop writing and reconnect.

Changed elsewhere

Report the change, then restore the confirmed setting or leave it in place, depending on your choice. Never replay a write whose outcome is unknown.

Data unavailable

Hide the control or use a documented fallback, such as maximum fan speed.