Face Matcher in the corridor
Face Matcher is the real-time face identification server the corridor is built on. It is a product in its own right with its own documentation; this page only covers what the corridor takes from it and how the two are joined.
What the corridor takes from Face Matcher
- Cameras — every corridor camera is a Face Matcher camera (server-side RTSP or an edge stream). Register and tune them in Station or through the REST API; the corridor only maps camera IDs to units.
- Watchlists and members — enrolled in Face Matcher (Manage Watchlists, Watchlists). The corridor only knows which watchlist IDs grant GREEN clearance.
- The identification stream — every match, no-match and condition violation Face Matcher publishes, which the VPP Adapter turns into corridor events. Detection sensitivity, matching thresholds and liveness are Face Matcher settings: see Detection and Matching Settings and Tuning Identification.
The Hub's GraphQL API additionally proxies cameras, watchlists and members read-only for the dashboard; it never writes to Face Matcher. Management always happens on the Face Matcher side.
The vendored copy and the integration list
The smart-corridor package ships Face Matcher as a byte-identical copy of its release in the face-matcher/ folder — never edited, replaced as a whole on upgrade, started first by start.sh. The corridor services join face-matcher-network and depend on Face Matcher only through its published integration list: the network name, six container names and ports (api:8080, graphql-api:8080, fm-station:8000, rmq, pgsql, seaweedfs), the credentials, the license file and the start order. Because that boundary is explicit, the vendored copy can be replaced by a separately deployed Face Matcher in a future release without touching the corridor services. See Architecture and Network Ports on the Face Matcher side.
VPP Adapter
The VPP Adapter is the Hub component that bridges Face Matcher's identification events to the Hub's unified event model; it keeps its historical name from Face Matcher's predecessor, and so does its setting VPP_ADAPTER_ALLOWED_WATCHLISTS. It subscribes to Face Matcher's GraphQL endpoint, determines the identification outcome of each event, and publishes normalized notifications to the biometric_events exchange. It contains no business logic — only translation and routing.
| Topic published | Trigger |
|---|---|
identification.match | Face matched against any watchlist |
identification.no_match | No match found in any watchlist |
identification.clearance.green | Match on a watchlist listed in VPP_ADAPTER_ALLOWED_WATCHLISTS |
identification.clearance.red | Match on any other watchlist |
identification.condition_violation | Face obscured — identification not possible |
See the Event Catalog for the full topic list and Add People to Watchlists for the clearance wiring.