Prerequisites
Stand up Milestone XProtect and the AI Bridge before installing EyePop
The EyePop runtimes runs as an additional container inside an existing Milestone AI Bridge deployment. Before you install EyePop, you need XProtect and the AI Bridge running. This page gets the AI Bridge up; Milestone's own documentation is the authority for XProtect and administration.
Requirements
Milestone XProtect with AI Bridge.
Docker and Docker Compose on the host that will run the AI Bridge and the EyePop runtime.
Outbound access from that host to EyePop Cloud (
compute.eyepop.ai) for inference.One inbound port (default 7070) reachable from wherever Management Client runs, so its embedded browser can load the EyePop management page.
An EyePop account and API key.
1. XProtect, roles, and users
Install XProtect and configure it per Milestone's documentation. AI Bridge's preconfiguration lives in Milestone's configuration:
The AI Bridge admin plugin in Management Client.
A role with the permissions the bridge needs.
A dedicated user for the bridge to authenticate to the VMS.
That user's credentials become VMS_USER and VMS_PASS in the AI Bridge .env in the next step. Follow Milestone's docs for the exact steps — doc.milestonesys.com/AIB/Help/Latest/en-US.
You also need at least one camera feeding video into XProtect. If you don't have a physical camera, Milestone's StableFPS driver adds synthetic test devices; confirm the camera shows live video in Smart Client before continuing.
2. Run the AI Bridge
The AI Bridge ships as a Docker Compose deployment. Milestone provides the files, and here are the steps to use those milestone resources:
Download the AI Bridge resources from milestonesys.com/…?prod=2128. This downloads a zip; unzip it.
Go to the AWS Compose deployment inside the unzipped folder:
Name of the version can be different depending on the version of the AI bridge you downloaded it.
It contains docker-compose-production.yml and an .env file. The container images it pulls come from the public AWS ECR gallery, gallery.ecr.aws/milestonesys/aibridge.
Set the VMS connection in
.env:VariableValueVMS_USERThe bridge user you created in step 1.
VMS_PASSThat user's password.
VMS_URLThe XProtect address — depends on your layout, 2A - Same Host or 2B - External Host below.
If you are unsure what value to put for VMS_URL, it can be found in Management Client on the left panel "Site Navigation", you will see your server name, right click on Properties..., you will see the URL Alternate Addreses i.e. http://opa-1:80/
Milestone supports running the AI bridge on the same host or external host. In step 2 we are going to pick the layout that matches where XProtect runs relative to the AI Bridge host.
2A. Same host as XProtect
In this deployment: XProtect, the AI Bridge, and the EyePop app all run on one Windows host.
The bridge's containers can't resolve the XProtect hostname through Docker DNS, so you need to map it to the host gateway. To do so, find docker-compose-production.yml, add an extra_hosts entry — pointing your computer name at host-gateway — on each service that talks to the VMS:
host-gateway resolves to the host machine automatically, so you don't hardcode an IP. Set VMS_URL to your XProtect address using that same name, e.g. https://<your-computer-name>.
2B. External host
In this deployment: The AI Bridge and the EyePop runtime are deployed together on a dedicated host, separate from XProtect but on the same network. Set VMS_URL to XProtect's address on the network — a hostname or IP reachable from the AI Bridge host.
Start the AI Bridge
The AI Bridge registers itself with XProtect and appears in Management Client under Processing Servers.
Note the KAFKA_LOG_RETENTION_MS value in this AI Bridge .env. The EyePop app's own .env must set the same value — a mismatch silently breaks detection of a camera being unsubscribed. See Configuration.
Next steps
With XProtect and the AI Bridge running, install the EyePop runtime on the AI Bridge host.
Configuration — install the EyePop container,
.env, and the API keyRunning Detection — subscribe a camera and see bounding boxes
Last updated
