Check health of all 4 CT scanner nodes — iPad UI, Pi Camera, CT-PC API, and Health Dashboard.
Ping all 4 nodes of the CT scanner system and report their status, including camera feeds, scan state, and WinWerth connectivity.
Check iPad UI (port 4800)
curl -sf http://localhost:4800/api/health --max-time 5 && echo "OK" || echo "UNREACHABLE"
{"status":"ok","app":"autopilot-ipad","timestamp":"..."}pnpm dev in apps/ipad-ui/Check Pi Camera Server (port 4801)
curl -sf http://10.0.0.1:4801/health --max-time 5 && echo "OK" || echo "UNREACHABLE"
{"status":"ok","cameras":2,"streaming":true}curl -sf http://10.0.0.1:4801/cameras --max-time 5
Check CT-PC API (port 4802)
curl -sf http://localhost:4802/health --max-time 5 && echo "OK" || echo "UNREACHABLE"
{"status":"ok","winwerth_connected":true,"tube_status":"off"}curl -sf http://localhost:4802/winwerth/status --max-time 5
Check Health Dashboard (port 4803)
curl -sf http://localhost:4803/api/health --max-time 5 && echo "OK" || echo "UNREACHABLE"
{"status":"ok","app":"autopilot-dashboard","timestamp":"..."}Check scan state
curl -sf http://localhost:4802/scan/status --max-time 5
Generate health summary
Node Port Status Details
---- ---- ------ -------
iPad UI 4800 OK v1.2.0
Pi Camera Server 4801 OK 2 cameras, streaming
CT-PC API 4802 OK WinWerth connected, tube off
Health Dashboard 4803 OK v1.0.0
Scan State: idle
Last Scan: 2026-03-27T10:30:00Z (completed, 847 steps)
Optional: Check Setup Portal (port 4804)
curl -sf http://localhost:4804/api/health --max-time 5 && echo "OK" || echo "UNREACHABLE"
/autopilot-scan — All nodes healthy, ready to start a scan/autopilot-deploy — Redeploy CT-PC API if it is unreachable/autopilot-pi — Re-flash Pi if the camera server is down/autopilot-calibrate — Run calibration if WinWerth is connected but uncalibrated