[supervisord] nodaemon=true user=root logfile=/var/log/supervisord.log pidfile=/run/supervisord.pid [unix_http_server] file=/run/supervisor.sock [supervisorctl] serverurl=unix:///run/supervisor.sock [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [program:xvnc] command=/app/docker/run-if-role.sh full,browser /app/docker/run-xvnc.sh priority=100 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:pulse] command=/app/docker/run-if-role.sh full,browser /app/docker/run-pulse.sh priority=150 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:xfce] command=/app/docker/run-if-role.sh full,browser /app/docker/run-xfce.sh priority=200 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:novnc] command=/app/docker/run-if-role.sh full,browser websockify --web=/usr/share/novnc 6080 localhost:5901 priority=250 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:xtts-worker] ; Warm Coqui XTTS-v2 Korean voice (natural female "Ana Florence") in its own ; py3.11 venv. The bridge's synthesize() POSTs here; if this is down the bridge ; falls back to Piper (English) only when XTTS_FALLBACK_PIPER=1. command=/app/docker/run-if-role.sh full,bot /opt/xtts/bin/python /app/bridge/xtts_worker.py directory=/app ; TTS_HOME points at the dedicated, image-baked XTTS cache (warmed in ; setup-xtts.sh). The brain's whisper_cache volume is mounted over ; /root/.cache, so a dedicated non-volume cache dir avoids the baked model being ; shadowed and re-downloaded (which would fail if the host is offline). ; XTTS_DEVICE / XTTS_SPEAKER / XTTS_LANGUAGE inherit from the container env ; (compose sets them with defaults: cuda / "Ana Florence" / ko). supervisord ; interpolates %(ENV_x)s from its own environment, which is the container's — so ; these must always be set in the env (compose guarantees it) or this expansion ; fails at startup. COQUI_TOS_AGREED accepts the non-commercial XTTS license. environment=XTTS_DEVICE="%(ENV_XTTS_DEVICE)s",XTTS_SPEAKER="%(ENV_XTTS_SPEAKER)s",XTTS_LANGUAGE="%(ENV_XTTS_LANGUAGE)s",XTTS_WORKER_HOST="127.0.0.1",XTTS_WORKER_PORT="8771",TTS_HOME="/opt/xtts-cache",COQUI_TOS_AGREED="1" priority=280 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:bridge] command=/app/docker/run-if-role.sh full,bot /opt/venv/bin/python -m bridge.server directory=/app priority=300 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:chrome] command=/app/docker/run-if-role.sh full,browser /app/docker/run-chrome.sh priority=350 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:control-server] ; Browser-control HTTP endpoint on the BROWSER HOST. A remote `bot` posts ; commands here so xdotool / CDP run on THIS machine (real input on this ; screen). Only meaningful in full/browser roles. Internal network only. command=/app/docker/run-if-role.sh full,browser node /app/bot/scripts/stream-test/control-server.mjs directory=/app/bot priority=360 autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:bot] command=/app/docker/run-if-role.sh full,bot /app/docker/run-bot.sh directory=/app/bot priority=400 autorestart=true startretries=999 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0