Herdmark Biometric identity register
API up Embedder unknown Gallery 88
Not part of the walkthrough

Diagnostics

Pre-flight. Run this half an hour before the meeting, not five minutes before. Everything on this page should read the way the table says before you start clicking.

Backend

Mode Live API
Reachable yes
API key set yes
Databaseup
Embedding backend Embedding backend not reported
Model— · —
Gallery size88
Policy versionv3-unl-real-perframe
Raw /healthz
{
  "checks": {
    "database": {
      "active_policy_version": "v3-unl-real-perframe",
      "animals": 51,
      "status": "up",
      "templates": 88
    },
    "embedding": {
      "http_status": 200,
      "status": "up",
      "url": "internal service \u0027embedding\u0027 on port 8081"
    },
    "storage": {
      "path": "/repo/data",
      "status": "up"
    }
  },
  "enrolment_fusion": "off",
  "status": "ok",
  "version": "0.1.0"
}

Container-only service addresses in this body are described in prose rather than printed as URLs — the API reports the embedding service by its compose hostname, which resolves nowhere outside the container network.

Addresses

Two different things, and confusing them is what put dead links in front of a phone camera. The server-to-server address is a Docker hostname; the browser-facing one must be something a browser, and a QR scanner, can actually resolve.

Internal API address (server → server) service name api · port 8080 · http container-only — not reachable from a browser
Browser-facing API https://herdmark.co.za
SourcePUBLIC_API_URL
PUBLIC_API_URLhttps://herdmark.co.za
Console originhttps://herdmark.co.za

In production behind herdmark.co.za, set PUBLIC_API_URL to the public API origin (for example https://api.herdmark.co.za) and PUBLIC_BASE_URL to the console origin. Without them the console derives the API address from the host the browser used, which is right for a laptop demo and for a phone on the same network, and is never a Docker hostname.

Capture gallery

Directory/repo/data/gallery
Imagery real photographs UNL Beef Cattle Muzzle/Noseprint database · CC BY 4.0 · single session, not a re-visit
Bursts found24
Animals held out 1 cattle_9798 — the no_match supply for step 4

"In the register" is read live, by matching the gallery's animal identifier and then its label against the register's tag numbers — not from the manifest, which cannot know what was held out and would be wrong about it after a rehearsal on step 2 anyway.

BurstKindIn the registerExpected outcomeFramesAnimal reference
d302b41c-533d-5f06-b11d-1aa506d13e5c Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 82db8118
7361dd50-9a17-5823-b7f2-5c7250399749 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 79024f29
d8d77c1e-171b-5e95-895d-7533d4d2ff79 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 eeafbb9c
5a3eea6a-2146-5fdf-bf6a-be1279585f7a Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 12a94478
5036ea7c-360b-57bf-82ea-b19bc7196ef9 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 8ddf7bac
35812d4f-9545-55c2-a5af-04e3d3cab3fd Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 f79979cc
133d2cf0-9a04-55fb-9ee6-50715c875fb2 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 ae33f6f9
dc5c8eda-901b-5054-910d-7bd0ad355bb4 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 77a1998e
48e5268b-b195-522a-9281-96c66e66c9f1 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 b0cccd56
74bf7523-cd7e-5412-9741-791a828e6bb5 Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 3e2e89b8
a2b1b46f-6f65-523b-a12b-93105a0a90db Second group of frames of the same animal yes varies same-session frames — measured across all three bands 2 b4ed4982
f4d362f2-bfb4-536b-a22f-f8b6f60f18f8 Second group of frames of the same animal held out no_match 2 26d8d544
cb15dab4-364c-5469-8332-bcfc7c10a063 Original enrollment capture yes match 12 82db8118
fdcd991b-455e-5204-a587-3a0f130ab469 Original enrollment capture yes match 12 79024f29
0b22f1b1-d175-584e-a423-3fb037ba7777 Original enrollment capture yes match 12 eeafbb9c
9e641372-13ce-5529-9d59-55bc5ecfb420 Original enrollment capture yes match 12 12a94478
f18a9759-dea4-5d1b-9ccb-10adb1673051 Original enrollment capture yes match 12 8ddf7bac
56474289-36a9-53b3-86a1-2a0f2c10e974 Original enrollment capture yes match 12 f79979cc
f64fd825-1080-502d-8f71-926e8aa67bfe Original enrollment capture yes match 12 ae33f6f9
b463bee5-7288-58e8-a2ba-433184e4ae85 Original enrollment capture yes match 12 77a1998e
458c7587-3943-578f-b3ba-990c2b3741a3 Original enrollment capture yes match 12 b0cccd56
69ec8452-65a7-5558-a4cf-1e3b7ae70d1f Original enrollment capture yes match 12 3e2e89b8
6b49ef5b-d816-56f1-a373-1306d2c34bfe Original enrollment capture yes match 12 b4ed4982
1978d960-7458-5a7f-9f7e-636d9270f3ee Original enrollment capture held out no_match 12 26d8d544

Reference data discovered

Parties0
Holdings0
Operators0

These endpoints are not pinned by the contract, so they are best-effort. If they are empty the enrollment form falls back to free-text identifier fields, and you can pin the demo records with DEMO_OWNER_PARTY_ID, DEMO_HOLDING_ID, DEMO_OPERATOR_ID, DEMO_LIEN_ANIMAL_ID, DEMO_CERT_ID and DEMO_TRANSFER_TO_PARTY_ID.