Desktop tool that packages a complete support case — filtered controller logs and matching site video — from a single form submission.
Sole Developer & Owner · Feb 2026 – Apr 2026 · Team of 1
Result
In daily production use across 6 customer sites. Real cases have been packaged through partial failures (single missing log stream, video unavailable for a specific time window) and the support engineer still got the usable subset.
Result
Adopted into daily production use by the Customer Support team before the internship ended, with no external training rolled out. The form itself was the documentation.
Result
The registry currently lists two streams. The extension point is documented in a code comment so the next engineer can extend it without reading the pipeline implementation.
Result
Verified manually by killing the GUI mid-run. No orphan SSH processes remain, and no zombie accumulation observed across the support team's daily use.
| From | To | Type | Description |
|---|---|---|---|
| gui.py | window_logs.py | software | Threaded invocation of the backend pipeline on form submission. UI thread stays responsive while the backend runs. |
| window_logs.py | SSH Gateways | process | Detect, reuse, start, and shutdown-handler cleanup of SOCKS proxy tunnels. No persistent gateway state between runs. |
| window_logs.py | Deployed Controller | data | Time-windowed log fetching over SSH. Handles rotated archives and gzip decompression on-host. |
| window_logs.py | protect-archiver | software | Subprocess invocation of the vendored MIT-licensed NVR client. Communication via stdout and return code. |
| protect-archiver | Site Camera NVR | api | HTTPS API client routed through an ephemeral SSH port-forward. Tunnel lifetime scoped to the video download only. |

Click-only Tkinter form — controller, incident timestamp, deliverables, log detail level. Zero text entry anywhere.

Sanitized view of the 6 customer-site controllers reachable through one form.

Sanitized view of the 6 customer-site controllers reachable through one form.

Architectural map: containers, sub-components, external systems, and cross-cutting design properties.
Limitations
Lessons & Next Steps