Files
infra-docker-configs/servers/unraid/tail2-pose-server/DEPLOYMENT.md
T

1.7 KiB

Tail 2 pose server

GPU-only, receive-only NDI inference service. It never saves frames/crops and has no PTZ, shell, upload, cloud, identity, or action-classification API.

  • API: http://192.168.50.100:18120
  • Token: /mnt/user/appdata/tail2-pose-server/secrets/api-token (mode 0600)
  • Source: TAIL 2_1621D2 (OBSBOT) / 192.168.50.207
  • Coordinate contract: unmodified NDI buffer, no horizontal flip
  • Models: official OpenMMLab RTMDet-tiny and RTMW-m 256x192. RTMDet-m/RTMW-l were tested first but failed the 15 FPS requirement. Model hashes are in models/SHA256SUMS.
  • NDI binding: cyndilib 0.1.1 and its distributed NDI runtime. NDI's redistributable license applies; do not redistribute the image outside this private deployment without reviewing that license.

Rotate the integration token after onboarding clients:

umask 077
printf 'tail2_%s' "$(head -c 48 /dev/urandom | base64 | tr -d '\n=/+')" > /mnt/user/appdata/tail2-pose-server/secrets/api-token
docker compose restart tail2-pose-server

Current acceptance status

blocked for the requested performance SLO only. Functional/API/privacy/stability acceptance passed, including a 600.072-second NDI soak with 6,355 strictly increasing messages and no WS failures. Live p50/p95/p99 source-to-send latency was 91.629/122.584/139.033 ms (~10.59 output FPS), so p95 exceeds 100 ms and output is below 15 FPS. Offline 1/2/4-person p50 was 144.228/154.546/153.313 ms. No OOM; maximum selected-GPU memory was 14,145 MiB and temperature 43 C.

The one-shot validation services are profile-gated and do not run during normal Arcane lifecycle:

docker compose --profile validation up validate
docker compose --profile validation up soak