Manage IGEL UMS
from your browser

A local web interface for IGEL UMS — powered by PSIGEL and PowerShell, with a strict command allowlist and no raw shell exposure.

Browser UI
Node.js API
PowerShell
PSIGEL
IGEL UMS

Features

🔒

Strict allowlist

Only commands defined in config/commands.json can be executed. No raw PowerShell from the browser — ever.

⚠️

Danger confirmation

Write commands like Restart, Remove, Update, and Move require typing RUN before execution.

🔑

DPAPI credentials

UMS credentials are stored via Windows Export-Clixml — encrypted to your user account, never in plaintext.

🌐

Local-first

Binds to 127.0.0.1 by default. Designed for local use or SSH tunnel — not public internet.

📋

Data-driven

Add new PSIGEL commands by editing commands.json. No code changes needed.

Clean UI

Sidebar with grouped commands, JSON syntax highlighting, keyboard shortcuts, and live status indicator.

Command catalog

CommandPSIGEL functionTypeDescription
Status
get-statusGet-UMSStatusreadUMS server status and version
get-firmwareGet-UMSFirmwarereadRegistered firmware versions
Devices
get-deviceGet-UMSDevicereadDevice list with optional details filter
start-deviceStart-UMSDevicewriteWake-on-LAN a device by Id
stop-deviceStop-UMSDevicewriteShut down a device by Id
restart-deviceRestart-UMSDevicewriteRestart a device by Id
send-device-settingsSend-UMSDeviceSettingwritePush current profile settings to a device
update-deviceUpdate-UMSDevicewriteUpdate device metadata (Name, Site, Department…)
move-deviceMove-UMSDevicewriteMove device to a directory
remove-deviceRemove-UMSDevicewriteDelete a device from UMS
reset-deviceReset-UMSDevicewriteReset device to factory defaults
Device Directories
get-device-directoryGet-UMSDeviceDirectoryreadList device directories
new-device-directoryNew-UMSDeviceDirectorywriteCreate a device directory
update-device-directoryUpdate-UMSDeviceDirectorywriteRename a device directory
move-device-directoryMove-UMSDeviceDirectorywriteMove a device directory into another
remove-device-directoryRemove-UMSDeviceDirectorywriteDelete a device directory (must be empty)
Profiles
get-profileGet-UMSProfilereadList all profiles
update-profileUpdate-UMSProfilewriteRename a profile
move-profileMove-UMSProfilewriteMove a profile to a directory
remove-profileRemove-UMSProfilewriteDelete a profile from UMS
Profile Directories
get-profile-directoryGet-UMSProfileDirectoryreadList profile directories
new-profile-directoryNew-UMSProfileDirectorywriteCreate a profile directory
update-profile-directoryUpdate-UMSProfileDirectorywriteRename a profile directory
move-profile-directoryMove-UMSProfileDirectorywriteMove a profile directory into another
remove-profile-directoryRemove-UMSProfileDirectorywriteDelete a profile directory (must be empty)
Assignments
get-device-assignmentsGet-UMSDeviceAssignmentreadProfiles assigned to a specific device
get-device-directory-assignmentsGet-UMSDeviceDirectoryAssignmentreadProfiles assigned to a device directory
get-profile-assignmentsGet-UMSProfileAssignmentreadDevices and directories assigned to a profile
assign-profileNew-UMSProfileAssignmentwriteAssign a profile to a device or directory
remove-profile-assignmentRemove-UMSProfileAssignmentwriteRemove a profile assignment

Quick install

# On the Windows server that can reach IGEL UMS
cd C:\mq-ums

# Install PSIGEL and Node deps
.\scripts\install-windows.ps1

# Save credentials (DPAPI encrypted)
.\scripts\New-UmsCredential.ps1 -Path C:\mq-ums\ums.cred.xml

# Configure and start
copy .env.example .env
npm start

# Open http://127.0.0.1:8787

Security model

  • No raw PowerShell accepted from the browser
  • All commands validated against config/commands.json allowlist on every request
  • Arg values checked against safe charset before reaching PowerShell
  • Write commands blocked unless client sends correct confirmText
  • Credentials stored via Windows DPAPI — never in .env or plaintext
  • API binds to 127.0.0.1 by default
  • Optional API key via MQ_UMS_API_KEY

Documentation