2026-10-21 13:07:15 -04:00
{
"site" : {
"id" : "sc" ,
"name" : "Southcoast" ,
"ingest_name" : "SC ProPresenter" ,
"ingest_hostname" : "SC-ProPresenter-423.local" ,
"ingest_ips" : [
"10.5.2.60" ,
"192.168.2.1" ,
"169.254.161.214" ,
"169.254.108.73"
],
"contacts" : "" ,
"live_services" : [],
2026-10-21 16:29:36 -04:00
"editing_code" : "5690" ,
"admin_ips" : [
"10.6.7.38"
],
"admin_keys" : [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKCGDLncJQfNPpoZUy/5BQWGNtyaU1/xKXwHQWx3ETa christian-laptop@waters"
]
2026-10-21 13:07:15 -04:00
},
"companion" : {
"host" : "127.0.0.1" ,
"port" : 8000
},
"page" : 19 ,
"page_name" : "19\\nStatus" ,
"page_hold_ms" : 2000 ,
"variables" : {
"state" : "sp_state" ,
"heartbeat" : "sp_hb" ,
"command" : "sp_cmd"
},
"timing" : {
"fix_cooldown_seconds" : 60 ,
"alert_after_seconds" : 30
},
"auto_fix" : {
"after_seconds" : 20 ,
"max_tries" : 2 ,
"retry_seconds" : 90 ,
"pause_after_network_seconds" : 60 ,
"restart_connections" : true ,
"windows" : [
{
"days" : [
"tue"
],
"start" : "14:00" ,
"end" : "22:00"
},
{
"days" : [
"wed"
],
"start" : "09:00" ,
"end" : "21:00"
},
{
"days" : [
"sun"
],
"start" : "05:00" ,
"end" : "14:00"
}
],
"fixes" : [
"propresenter_ingest" ,
"prop_port_propresenter_api" ,
"hyperdeck" ,
2026-10-21 13:33:48 -04:00
"midi_reconnect" ,
2026-10-21 13:42:22 -04:00
"ableton_sc_tracks_new" ,
"superrack_sc_foh" ,
2026-10-21 14:10:42 -04:00
"x32edit_sc_foh" ,
"vista_desktop_cucshqg" ,
"rtpmidi_desktop_cucshqg"
2026-10-21 13:07:15 -04:00
]
},
"tiles" : [
{
"id" : "all" ,
"label" : "ALL" ,
"pos" : [
0 ,
1
],
"kind" : "master"
},
{
"id" : "service" ,
"label" : "ALARMS" ,
"pos" : [
3 ,
0
],
"kind" : "service"
},
{
"id" : "net" ,
"label" : "NET" ,
"pos" : [
3 ,
7
],
"kind" : "network"
},
{
"id" : "hd" ,
"label" : "HD" ,
"checks" : [
{
"type" : "hyperdeck" ,
"conn" : "hyperdeck" ,
"fix" : {
"conn" : "hyperdeck"
}
}
],
"pos" : [
0 ,
2
]
},
{
"id" : "foh_x32" ,
"label" : "FOH X32" ,
"checks" : [
{
"type" : "conn" ,
"conn" : "FOH_X32"
}
],
"pos" : [
0 ,
3
]
},
{
"id" : "iem_x32" ,
"label" : "IEM X32" ,
"checks" : [
{
"type" : "conn" ,
"conn" : "IEM_X32"
}
],
"pos" : [
0 ,
4
]
},
{
"id" : "prop" ,
"label" : "PROP" ,
"checks" : [
{
"type" : "conn" ,
"conn" : "Propresenter-API" ,
2026-10-21 15:38:56 -04:00
"fix" : "prop_port_propresenter_api" ,
"ignore_warning" : true
2026-10-21 13:07:15 -04:00
},
{
"type" : "process" ,
2026-10-21 14:33:39 -04:00
"match" : "/Applications/ProPresenter[^/]*\\.app/Contents/MacOS/ProPresenter$" ,
2026-10-21 13:07:15 -04:00
"name" : "PROP" ,
"fix" : "propresenter_ingest"
}
],
"pos" : [
0 ,
5
]
},
{
"id" : "atem" ,
"label" : "ATEM" ,
"checks" : [
{
"type" : "conn" ,
"conn" : "atem"
}
],
"pos" : [
0 ,
6
]
},
{
"id" : "resi" ,
"label" : "RESI" ,
"checks" : [
{
"type" : "conn" ,
"conn" : "resi"
},
{
"type" : "ping" ,
"conn" : "resi"
}
],
"pos" : [
0 ,
7
]
},
{
"id" : "midi" ,
"label" : "MIDI" ,
"checks" : [
2026-10-21 13:46:23 -04:00
{
"type" : "conn" ,
"conn" : "Midi-Lighting"
},
2026-10-21 13:07:15 -04:00
{
"type" : "midi_peer" ,
"session" : "ProPresenter" ,
"peer" : "Lighting" ,
"address" : "10.5.1.168:5004" ,
"fix" : "midi_reconnect" ,
"tag" : "PROP LIGHTS"
},
2026-10-21 13:42:22 -04:00
{
"type" : "midi_peer" ,
"session" : "SC Tracks NEW" ,
"peer" : "SC FOH Mac mini" ,
"address" : "10.5.2.96:5004" ,
"fix" : "midi_reconnect" ,
"tag" : "FOH TRACKS" ,
"host" : "sc_tracks_new"
},
{
"type" : "midi_peer" ,
"session" : "SC Tracks NEW" ,
"peer" : "Lighting" ,
"address" : "10.5.1.168:5004" ,
"fix" : "midi_reconnect" ,
"tag" : "TRACKS LIGHTS" ,
"host" : "sc_tracks_new"
},
2026-10-21 14:10:42 -04:00
{
"type" : "remote" ,
"template" : "win_program" ,
"params" : {
"host" : "desktop_cucshqg" ,
"exe" : "rtpMIDI.exe"
},
"msg" : "RTPMIDI NOT RUNNING" ,
"fix" : "rtpmidi_desktop_cucshqg" ,
"host" : "desktop_cucshqg" ,
"cmd" : "tasklist /NH /FI \"IMAGENAME eq rtpMIDI.exe\" | find /I \"rtpMIDI.exe\" >nul"
},
2026-10-21 13:07:15 -04:00
{
"type" : "midi_wired" ,
"nets" : [
"10.5.0.0/16"
],
"fix" : "midi_reconnect"
}
],
"pos" : [
1 ,
1
]
2026-10-21 13:33:48 -04:00
},
{
"id" : "ableton" ,
"label" : "ABLETON" ,
"checks" : [
{
"type" : "remote" ,
"template" : "mac_program" ,
"params" : {
"host" : "sc_tracks_new" ,
"process" : "Live"
},
"msg" : "ABLETON NOT RUNNING" ,
"fix" : "ableton_sc_tracks_new" ,
"host" : "sc_tracks_new" ,
"cmd" : "pgrep -xq Live"
}
],
"pos" : [
1 ,
2
]
},
{
"id" : "autofix" ,
"label" : "AUTO-FIX" ,
"kind" : "autofix" ,
"pos" : [
3 ,
1
]
},
{
"id" : "lights" ,
"label" : "LIGHTS" ,
"kind" : "bypass" ,
"pos" : [
1 ,
3
],
"bypass" : {
"peers" : [
"Lighting"
],
"hosts" : [
"" ,
"sc_tracks_new"
]
}
2026-10-21 13:42:22 -04:00
},
{
"id" : "superrack" ,
"label" : "SUPERRACK" ,
"checks" : [
{
"type" : "remote" ,
"template" : "mac_program" ,
"params" : {
"host" : "sc_foh" ,
"process" : "SuperRack SoundGrid"
},
"msg" : "SUPERRACK NOT RUNNING" ,
"fix" : "superrack_sc_foh" ,
"host" : "sc_foh" ,
"cmd" : "pgrep -xq 'SuperRack SoundGrid'"
},
{
"type" : "remote" ,
"template" : "soundgrid" ,
"params" : {
"host" : "sc_foh"
},
"msg" : "SOUNDGRID LOST" ,
"host" : "sc_foh" ,
"cmd" : "lsof -nP -iTCP -sTCP:ESTABLISHED -a -c SuperRack 2>/dev/null | grep -q ':19000 (ESTABLISHED)'"
}
],
"pos" : [
1 ,
4
]
},
{
"id" : "x32_edit" ,
"label" : "X32 EDIT" ,
"checks" : [
{
"type" : "remote" ,
"template" : "mac_program" ,
"params" : {
"host" : "sc_foh" ,
"process" : "X32-Edit"
},
"msg" : "X32 EDIT NOT RUNNING" ,
"fix" : "x32edit_sc_foh" ,
"host" : "sc_foh" ,
"cmd" : "pgrep -xq X32-Edit"
}
],
"pos" : [
1 ,
5
]
2026-10-21 14:10:42 -04:00
},
{
"id" : "vista" ,
"label" : "VISTA" ,
"checks" : [
{
"type" : "remote" ,
"template" : "win_program" ,
"params" : {
"host" : "desktop_cucshqg" ,
"exe" : "Vista.exe"
},
"msg" : "VISTA NOT RUNNING" ,
"fix" : "vista_desktop_cucshqg" ,
"host" : "desktop_cucshqg" ,
"cmd" : "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul"
}
],
"pos" : [
1 ,
6
]
2026-10-21 13:07:15 -04:00
}
],
"fixes" : {
"propresenter_ingest" : {
"template" : "mac_start" ,
"params" : {
"host" : "ingest" ,
"process" : "ProPresenter" ,
2026-10-21 14:33:39 -04:00
"app" : "$APP" ,
"newest_of" : "/Applications/ProPresenter*.app"
2026-10-21 13:07:15 -04:00
},
"label" : "start ProPresenter on this Mac if it is not running" ,
"short" : "PROP" ,
"kind" : "local" ,
2026-10-21 14:33:39 -04:00
"run" : "pgrep -xq ProPresenter || { APP=$(for a in /Applications/ProPresenter*.app; do [ -d \"$a\" ] && printf '%s|%s\\n' \"$(defaults read \"$a/Contents/Info\" CFBundleShortVersionString 2>/dev/null)\" \"$a\"; done | sort -t '|' -k1,1V | tail -1 | cut -d '|' -f2-); open \"$APP\"; }"
2026-10-21 13:07:15 -04:00
},
"restart_propresenter_ingest" : {
"template" : "mac_restart" ,
"params" : {
"host" : "ingest" ,
"process" : "ProPresenter" ,
2026-10-21 14:33:39 -04:00
"app" : "$APP" ,
2026-10-21 13:07:15 -04:00
"wait_seconds" : 10 ,
"force" : true ,
"background" : false ,
"stop_children" : false ,
2026-10-21 14:33:39 -04:00
"newest_of" : "/Applications/ProPresenter*.app"
2026-10-21 13:07:15 -04:00
},
"label" : "restart ProPresenter on this Mac (closes it first)" ,
"short" : "PROP" ,
"kind" : "local" ,
2026-10-21 14:33:39 -04:00
"run" : "APP=$(for a in /Applications/ProPresenter*.app; do [ -d \"$a\" ] && printf '%s|%s\\n' \"$(defaults read \"$a/Contents/Info\" CFBundleShortVersionString 2>/dev/null)\" \"$a\"; done | sort -t '|' -k1,1V | tail -1 | cut -d '|' -f2-); pkill -TERM -x ProPresenter; i=0; while pgrep -xq ProPresenter && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProPresenter && pkill -KILL -x ProPresenter; sleep 1; open \"$APP\""
2026-10-21 13:07:15 -04:00
},
"prop_port_propresenter_api" : {
"kind" : "propresenter_port" ,
"template" : "propresenter_port" ,
"params" : {},
"conn" : "Propresenter-API" ,
"short" : "PROP PORT" ,
"label" : "find ProPresenter's network port and reconnect Companion's Propresenter-API to it"
},
"hyperdeck" : {
"kind" : "hyperdeck" ,
"template" : "hyperdeck" ,
"params" : {},
"short" : "HYPERDECK" ,
"verify_seconds" : 15 ,
"hung_note" : "STILL OFFLINE\nHOLD AGAIN" ,
"label" : "turn Companion's connection to that HyperDeck off and on (what gets a restarted deck green); never reboots the deck"
},
"midi_reconnect" : {
"kind" : "midi_connect" ,
"template" : "midi_connect" ,
"params" : {},
"short" : "RECONNECT" ,
"label" : "reconnect the peer to the network MIDI session it dropped out of (like Connect in Audio MIDI Setup), at its wired address"
2026-10-21 13:33:48 -04:00
},
"ableton_sc_tracks_new" : {
"template" : "ableton" ,
"params" : {
"host" : "sc_tracks_new" ,
"app" : "Ableton Live 11 Suite" ,
"restart" : false ,
"wait_seconds" : 15
},
"label" : "start Ableton on SC Tracks NEW if it is not running" ,
"short" : "ABLETON" ,
"kind" : "ssh" ,
"host" : "sc_tracks_new" ,
"run" : "pgrep -xq Live || { L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi; }"
},
"restart_ableton_sc_tracks_new" : {
"template" : "ableton" ,
"params" : {
"host" : "sc_tracks_new" ,
"app" : "Ableton Live 11 Suite" ,
"restart" : true ,
"wait_seconds" : 15
},
"label" : "restart Ableton on SC Tracks NEW (closes it first)" ,
"short" : "ABLETON" ,
"kind" : "ssh" ,
"host" : "sc_tracks_new" ,
"run" : "L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); pkill -TERM -x Live; i=0; while pgrep -xq Live && [ $i -lt 30 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq Live && pkill -KILL -x Live; sleep 1; if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi"
2026-10-21 13:42:22 -04:00
},
"superrack_sc_foh" : {
"template" : "mac_start" ,
"params" : {
"host" : "sc_foh" ,
"process" : "SuperRack SoundGrid" ,
"app" : "/Applications/Waves/SuperRack SoundGrid/SuperRack SoundGrid.app"
},
"label" : "start SuperRack on SC FOH if it is not running" ,
"short" : "SUPERRACK" ,
"kind" : "ssh" ,
"host" : "sc_foh" ,
"run" : "pgrep -xq 'SuperRack SoundGrid' || open '/Applications/Waves/SuperRack SoundGrid/SuperRack SoundGrid.app'"
},
"restart_superrack_sc_foh" : {
"template" : "mac_restart" ,
"params" : {
"host" : "sc_foh" ,
"process" : "SuperRack SoundGrid" ,
"app" : "/Applications/Waves/SuperRack SoundGrid/SuperRack SoundGrid.app" ,
"wait_seconds" : 10 ,
"force" : true ,
"background" : false ,
"stop_children" : false ,
"newest_of" : ""
},
"label" : "restart SuperRack on SC FOH (closes it first)" ,
"short" : "SUPERRACK" ,
"kind" : "ssh" ,
"host" : "sc_foh" ,
"run" : "pkill -TERM -x 'SuperRack SoundGrid'; i=0; while pgrep -xq 'SuperRack SoundGrid' && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq 'SuperRack SoundGrid' && pkill -KILL -x 'SuperRack SoundGrid'; sleep 1; open '/Applications/Waves/SuperRack SoundGrid/SuperRack SoundGrid.app'"
},
"x32edit_sc_foh" : {
"template" : "mac_start" ,
"params" : {
"host" : "sc_foh" ,
"process" : "X32-Edit" ,
"app" : "/Applications/X32-Edit.app"
},
"label" : "start X32-Edit on SC FOH if it is not running" ,
"short" : "X32 EDIT" ,
"kind" : "ssh" ,
"host" : "sc_foh" ,
"run" : "pgrep -xq X32-Edit || open /Applications/X32-Edit.app"
2026-10-21 14:10:42 -04:00
},
"vista_desktop_cucshqg" : {
"template" : "win_start" ,
"params" : {
"host" : "desktop_cucshqg" ,
"task" : "Start Vista" ,
"exe" : "Vista.exe"
},
"label" : "start Vista on SC Lighting PC if it is not running" ,
"short" : "VISTA" ,
"kind" : "ssh" ,
"host" : "desktop_cucshqg" ,
"run" : "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start Vista\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul)"
},
"restart_vista_desktop_cucshqg" : {
"template" : "win_restart" ,
"params" : {
"host" : "desktop_cucshqg" ,
"task" : "Start Vista" ,
"exe" : "Vista.exe"
},
"label" : "restart Vista on SC Lighting PC (closes it first)" ,
"short" : "VISTA" ,
"kind" : "ssh" ,
"host" : "desktop_cucshqg" ,
"run" : "taskkill /F /T /IM \"Vista.exe\" >nul 2>&1 & ping -n 3 127.0.0.1 >nul & schtasks /Run /TN \"\\StatusPanel\\Start Vista\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul"
},
"rtpmidi_desktop_cucshqg" : {
"template" : "win_start" ,
"params" : {
"host" : "desktop_cucshqg" ,
"task" : "Start rtpMIDI" ,
"exe" : "rtpMIDI.exe"
},
"label" : "start rtpMIDI on SC Lighting PC if it is not running" ,
"short" : "RTPMIDI" ,
"kind" : "ssh" ,
"host" : "desktop_cucshqg" ,
"run" : "tasklist /NH /FI \"IMAGENAME eq rtpMIDI.exe\" | find /I \"rtpMIDI.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start rtpMIDI\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq rtpMIDI.exe\" | find /I \"rtpMIDI.exe\" >nul)"
2026-10-21 13:07:15 -04:00
}
},
"hosts" : {
"ingest" : {
"self" : true ,
"name" : "SC ProPresenter" ,
"role" : "the watchdog, Companion, the settings page" ,
"os" : "mac" ,
"networks" : [],
"runs" : [
{
"kind" : "launchagent" ,
"label" : "org.waterschurch.status-panel" ,
"name" : "the watchdog"
},
{
"kind" : "launchagent" ,
"label" : "org.waterschurch.status-settings" ,
"name" : "the settings page"
},
{
"kind" : "app" ,
"process" : "Companion" ,
"name" : "Companion" ,
"http" : "http://127.0.0.1:8000/api/connections"
}
]
2026-10-21 13:33:48 -04:00
},
"sc_tracks_new" : {
"name" : "SC Tracks NEW" ,
"os" : "mac" ,
"ssh" : "tracks@10.5.3.72" ,
"role" : "found by auto-setup" ,
"runs" : [
{
"kind" : "sshd"
}
]
2026-10-21 13:42:22 -04:00
},
"sc_foh" : {
"name" : "SC FOH" ,
"os" : "mac" ,
"ssh" : "media@10.5.2.96" ,
"role" : "found by auto-setup" ,
"runs" : [
{
"kind" : "sshd"
}
]
2026-10-21 14:10:42 -04:00
},
"desktop_cucshqg" : {
"name" : "SC Lighting PC" ,
"os" : "windows" ,
"ssh" : "Lighting@10.5.1.168" ,
"role" : "found by auto-setup" ,
"runs" : [
{
"kind" : "sshd"
}
],
"mac" : "40:a8:f0:69:ce:c9"
2026-10-21 13:07:15 -04:00
}
},
"gear" : {},
"debounce_seconds" : 3 ,
"network" : {
"interface" : "en11" ,
"gateway" : "10.5.0.1" ,
"burst_connections" : 4 ,
"burst_groups" : 3 ,
"burst_window_seconds" : 10 ,
"remember_seconds" : 300
},
"nav_keys" : [
"pagenum"
],
"nav_hold_ms" : 1000 ,
"nav_tap_page" : 1 ,
"discover" : {
"auto" : true
},
"restart_page" : {
"page" : 20 ,
"page_name" : "20\\nRestart" ,
"jump_pos" : [
3 ,
6
],
"back_pos" : [
3 ,
0
],
"keys" : [
{
"id" : "rs_prop" ,
"label" : "PROP" ,
"fix" : "restart_propresenter_ingest" ,
"pos" : [
0 ,
1
]
2026-10-21 13:33:48 -04:00
},
{
"id" : "rs_ableton" ,
"label" : "ABLETON" ,
"fix" : "restart_ableton_sc_tracks_new" ,
"pos" : [
0 ,
2
]
2026-10-21 13:42:22 -04:00
},
{
"id" : "rs_superrack" ,
"label" : "SUPERRACK" ,
"fix" : "restart_superrack_sc_foh" ,
"pos" : [
0 ,
3
]
2026-10-21 14:10:42 -04:00
},
{
"id" : "rs_vista" ,
"label" : "VISTA" ,
"fix" : "restart_vista_desktop_cucshqg" ,
"pos" : [
0 ,
4
]
2026-10-21 13:07:15 -04:00
}
]
},
"service_windows" : [
{
"days" : [
"mon" ,
"tue" ,
"wed" ,
"thu" ,
"fri" ,
"sat" ,
"sun"
],
"start" : "00:00" ,
"end" : "23:59"
}
]
}