feat(deploy): add brain/app roles for GPU-split deployment
Run the GPU-heavy compute (Whisper STT, Ollama LLM, TTS) on a dedicated brain host and the bot + browser on a separate no-GPU app host, talking over the LAN. - supervisord: new `brain` role (bridge only) and `app` role (bot + desktop/Chrome, no local bridge); `full`/`browser`/`bot` unchanged. - compose: make BRIDGE_URL overridable (was hardcoded to loopback, which prevented the bot from reaching a remote bridge). - docs: DEPLOY.md "GPU split" layout with per-host .env blocks; document the new roles in run-if-role.sh and .env.example. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@ serverurl=unix:///run/supervisor.sock
|
||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[program:xvnc]
|
||||
command=/app/docker/run-if-role.sh full,browser /app/docker/run-xvnc.sh
|
||||
command=/app/docker/run-if-role.sh full,browser,app /app/docker/run-xvnc.sh
|
||||
priority=100
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -23,7 +23,7 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:pulse]
|
||||
command=/app/docker/run-if-role.sh full,browser /app/docker/run-pulse.sh
|
||||
command=/app/docker/run-if-role.sh full,browser,app /app/docker/run-pulse.sh
|
||||
priority=150
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -32,7 +32,7 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:xfce]
|
||||
command=/app/docker/run-if-role.sh full,browser /app/docker/run-xfce.sh
|
||||
command=/app/docker/run-if-role.sh full,browser,app /app/docker/run-xfce.sh
|
||||
priority=200
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -41,7 +41,7 @@ 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
|
||||
command=/app/docker/run-if-role.sh full,browser,app websockify --web=/usr/share/novnc 6080 localhost:5901
|
||||
priority=250
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -53,7 +53,7 @@ stderr_logfile_maxbytes=0
|
||||
# the bridge via the `edge-tts` package — no warm model/worker is needed.)
|
||||
|
||||
[program:bridge]
|
||||
command=/app/docker/run-if-role.sh full,bot /opt/venv/bin/python -m bridge.server
|
||||
command=/app/docker/run-if-role.sh full,bot,brain /opt/venv/bin/python -m bridge.server
|
||||
directory=/app
|
||||
priority=300
|
||||
autorestart=true
|
||||
@@ -63,7 +63,7 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:chrome]
|
||||
command=/app/docker/run-if-role.sh full,browser /app/docker/run-chrome.sh
|
||||
command=/app/docker/run-if-role.sh full,browser,app /app/docker/run-chrome.sh
|
||||
priority=350
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -75,7 +75,7 @@ stderr_logfile_maxbytes=0
|
||||
; 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
|
||||
command=/app/docker/run-if-role.sh full,browser,app node /app/bot/scripts/stream-test/control-server.mjs
|
||||
directory=/app/bot
|
||||
priority=360
|
||||
autorestart=true
|
||||
@@ -85,7 +85,7 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:bot]
|
||||
command=/app/docker/run-if-role.sh full,bot /app/docker/run-bot.sh
|
||||
command=/app/docker/run-if-role.sh full,bot,app /app/docker/run-bot.sh
|
||||
directory=/app/bot
|
||||
priority=400
|
||||
autorestart=true
|
||||
|
||||
Reference in New Issue
Block a user