Docker
The Docker setup gives you a persistent, restart-safe service scoped to the directories you mount.
Bring it up
Section titled “Bring it up”cp .env.example .env # set AUTH_TOKENdocker compose up -d --buildMount the host dirs you want scanned as read-only subpaths under /skills in
docker-compose.yml. The first build downloads the embedding model into the
image (~90 MB); subsequent runs are fully offline.
Compose details:
- a named volume holds the live index (
DB_PATH=/data/registry.db), restart: unless-stopped,- port 8765 published on loopback,
HOST=0.0.0.0inside the container +AUTH_TOKENfrom the gitignored.env(binding off loopback requires a token).
Serving a pre-built index
Section titled “Serving a pre-built index”For a container that serves an index built elsewhere (no scan roots mounted),
set SCAN_ON_BOOT=false — the server serves the persisted index instantly —
and refresh by copying a new database in:
node scripts/scan-once.mjs qm.db auto # build/refresh the index nativelydocker cp qm.db quartermaster:/data/registry.dbdocker restart quartermasterIn-container reindex is a no-op in that layout, because no scan roots are
mounted.
Feeding it from other machines
Section titled “Feeding it from other machines”A hub container can also receive pushes from the thin collector running on any other machine — no model or database needed on the source side.