main.cpp) — there’s no
hot-reload or runtime config endpoint. Restart the process to change any of
these.
Model paths
default:"/app/models/face_detection_yunet.onnx"
Filesystem path to the YuNet ONNX detector model. The
/app/models/...
default matches the Docker image’s mount point (see Deployment);
override for local builds.default:"/app/models/arcface_w600k_r50.onnx"
Filesystem path to the ArcFace ONNX embedder model.
Inference
default:"cpu"
ONNX Runtime execution provider for the embedder session.
"cpu" or
"cuda". If "cuda" is requested but unavailable, the service logs a
warning and falls back to CPU rather than failing startup.default:"1"
Threads ONNX Runtime uses internally for a single inference call. Kept
low by default since parallelism across requests is handled by
FACE_ENGINE_WORKERS instead — see Concurrency model.HTTP server
default:"8080"
TCP port Drogon listens on.
default:"2"
Number of Drogon event-loop threads. These only handle connection I/O —
never CPU-bound work — so this rarely needs to scale with core count.
default:"hardware_concurrency()"
Size of the worker thread pool that runs all decode/align/inference work.
Defaults to the number of logical cores detected on the host/container.
Comparison behavior
default:"0.4"
Cosine-similarity threshold
/v1/compare uses to decide match: true vs
false. The default was set from a small manual validation set (4
genuine same-person pairs scored 0.52–0.67; 41 cross-identity pairs
topped out at 0.32) — not a calibrated FAR/FRR curve. Validate
against your own labeled dataset before trusting this in production; see
Models → Similarity threshold for the
full methodology.Liveness
default:"0.85"
Minimum YuNet detector confidence for
/v1/liveness
to pass. Stricter than the 0.8 detection floor used for embed/compare,
since a spoofed/printed face often detects with lower confidence than a
live one.default:"50.0"
Minimum Laplacian-variance sharpness over the detected face crop. Not
calibrated against a labeled dataset — override once one exists. See
Models → Liveness heuristic.
default:"0.03"
Minimum face bounding-box area as a fraction of the full frame. Rejects
implausibly-small-face captures, common in low-effort photo-of-a-photo
attacks shot from too far back.
Model version
default:"arcface-w600k_r50-v1"
Explicit version identifier returned by
/v1/version.
Not derivable from EMBEDDER_MODEL_PATH/DETECTOR_MODEL_PATH alone —
bump this whenever the deployed model file changes, even if the filename
doesn’t, so downstream consumers that store this value per embedding can
detect drift.