Both the 10 pipeline workers and the dashboard web UI run under supervisord
(replacing the old systemd --user wildlife@<name> units and the dashboard Docker
container). The workers are the wildlife group; the dashboard is a standalone
dashboard program.
wildlife.conf— the 10 worker programs ([program:<worker>]) +[group:wildlife].dashboard.conf— the dashboard program (wildlife dashboardon :8080), run on the host (editable install → serves livesrc/code). Standalone, not in the group.web.conf— enables the supervisord web UI ([inet_http_server]) on port 9999.install-supervisor.sh— installs supervisor (if needed), retires the oldsystemd --userunits, stops the Docker dashboard container, copies all*.confinto/etc/supervisor/conf.d/, and restarts supervisord.
The web UI now runs on the host as the dashboard supervisor program (not Docker),
serving the live src/wildlife/dashboard code on :8080. After editing dashboard code,
sudo supervisorctl restart dashboard (templates reload per request without a restart).
Revert to Docker: sudo supervisorctl stop dashboard then docker compose up -d dashboard.
Browser control at http://<server>:9999/ (e.g. http://192.168.1.64:9999/) —
view every worker and start/stop/restart/tail-log from the page. Basic auth, default
wildlife / wildlife (change it in web.conf, then re-run the install script).
Editing web.conf needs a full restart to apply (sudo systemctl restart supervisor,
which the install script does); reread/update won't pick up the web-server section.
Run on the server as bryan (not sudo — the script sudo's the root bits itself):
bash deploy/supervisor/install-supervisor.shRe-run any time after editing wildlife.conf to push changes and reload.
sudo supervisorctl status wildlife:* # all workers
sudo supervisorctl restart wildlife:animal-gate # one worker
sudo supervisorctl stop wildlife:* # stop everything
sudo supervisorctl start wildlife:* # start everything
sudo supervisorctl tail -f wildlife:animal-gate # follow a worker's logPer-worker logs also land in state/logs/<worker>.log (rotated, 10 MB × 3).
resmon, sd-import, ingest, animal-gate, audio-cleanup, species-visual, species-audio, caption-assembler, highlight-curator, stream-compiler
sudo supervisorctl stop wildlife:*
sudo rm /etc/supervisor/conf.d/wildlife.conf && sudo supervisorctl update
for w in resmon sd-import ingest animal-gate audio-cleanup species-visual \
species-audio caption-assembler highlight-curator stream-compiler; do
systemctl --user enable --now "wildlife@${w}.service"
doneThat button (Config page) drops a request the resmon worker acts on by running
systemctl --user restart wildlife@*. After moving to supervisor those user units
are gone, so the button no longer restarts anything — use supervisorctl instead
(or ask to have resmon rewired to call supervisorctl). The compilation render
bridge is unaffected.