F10 (BLUE's kernel in the UV/VIOLET body, live-mainnet-capable, promotion-gated by the arm file) now runs under supervisord as program flight10 instead of an ad-hoc agent background task (which got reaped ~18min -- the only reason it kept dying). Command SOURCES /root/flight10_prod.env (chmod 600, secrets NOT inlined here) so every autorestart revive gets the full env (mainnet keys, DITA_V2_ZINC=REAL shared-RAM exec plane, UV_EXEC_DARK_MODE=0, TP/SL, vol threshold, CH/HZ, arm-file path). Sets HOME + an explicit PATH incl /root/.cargo/bin (the DITAv2 rust-backend provenance check shells `rustc -vV`; supervisord's minimal PATH lacked it -> crash-loop). Clears stale zinc_uv_exec_* regions pre-launch (RealZincPlane create=True FileExistsErrors on a prior runner's un-reaped regions -> silent in-memory downgrade; F10 is sole owner so clearing is safe -> REAL shared RAM every start/autorestart). Polite: startsecs=100 + startretries=3 -> a startup-crash goes FATAL, never rate-loops BingX. autostart=false, autorestart=true, log rotation, rlimit_as=3GB. BLUE (dolphin:nautilus_trader) untouched. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
499 lines
23 KiB
Plaintext
499 lines
23 KiB
Plaintext
; =============================================================================
|
|
; 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.
|
|
; 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
|
|
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
|
|
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_FORCE_LATEST_NAUTILUS_RESTORE="1",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_pink]
|
|
command=/mnt/dolphinng5_predict/prod/supervisor/run_with_dolphin_env.sh /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
|
|
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"
|
|
|
|
; ── VIOLET — Stage V1 observe-only rebuild runtime ──────────────────────────
|
|
; DARK by design: BINGX_VIOLET_API_KEY/SECRET deliberately NOT set here —
|
|
; they belong in /mnt/dolphinng5_predict/.env once the operator provisions
|
|
; the dedicated VST subaccount. Until then the service idles with a periodic
|
|
; WARNING; the (public-data) scan-vs-venue divergence sampler still runs.
|
|
; Namespaces: CH dolphin_violet, HZ DOLPHIN_STATE_VIOLET, Zinc prefix violet.
|
|
[program:dolphin_violet]
|
|
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/launch_dolphin_violet.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_violet.log
|
|
stdout_logfile_maxbytes=50MB
|
|
stdout_logfile_backups=10
|
|
redirect_stderr=true
|
|
environment=PYTHONPATH="/mnt/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin",PYTHONUNBUFFERED="1",DOLPHIN_DATA_VENUE="BINANCE",DOLPHIN_EXEC_VENUE="BINGX",DOLPHIN_BINGX_ENV="VST",DOLPHIN_BINGX_ALLOW_MAINNET="0",DOLPHIN_TRADER_ID="DOLPHIN-VIOLET-001",DITA_V2_PREFIX="violet",DOLPHIN_BINGX_RECV_WINDOW_MS="60000",DOLPHIN_VIOLET_DARK_DIVERGENCE="1",DOLPHIN_VIOLET_VENUE_MID_MODE="ws",DOLPHIN_VIOLET_DECISION_SHADOW="1",DOLPHIN_VIOLET_SHADOW_CAPITAL="69000"
|
|
|
|
; ── VIOLET — Stage V4 execution runner (BingX VST only) ─────────────────────
|
|
; Separate from the observe-only launcher above. This entrypoint is the live
|
|
; execution path; it remains gated by the V4 arming checks and uses the shared
|
|
; BingX key pair from /etc/dolphin/bingx.env.
|
|
[program:dolphin_violet_v4]
|
|
command=/var/local/dolphin_runtime/dolphinng5_predict/prod/supervisor/run_with_dolphin_env.sh /home/dolphin/siloqy_env/bin/python3 /var/local/dolphin_runtime/dolphinng5_predict/prod/launch_dolphin_violet_v4.py
|
|
directory=/var/local/dolphin_runtime/dolphinng5_predict/prod
|
|
autostart=false
|
|
autorestart=true
|
|
startsecs=15
|
|
startretries=3
|
|
stopwaitsecs=30
|
|
stopasgroup=true
|
|
killasgroup=true
|
|
stdout_logfile=/var/local/dolphin_runtime/logs/supervisor/dolphin_live_violet_v4.log
|
|
stdout_logfile_maxbytes=50MB
|
|
stdout_logfile_backups=10
|
|
redirect_stderr=true
|
|
environment=PYTHONPATH="/var/local/dolphin_runtime/dolphinng5_predict:/mnt/dolphinng5_predict/nautilus_dolphin:/var/local/dolphin_runtime/dolphinng5_predict/ASEx/src",PYTHONUNBUFFERED="1",DOLPHIN_CODE_ROOT="/var/local/dolphin_runtime/dolphinng5_predict",DOLPHIN_DATA_VENUE="BINANCE",DOLPHIN_EXEC_VENUE="BINGX",DOLPHIN_BINGX_ENV="VST",DOLPHIN_BINGX_ALLOW_MAINNET="0",DOLPHIN_TRADER_ID="DOLPHIN-VIOLET-001",DITA_V2_PREFIX="violet",DOLPHIN_VIOLET_ENABLE_V4_EXECUTION="1",DOLPHIN_VIOLET_REQUIRE_ARMING="1",DOLPHIN_VIOLET_ASSUME_SOAK_PASSED="1",DOLPHIN_VIOLET_ASSUME_NAMESPACE_ISOLATED="1",DOLPHIN_VIOLET_REPORT_DIR="/var/local/dolphin_runtime/violet_reports",DOLPHIN_BINGX_RECV_WINDOW_MS="60000"
|
|
|
|
; DITAv2 — supervised kernel, launched separately from the legacy PINK/BLUE stack.
|
|
[program:dita_v2]
|
|
command=/mnt/dolphinng5_predict/prod/supervisor/run_with_dolphin_env.sh /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_simple.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"
|
|
|
|
[program:mc_forewarner_refresh]
|
|
command=/home/dolphin/siloqy_env/bin/python3 /mnt/dolphinng5_predict/prod/mc_forewarner_service.py --interval-s 14400
|
|
directory=/mnt/dolphinng5_predict/prod
|
|
autostart=true
|
|
autorestart=true
|
|
startsecs=10
|
|
startretries=3
|
|
stopwaitsecs=30
|
|
stopasgroup=true
|
|
killasgroup=true
|
|
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/mc_forewarner_refresh.log
|
|
stdout_logfile_maxbytes=50MB
|
|
stdout_logfile_backups=10
|
|
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/mc_forewarner_refresh-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_MC_FOREWARNER_INTERVAL_S="14400"
|
|
|
|
; =============================================================================
|
|
; GROUPS
|
|
; =============================================================================
|
|
|
|
[group:dolphin]
|
|
programs=nautilus_trader,scan_bridge,clean_arch_trader,paper_portfolio,dita_v2,mc_forewarner_refresh
|
|
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"
|
|
|
|
[program:flight10]
|
|
; FLIGHT10 (F10) — BLUE's kernel in the UV/VIOLET body, live-mainnet-CAPABLE but
|
|
; promotion-gated by the arm file (absent => shadow/dark => ZERO orders). Runs under
|
|
; supervisord for durability + CORRECT revival — NOT under an agent harness (which
|
|
; reaps its children ~18min; that was the only reason F10 kept "dying").
|
|
;
|
|
; The command SOURCES /root/flight10_prod.env (chmod 600, root-only, OUTSIDE git) so
|
|
; every autorestart revive gets the FULL env machinery — the mainnet keys, DITA_V2_ZINC
|
|
; =REAL (shared-RAM exec plane), UV_EXEC_DARK_MODE=0, TP/SL, DOLPHIN_VOL_P60_THRESHOLD,
|
|
; CH/HZ, ZINC_PYTHON_PATH, UV_PROMOTED, arm-file path — WITHOUT inlining secrets here.
|
|
; (Control plane is pending; until then the env file IS the config.)
|
|
;
|
|
; POLITE / non-rate-limiting: startsecs=100 is past the ~80s warmup, so a startup-crashing
|
|
; F10 counts as a FAILED start and goes FATAL after startretries=3 — it will NEVER
|
|
; rapid-restart-loop and hammer BingX. autorestart=true still revives a genuine mid-run
|
|
; death (dark, safe). rlimit_as caps runaway memory. Operator starts it explicitly
|
|
; (autostart=false); arming stays a live arm-file toggle, no restart needed.
|
|
; PATH must include /root/.cargo/bin — the DITAv2 rust-backend provenance check shells
|
|
; out to `rustc -vV`; supervisord's minimal PATH lacks it (harness launches inherited it
|
|
; from the interactive shell, which is why this only bit under supervisord). HOME=/root
|
|
; for any ~-relative tool lookups. Then source the env file + set PYTHONPATH + exec.
|
|
; Clear stale exec-plane shm regions before launch. RealZincPlane(create=True) fails
|
|
; FileExistsError (zinc -17) if a prior runner's zinc_uv_exec_* regions persist (they
|
|
; are NOT reaped on exit — DeadNode reaper is the known-missing piece), which SILENTLY
|
|
; (now LOUDLY) downgrades the exec plane to in-memory and voids shared-RAM on EVERY
|
|
; autorestart. F10 is the sole owner of uv_exec, so clearing them on start is safe and
|
|
; guarantees a REAL shared-RAM plane every start. (flight10_state is open-or-create via
|
|
; ShmChannel — not affected — so it is left intact for snapshot continuity.)
|
|
command=/bin/bash -c 'export HOME=/root; export PATH="/root/.cargo/bin:/home/dolphin/siloqy_env/bin:/usr/local/bin:/usr/bin:/bin:$PATH"; . /root/flight10_prod.env; export PYTHONPATH="$ZINC_PYTHON_PATH:/root/uv-wt/flight-unify"; rm -f /dev/shm/zinc_uv_exec_* 2>/dev/null; exec /home/dolphin/siloqy_env/bin/python3 -m prod.clean_arch.violet.uv.blue_prime.runner'
|
|
directory=/root/uv-wt/flight-unify
|
|
autostart=false
|
|
autorestart=true
|
|
startsecs=100
|
|
startretries=3
|
|
stopsignal=TERM
|
|
stopwaitsecs=30
|
|
stopasgroup=true
|
|
killasgroup=true
|
|
stdout_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/flight10.log
|
|
stdout_logfile_maxbytes=50MB
|
|
stdout_logfile_backups=10
|
|
stderr_logfile=%(ENV_DOLPHIN_LOG_ROOT)s/supervisor/flight10-error.log
|
|
stderr_logfile_maxbytes=50MB
|
|
stderr_logfile_backups=10
|
|
environment=PYTHONUNBUFFERED="1"
|
|
rlimit_as=3GB
|
|
rlimit_nofile=1024
|