Live surgical video from an edge device to a remote viewer. The edge client runs DINOv2-based inner/outer scene detection, optionally blurs frames (anonymize), and sends JPEGs over TCP. SSH forwards that TCP port to a Unix socket on the server, which displays the stream.
edge_device --TCP 127.0.0.1:12345--> SSH LocalForward --> server Unix socket
| Path | Role |
|---|---|
edge_device/ |
Client simulator (OpenVINO INT8 or native PyTorch). See edge_device/README.md. |
server/ |
Unix-socket receiver GUI, plus optional ONNX export / INT8 quantization. See server/README.md. |
Each of those folders is its own uv project. This root project is the CUDA environment used to convert and quantize the model.
On the edge machine, add a block like this to ~/.ssh/config. Replace the placeholders; LocalForward must match SOCKET_PATH in server/get_video_v2.py.
Host Host
User YourUserName
HostName HostName
IdentityFile PATH_TO_YOUR_PRIVATE_KEY
LocalForward 12345 PATH_TO_THE_SOCKET_IN_REMOTE_SERVER
ForwardAgent no
StreamLocalBindUnlink yes
Then connect (ssh Host) and leave the session open while streaming.
- On the server host, set
SOCKET_PATHinserver/get_video_v2.py, then:
cd server
uv run ./get_video_v2.py- On the edge machine, open the SSH tunnel above.
- On the edge machine:
cd edge_device
uv run .\secure_live_simulator.pyUse uv run .\secure_live_simulator_native_torch.py instead if you want native PyTorch (no INT8 OpenVINO model). Details, GUI controls, and model-conversion steps are in the folder READMEs.