What This Project Is
ShowTrak Server is the desktop control plane for ShowTrak. It is an Electron app that runs on an operator machine and manages many ShowTrak Client nodes on a local network.
Core outcomes:
- Observe machine status in near real time: vitals, hardware, applications, power and temperatures
- Adopt and organize clients by group and tag
- Execute scripted actions across single or bulk targets
- Monitor show devices and services (network probes, show control, lighting, video, audio, UPS, projectors)
- Trigger alert actions from rule-based events
- Control systems through OSC and Wake-on-LAN
- Expose a browser-based companion Web UI for remote dashboards and actions
Companion client agent repository: ShowTrak Client
Scope Overview
ShowTrak Server includes all of the following in a single app/runtime:
- Desktop UI (Electron renderer in
src/UI)
- Main process orchestration and IPC bridge (
src/main.ts, src/bridge_main.ts)
- Client socket server and Web UI socket namespace (
src/Modules/Server)
- Persistent local data (SQLite + show file workflow)
- Monitoring targets and history
- Alerting engine + pluggable action handlers
- Script catalog + execution queue
- Network discovery and adoption flows
- Auto-update hooks for packaged desktop builds
Key Features
Device and Group Management
- Client adoption queue for unmanaged devices
- Full client list sync and update broadcasts
- Group creation, deletion, and ordering
- Per-client updates and unadopt workflow
Client Monitoring
Each ShowTrak Client reports, and the server judges:
- Vitals: CPU and memory usage (every second), operating-system uptime and
boot time. On macOS, memory reads as Activity Monitor's "Memory Used" from
client 3.27.0.
- Hardware: USB devices (port, firmware, Windows device errors), displays
(mode, rotation, position, primary), audio endpoints (format, default, level,
mute) and network interfaces (addresses, router).
- Applications: what is running, which instances are hung ("Not
Responding", Windows only), and which application holds the foreground
(Windows, macOS, and Linux with
xdotool on X11).
- Power: battery charge, mains or battery power, and sleep/wake.
- Temperatures: CPU/GPU/system sensors where the platform exposes them
(Windows via LibreHardwareMonitor/OpenHardwareMonitor or ACPI thermal zones,
Linux via sysfs, NVIDIA GPUs via
nvidia-smi), and macOS thermal pressure.
Anything a platform cannot report is shown as "not available on " rather
than treated as a fault, and clients older than 3.27.0 are told which version
they need.
A client reads degraded when any of the following holds:
- a monitored item breaks one of its conditions: a USB device, display, audio
endpoint, network interface or application. Monitored applications can also be
required to stay responding and to hold the foreground.
- a threshold is breached:
- CPU or memory usage stays at or above its threshold for the sustain time
(default 90% for 60 s);
- the hottest sensor reaches the temperature threshold (default 85 °C), or
macOS reports thermal throttling;
- the battery falls to the low-battery threshold (default 20%) while
discharging.
Every threshold is set server-wide in Preferences → Monitoring. CPU, memory and
temperature can also be overridden per client in the client editor, where "Off"
turns that check off for one machine.
Monitoring Targets
- Monitor methods for non-ShowTrak devices:
- Network: ICMP ping, TCP port, HTTP, HTTPS, HTTP JSON, DNS, MQTT topic
- Show control: QLab 4/5, ETC Eos, grandMA2/MA3, Avolites Titan, ChamSys
MagicQ, Bitfocus Companion, Art-Net timecode
- Video and media: Resolume, Millumin, Watchout, disguise, PIXERA, 7thSense Delta,
BrightSign, NDI sources, Blackmagic ATEM, HyperDeck and Videohub, OBS
Studio, OptiTrack Motive
- Sound: Shure and Sennheiser wireless (battery, RF, transmitter presence),
Behringer X32 / Midas M32, Yamaha CL/QL/RIVAGE PM/DM7, Q-SYS Cores
- Lighting and audio networks: sACN universes (and priority), Art-Net
universes and node health, Dante devices
- Power and projection: NUT and SNMP UPS, PJLink, SNMP projectors
- Monitoring target CRUD and live status updates
- Check actions: methods that can control their device (PJLink projector power,
shutter, input) expose buttons in the monitor view, starred favourites in the
right-click menu, and
/API/Monitor/<slug>/<method>/<action> over OSC and HTTP
History
- Status timelines for clients, monitoring checks, dummy clients and every
monitored item, shown as the last hour in the view modal
- Nothing is kept for more than 12 hours: status timelines, FreeKiosk metric
history, alert history, finished script executions, finished FOG tasks and the
in-app alerts tray all age out, including entries for clients that have gone
offline
- A steady signal is stored as about one reading every 15 seconds rather than
one per heartbeat; any change of state is recorded the moment it happens
Alerts and Actions
Alert rules are scoped to the workspace, groups, tags or individual clients,
and fire on any of their selected triggers:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗