Files
siloqy/prod/supervisor/dolphin-supervisord.conf

407 lines
17 KiB
Plaintext
Raw Normal View History

; =============================================================================
; Dolphin Service Supervisor Configuration
; Industrial-grade process management using Supervisor
; =============================================================================
[supervisord]
environment=DOLPHIN_LOG_ROOT="/tmp/dolphin_logs",PYTHONPATH="/mnt/dolphinng5_predict/prod:/mnt/dolphinng5_predict/prod/clean_arch",HZ_HOST="localhost:5701"
logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/supervisord.pid
nodaemon=false
minfds=1024
minprocs=200
user=root
directory=/mnt/dolphinng5_predict/prod
[unix_http_server]
file=/tmp/dolphin-supervisor.sock
chmod=0777
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/dolphin-supervisor.sock
; =============================================================================
; TRADING SERVICES (Migrated from systemd)
; =============================================================================
[program:clean_arch_trader]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/clean_arch/main.py
directory=/mnt/dolphinng5_predict/prod/clean_arch
autostart=false
autorestart=true
startsecs=10
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/clean_arch_trader.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/clean_arch_trader-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict/prod:/mnt/dolphinng5_predict/prod/clean_arch",HZ_HOST="localhost:5701"
[program:nautilus_trader]
; BLUE live-mainnet Nautilus trader. Canonical path is /mnt/dolphinng5_predict/prod/.
; DO NOT point this at /tmp/blue_runtime_mirror/ — /tmp is volatile and wiped on reboot.
PINK Phase 0: FET -$5,990 fix batch — leverage-free PnL, true fill prices, reconcile baseline anchors Defects fix (FET -$5,990 replay, 2026-06-11): - realized_pnl() and mark_price(): PnL = qty × Δprice, side-signed; no ×leverage inflation (was 3× every leg). - BingX MARKET fill events carry true fill price (avgPrice/lastFillPrice), never the order's nominal price (protective bound ±20-25% from mark, poisoned PnL to -$5,990 on a +$164 round-trip). - Fill routing by ORDER IDENTITY first, FSM state second — late entry-remainder fills during EXIT_WORKING no longer misclassify as exits. - Entry basis = VWAP across entry fills, not last fill price. - reconcile_from_slots / restore_state: re-anchor _last_settled_pnl / _slot_was_closed to adopted slot state (cross-restart double-book of carried PnL). - ACCOUNT_UPDATE with wallet_balance=0 dropped (margin-only frames no longer zero e_available_margin). - Foreign-fill skip on shared VST account (PRODGREEN collision filter). - exec_router TTL: entry-requote venue-truth gate (recent own fill + live exchange position probes prevent double-entry). - bingx_direct: openOrders fetched BEFORE positions (sequential ordering prevents dangerous tear → double-entries). - Dual-leverage translation via map_internal_conviction_to_exchange_leverage() (strategy conviction → integer at-exchange leverage, bankers rounding). - BLUE-parity alpha components wired: asset picker (IRP universe ranking) + alpha sizer (cubic-convex dynamic leverage, 0.5-8.0 range). - ch_writer: date_time_input_format=best_effort on insert URLs; flush error logging at WARNING with counter. - blue_parity.price_of(): hyphen-tolerant fallback (FET-USDT → FETUSDT). - Fill test updated to incremental filled_size semantics (BingX WS lastFilledQty). - Env-override base URLs, supervisord autorestart, per-asset DC histories, single-slot invariant, fill-attribution filter. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-06-11 20:53:49 +02:00
; autorestart=true (2026-06-10): pairs with the in-process scan-flow watchdog,
; which exits 86 when the scan path stalls (3 silent deaf-trader incidents on
; 2026-06-09). Operator stop via supervisorctl still sticks — autorestart only
; applies to unexpected process death, not STOPPED state.
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/nautilus_event_trader.py
directory=/mnt/dolphinng5_predict/prod
autostart=false
PINK Phase 0: FET -$5,990 fix batch — leverage-free PnL, true fill prices, reconcile baseline anchors Defects fix (FET -$5,990 replay, 2026-06-11): - realized_pnl() and mark_price(): PnL = qty × Δprice, side-signed; no ×leverage inflation (was 3× every leg). - BingX MARKET fill events carry true fill price (avgPrice/lastFillPrice), never the order's nominal price (protective bound ±20-25% from mark, poisoned PnL to -$5,990 on a +$164 round-trip). - Fill routing by ORDER IDENTITY first, FSM state second — late entry-remainder fills during EXIT_WORKING no longer misclassify as exits. - Entry basis = VWAP across entry fills, not last fill price. - reconcile_from_slots / restore_state: re-anchor _last_settled_pnl / _slot_was_closed to adopted slot state (cross-restart double-book of carried PnL). - ACCOUNT_UPDATE with wallet_balance=0 dropped (margin-only frames no longer zero e_available_margin). - Foreign-fill skip on shared VST account (PRODGREEN collision filter). - exec_router TTL: entry-requote venue-truth gate (recent own fill + live exchange position probes prevent double-entry). - bingx_direct: openOrders fetched BEFORE positions (sequential ordering prevents dangerous tear → double-entries). - Dual-leverage translation via map_internal_conviction_to_exchange_leverage() (strategy conviction → integer at-exchange leverage, bankers rounding). - BLUE-parity alpha components wired: asset picker (IRP universe ranking) + alpha sizer (cubic-convex dynamic leverage, 0.5-8.0 range). - ch_writer: date_time_input_format=best_effort on insert URLs; flush error logging at WARNING with counter. - blue_parity.price_of(): hyphen-tolerant fallback (FET-USDT → FETUSDT). - Fill test updated to incremental filled_size semantics (BingX WS lastFilledQty). - Env-override base URLs, supervisord autorestart, per-asset DC histories, single-slot invariant, fill-attribution filter. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-06-11 20:53:49 +02:00
autorestart=true
startsecs=10
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/nautilus_trader.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/nautilus_trader-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
PINK Phase 0: FET -$5,990 fix batch — leverage-free PnL, true fill prices, reconcile baseline anchors Defects fix (FET -$5,990 replay, 2026-06-11): - realized_pnl() and mark_price(): PnL = qty × Δprice, side-signed; no ×leverage inflation (was 3× every leg). - BingX MARKET fill events carry true fill price (avgPrice/lastFillPrice), never the order's nominal price (protective bound ±20-25% from mark, poisoned PnL to -$5,990 on a +$164 round-trip). - Fill routing by ORDER IDENTITY first, FSM state second — late entry-remainder fills during EXIT_WORKING no longer misclassify as exits. - Entry basis = VWAP across entry fills, not last fill price. - reconcile_from_slots / restore_state: re-anchor _last_settled_pnl / _slot_was_closed to adopted slot state (cross-restart double-book of carried PnL). - ACCOUNT_UPDATE with wallet_balance=0 dropped (margin-only frames no longer zero e_available_margin). - Foreign-fill skip on shared VST account (PRODGREEN collision filter). - exec_router TTL: entry-requote venue-truth gate (recent own fill + live exchange position probes prevent double-entry). - bingx_direct: openOrders fetched BEFORE positions (sequential ordering prevents dangerous tear → double-entries). - Dual-leverage translation via map_internal_conviction_to_exchange_leverage() (strategy conviction → integer at-exchange leverage, bankers rounding). - BLUE-parity alpha components wired: asset picker (IRP universe ranking) + alpha sizer (cubic-convex dynamic leverage, 0.5-8.0 range). - ch_writer: date_time_input_format=best_effort on insert URLs; flush error logging at WARNING with counter. - blue_parity.price_of(): hyphen-tolerant fallback (FET-USDT → FETUSDT). - Fill test updated to incremental filled_size semantics (BingX WS lastFilledQty). - Env-override base URLs, supervisord autorestart, per-asset DC histories, single-slot invariant, fill-attribution filter. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-06-11 20:53:49 +02:00
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/prod",DOLPHIN_LOCAL_RUNTIME_ROOT="/mnt/dolphinng5_predict",PREFECT_API_URL="http://localhost:4200/api",PYTHONUNBUFFERED="1",DOLPHIN_DATA_VENUE="BINANCE",DOLPHIN_EXEC_VENUE="BINGX",DOLPHIN_BINGX_ENV="LIVE",DOLPHIN_BINGX_ALLOW_MAINNET="1",DOLPHIN_TRADER_ID="DOLPHIN-BINGX-001",DOLPHIN_BINGX_DEFAULT_LEVERAGE="1",DOLPHIN_BINGX_PREFER_WEBSOCKET="1",DOLPHIN_VOL_P60_THRESHOLD="0.00026414",DOLPHIN_ENABLE_ADVANCED_SL_LIVE="1",DOLPHIN_CATASTROPHIC_FLOOR_PCT="0.0120",DOLPHIN_OVERLAY_CATASTROPHIC_FLOOR_PCT="0.0050",DOLPHIN_OVERLAY_CATASTROPHIC_MAX_LOSS_USD="500",DOLPHIN_OVERLAY_ADVSL_LIVE="1",DOLPHIN_OVERLAY_ADVSL_MIN_BARS="6",DOLPHIN_OVERLAY_ADVSL_MFE_MAX_PCT="0.0020",DOLPHIN_OVERLAY_ADVSL_PRESSURE_MIN="1.85",DOLPHIN_OVERLAY_ADVSL_MAE_RISK_MIN="0.50",DOLPHIN_TRADE_LOG_DIR="/tmp/dolphin_logs/trader",DOLPHIN_MC_MODELS_DIR="",DOLPHIN_BINGX_BASE_URL_BACKUP="https://open-api.bingx.com"
rlimit_as=2GB
rlimit_nofile=1024
[program:dolphin_live]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/launch_dolphin_bingx.py
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=false
startsecs=15
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/dolphin_live_prodgreen.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
redirect_stderr=true
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin",PREFECT_API_URL="http://localhost:4200/api",PYTHONUNBUFFERED="1",DOLPHIN_DATA_VENUE="BINANCE",DOLPHIN_EXEC_VENUE="BINGX",DOLPHIN_BINGX_ENV="VST",DOLPHIN_BINGX_ALLOW_MAINNET="0",DOLPHIN_TRADER_ID="DOLPHIN-PRODGREEN-001",DOLPHIN_BINGX_DEFAULT_LEVERAGE="1",DOLPHIN_BINGX_PREFER_WEBSOCKET="1",DOLPHIN_BINGX_RECV_WINDOW_MS="60000"
[program:dolphin_pink]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/launch_dolphin_pink.py
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=true
startsecs=15
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/dolphin_live_pink.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
redirect_stderr=true
PINK Phase 0: FET -$5,990 fix batch — leverage-free PnL, true fill prices, reconcile baseline anchors Defects fix (FET -$5,990 replay, 2026-06-11): - realized_pnl() and mark_price(): PnL = qty × Δprice, side-signed; no ×leverage inflation (was 3× every leg). - BingX MARKET fill events carry true fill price (avgPrice/lastFillPrice), never the order's nominal price (protective bound ±20-25% from mark, poisoned PnL to -$5,990 on a +$164 round-trip). - Fill routing by ORDER IDENTITY first, FSM state second — late entry-remainder fills during EXIT_WORKING no longer misclassify as exits. - Entry basis = VWAP across entry fills, not last fill price. - reconcile_from_slots / restore_state: re-anchor _last_settled_pnl / _slot_was_closed to adopted slot state (cross-restart double-book of carried PnL). - ACCOUNT_UPDATE with wallet_balance=0 dropped (margin-only frames no longer zero e_available_margin). - Foreign-fill skip on shared VST account (PRODGREEN collision filter). - exec_router TTL: entry-requote venue-truth gate (recent own fill + live exchange position probes prevent double-entry). - bingx_direct: openOrders fetched BEFORE positions (sequential ordering prevents dangerous tear → double-entries). - Dual-leverage translation via map_internal_conviction_to_exchange_leverage() (strategy conviction → integer at-exchange leverage, bankers rounding). - BLUE-parity alpha components wired: asset picker (IRP universe ranking) + alpha sizer (cubic-convex dynamic leverage, 0.5-8.0 range). - ch_writer: date_time_input_format=best_effort on insert URLs; flush error logging at WARNING with counter. - blue_parity.price_of(): hyphen-tolerant fallback (FET-USDT → FETUSDT). - Fill test updated to incremental filled_size semantics (BingX WS lastFilledQty). - Env-override base URLs, supervisord autorestart, per-asset DC histories, single-slot invariant, fill-attribution filter. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-06-11 20:53:49 +02:00
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin",PREFECT_API_URL="http://localhost:4200/api",PYTHONUNBUFFERED="1",DOLPHIN_DATA_VENUE="BINANCE",DOLPHIN_EXEC_VENUE="BINGX",DOLPHIN_BINGX_ENV="VST",DOLPHIN_BINGX_ALLOW_MAINNET="0",DOLPHIN_TRADER_ID="DOLPHIN-PINK-001",DOLPHIN_BINGX_DEFAULT_LEVERAGE="1",DOLPHIN_BINGX_PREFER_WEBSOCKET="1",DOLPHIN_BINGX_RECV_WINDOW_MS="60000",DOLPHIN_PINK_PHASE="single_leg",DOLPHIN_PINK_VOL_P60_THRESHOLD="0.00008000",DOLPHIN_BINGX_BASE_URL_BACKUP="https://open-api-vst.bingx.com",DOLPHIN_PINK_EXEC_STYLE="maker_both",DOLPHIN_PINK_MAKER_ENTRY_TTL_S="8",DOLPHIN_PINK_MAKER_EXIT_TTL_S="5",DOLPHIN_PINK_MAKER_ENTRY_MISS="retry",DOLPHIN_PINK_MAKER_ENTRY_RETRIES="1",DOLPHIN_PINK_MAKER_RETRY_EXHAUST="skip",DOLPHIN_PINK_MAKER_OFFSET_TICKS="1",DOLPHIN_PINK_POST_ONLY="1"
; DITAv2 — supervised kernel, launched separately from the legacy PINK/BLUE stack.
[program:dita_v2]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/launch_dita_v2.py
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=true
startsecs=10
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/dita_v2.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/dita_v2-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/prod:/mnt/dolphinng5_predict/prod/clean_arch",PYTHONUNBUFFERED="1",DITA_V2_LAUNCHER_MODE="serve",DITA_V2_VENUE="BINGX",DITA_V2_ZINC="REAL",DITA_V2_CONTROL_PLANE="REAL_ZINC",DITA_V2_HAZELCAST="REAL",DITA_V2_MODE="DEBUG",DITA_V2_VERBOSITY="TRACE",DITA_V2_BACKEND_MODE="BINGX",DOLPHIN_BINGX_ENV="VST",DOLPHIN_BINGX_ALLOW_MAINNET="0",DOLPHIN_BINGX_DEFAULT_LEVERAGE="1",DOLPHIN_BINGX_PREFER_WEBSOCKET="1",DOLPHIN_BINGX_RECV_WINDOW_MS="60000"
[program:scan_bridge]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/scan_bridge_service.py
directory=/mnt/dolphinng5_predict/prod
; Direct NG7/NG8 → HZ is primary. Keep scan_bridge as manual fallback only.
autostart=false
autorestart=true
startsecs=5
startretries=5
stopwaitsecs=10
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/scan_bridge.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/scan_bridge-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict/prod"
; =============================================================================
; DATA PIPELINE SERVICES
; =============================================================================
[program:exf_fetcher]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/exf_fetcher_flow.py --warmup 15
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=20
startretries=5
stopwaitsecs=15
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/exf.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/exf-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/external_factors:/mnt/dolphinng5_predict/prod",PREFECT_API_URL="http://localhost:4200/api"
[program:acb_processor]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/acb_processor_service.py
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=10
startretries=5
stopwaitsecs=10
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/acb_processor.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/acb_processor-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/prod"
[program:meta_health]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/meta_health_service_v3.py
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=5
startretries=5
stopwaitsecs=10
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/meta_health.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/meta_health-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/prod",DOLPHIN_FAST_RECOVERY="1",DOLPHIN_MHS_USE_DITA_SENSORS="1",DOLPHIN_MHS_DITA_SENSOR_WEIGHT="0.02"
[program:obf_universe]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/obf_universe_service.py
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=15
startretries=5
stopwaitsecs=15
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/obf_universe.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/obf_universe-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/prod"
; Nautilus TradingNode paper/live portfolio launcher (DolphinActor-based).
; autostart=false: activate deliberately after nautilus_trader is confirmed healthy.
; Requires: nautilus_trader running + HZ healthy + DOLPHIN_SAFETY posture=APEX
[program:paper_portfolio]
command=/home/dolphin/siloqy_env/bin/python /mnt/dolphinng5_predict/prod/launch_paper_portfolio.py
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=true
startsecs=15
startretries=3
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/paper_portfolio.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/paper_portfolio-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin",PREFECT_API_URL="http://localhost:4200/api"
; =============================================================================
; GROUPS
; =============================================================================
[group:dolphin]
programs=nautilus_trader,dolphin_live,scan_bridge,clean_arch_trader,paper_portfolio,dita_v2
priority=999
[group:dita_v2]
programs=dita_v2
priority=950
[group:dolphin_data]
programs=exf_fetcher,acb_processor,obf_universe,meta_health,system_stats,esof_advisor,maras_service,vibriss_runner
priority=100
[program:maras_service]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/maras_service.py --interval 5.0
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=10
startretries=5
stopwaitsecs=10
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/maras_service.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/maras_service-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/prod",MARAS_POLL_INTERVAL="5.0"
; =============================================================================
; CLICKHOUSE OBSERVABILITY
; =============================================================================
[program:esof_advisor]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/Observability/esof_advisor.py --interval 15
directory=/mnt/dolphinng5_predict
autostart=true
autorestart=true
startsecs=10
startretries=5
stopwaitsecs=10
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/esof_advisor.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/esof_advisor-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/mnt/dolphinng5_predict/external_factors"
[program:system_stats]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/system_stats_service.py
directory=/mnt/dolphinng5_predict/prod
autostart=true
autorestart=true
startsecs=5
startretries=5
stopwaitsecs=5
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/system_stats.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/system_stats-error.log
stderr_logfile_maxbytes=10MB
environment=PYTHONPATH="/mnt/dolphinng5_predict/prod"
[eventlistener:ch_state_listener]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/supervisord_ch_listener.py
events=PROCESS_STATE,TICK_60
autostart=true
autorestart=true
stderr_logfile=/tmp/ch_listener.log
stderr_logfile_maxbytes=10MB
; =============================================================================
; VIBRISS — Online Parameter Governance
; Per VIBRISS spec §12.3: supervisord entries for the runner and worker.
; Native process (no container) for immediate deployment, matching the
; maras_service pattern. Containerized runner also available via the wrapper.
; =============================================================================
[program:vibriss_runner]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/vibriss/vibriss_runner.py --mode shadow --namespace blue
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=true
startsecs=10
startretries=5
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/vibriss_runner.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/vibriss_runner-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=
PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/prod",
HZ_HOST="localhost:5701",
CH_URL="http://localhost:8123/",
CH_DB="dolphin",
CH_USER="dolphin",
CH_PASS="dolphin_ch_2026",
NATS_URL="nats://localhost:4222",
VIBRISS_ENABLE_NATS_TRANSPORT="1",
VIBRISS_NATS_SUBJECT_PREFIX="vibriss",
VIBRISS_MODE="shadow",
VIBRISS_NAMESPACE="blue",
VIBRISS_SPEC_DIR="/mnt/dolphin_training/vibriss/specs",
VIBRISS_STATE_DIR="/mnt/dolphin_training/vibriss/checkpoints",
VIBRISS_ENABLE_LIVE_ACTUATION="0",
VIBRISS_META_CADENCE_MODE="fixed",
DOLPHIN_LOG_ROOT="/mnt/dolphin_training/vibriss/logs"
[program:vibriss_runner_container]
command=/mnt/dolphinng5_predict/prod/vibriss/infra/container/vibriss-container-wrapper.sh
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=true
startsecs=30
startretries=3
stopwaitsecs=40
stopasgroup=true
killasgroup=true
stdout_logfile=/mnt/dolphin_training/vibriss/logs/supervisor/vibriss_runner_container.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/mnt/dolphin_training/vibriss/logs/supervisor/vibriss_runner_container-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=
DOLPHIN_LOG_ROOT="%(ENV_DOLPHIN_LOG_ROOT)s"
[program:vibriss_worker]
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/vibriss/vibriss_runner.py replay --param-set advsl.hold_substitute.v1 --out /mnt/dolphin_training/vibriss/replays
directory=/mnt/dolphinng5_predict/prod
autostart=false
autorestart=false
startsecs=0
stopwaitsecs=30
stopasgroup=true
killasgroup=true
stdout_logfile=/mnt/dolphin_training/vibriss/logs/supervisor/vibriss_worker.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/mnt/dolphin_training/vibriss/logs/supervisor/vibriss_worker-error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
environment=
PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/prod",
HZ_HOST="localhost:5701",
NATS_URL="nats://localhost:4222",
VIBRISS_ENABLE_NATS_TRANSPORT="1",
VIBRISS_NATS_SUBJECT_PREFIX="vibriss",
VIBRISS_MODE="shadow",
VIBRISS_NAMESPACE="blue",
DOLPHIN_LOG_ROOT="/mnt/dolphin_training/vibriss/logs"