All posts
3 min read

Zero-Trust at the Edge: Securing AI Telemetry over PtMP Networks

Drone and fixed-camera inference on ruggedised edge hardware, where the egress policy blocks the vendor cloud and only a WireGuard tunnel leaves the site.

Running an AI model inside a cloud VPC is a solved problem. Running it on ruggedised hardware at the network edge, across 21 live telemetry feeds, with results crossing a Point-to-Multipoint wireless link, is not — because the link itself is physically reachable by anyone within range.

For an AI surveillance deployment we provisioned NVIDIA RTX 4000 servers directly at the edge. The exposure was specific: RTSP and RTMP video feeds, plus PostgreSQL telemetry, travelling over wireless segments that offer no physical security at all.

EDGE AI SURVEILLANCE WITH CONTROLLED EGRESSPERCEPTION LAYERair and groundEDGE COMPUTE · ON-SITESITE SERVICESEGRESSSITE POWERDJI Matrice 30TOcuSync 3.0 to RC PlusCP Plus camerasPTZ · fixed, RTSPFirewallsegmentation · egress controlMediaMTXRTMP to RTSPDeepStream serverinference · object detectionEMQX brokerMQTT telemetry + commandsService APIauth · licensing · statePostgreSQLtelemetry of recordWireGuard / Tailscalethe only way outRemote HQ dashboardannotated RTSP · WebRTCDJI cloud serversoutbound deniedBLOCKEDGenus MaxiLion UPSLiFePO4 2400VA1. feeds on site2. RTSP videoinbound filtered3. translated RTSP4. detections5. MQTT telemetry6. read / write7. only over wg08. encrypted to HQdropped at the firewallpowers the stacknumbered happy pathblocked egress / power
The blocked path matters as much as the permitted one: the drone stack is prevented from reaching DJI's own servers, and telemetry leaves only over the VPN.

What the site actually runs

  1. A DJI Matrice 30T flies the site, paired to a DJI RC Plus controller over OcuSync 3.0, alongside fixed and PTZ CP Plus cameras on the ground.
  2. Camera feeds arrive at the edge stack as RTSP, through a firewall that segments the site network.
  3. MediaMTX translates the controller's RTMP stream into RTSP so everything downstream sees one protocol.
  4. An NVIDIA DeepStream inference server runs YOLOv8 object detection over those streams and produces annotated video.
  5. Detections and device state flow through an EMQX broker as MQTT telemetry and commands.
  6. A service API handles authentication, licensing and state, reading and writing PostgreSQL.
  7. Nothing leaves the site except over the WireGuard tunnel.
  8. The remote HQ dashboard consumes annotated RTSP and WebRTC across that tunnel.

A LiFePO4 UPS powers the whole edge stack, because an inference server that browns out mid-flight is an availability problem before it is a security one.

The blocked path matters as much as the permitted one

The most important arrow in that diagram is the one that stops. Consumer drone platforms phone home by default, and this deployment sends nothing to DJI's cloud servers — outbound traffic to them is dropped at the firewall. Video, telemetry and device state stay on site or cross the VPN, and nowhere else.

That is the difference between a VPN and a security model. Three controls make it one:

Split-tunnelling. Only sensitive telemetry bound for the cloud is routed through wg0. Local device management stays strictly local and never enters the tunnel.

Default-deny egress. Host iptables rules drop any outbound packet that did not originate from the WireGuard interface or the authorised Docker bridge, so a compromised container has no route out.

DNS sinkholing. Pi-hole as the primary resolver blocks unauthorised internal queries, which removes the lookup that malware needs before it can call home.

Why WireGuard rather than IPSec

IPSec and OpenVPN carry enough cryptographic and protocol overhead to hurt on a constrained wireless link, where the latency budget is already thin. WireGuard runs in Linux kernel space and uses ChaCha20 with Poly1305, which gives modern cryptography at close to no latency cost — the property that matters when the transport is the weak point.

If the wireless link drops, inference continues locally and PostgreSQL keeps recording; only the path to HQ is interrupted.

The deployment has sustained 99.9% uptime over 90+ days with no packet interception and no security breach.