| [supervisord] |
| nodaemon=true |
| logfile=/tmp/supervisord.log |
| pidfile=/tmp/supervisord.pid |
| user=root |
|
|
| [program:openclaw] |
| command=/bin/sh -lc "GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND:-lan}; AUTH_FILE_MAIN=/app/.openclaw/state/agents/main/agent/auth-profiles.json; ONBOARD_MARKER=/app/.openclaw/state/.onboard_signature; PROVIDER_ID=${OPENCLAW_CUSTOM_PROVIDER_ID:-researchengineering-agi-hf-space}; COMPAT=${OPENCLAW_CUSTOM_COMPATIBILITY:-openai}; DESIRED_SIG=${OPENCLAW_CUSTOM_BASE_URL}'|'${OPENCLAW_CUSTOM_MODEL_ID}'|'${PROVIDER_ID}'|'${COMPAT}; CURRENT_SIG=$(cat \"$ONBOARD_MARKER\" 2>/dev/null || true); API_KEY_RAW=${OPENCLAW_CUSTOM_API_KEY:-${CUSTOM_API_KEY:-}}; API_KEY=\"$API_KEY_RAW\"; if [ -z \"$API_KEY\" ] && [ \"${OPENCLAW_CUSTOM_API_KEY_OPTIONAL:-1}\" = \"1\" ]; then API_KEY=\"${OPENCLAW_CUSTOM_API_KEY_PLACEHOLDER:-no-key}\"; echo '[onboard] using placeholder custom API key'; fi; if [ \"${OPENCLAW_BOOTSTRAP_ONBOARD:-1}\" = \"1\" ] && { [ ! -s \"$AUTH_FILE_MAIN\" ] || [ \"$CURRENT_SIG\" != \"$DESIRED_SIG\" ]; }; then if [ -n \"$API_KEY\" ]; then echo \"[onboard] bootstrapping custom provider (sig=$DESIRED_SIG)\"; openclaw onboard --non-interactive --mode local --auth-choice custom-api-key --custom-base-url \"${OPENCLAW_CUSTOM_BASE_URL}\" --custom-model-id \"${OPENCLAW_CUSTOM_MODEL_ID}\" --custom-provider-id \"$PROVIDER_ID\" --custom-compatibility \"$COMPAT\" --custom-api-key \"$API_KEY\" --secret-input-mode plaintext --gateway-port 18789 --gateway-bind \"$GATEWAY_BIND\" --skip-skills --accept-risk || true; echo \"$DESIRED_SIG\" > \"$ONBOARD_MARKER\"; else echo '[onboard] skipped: no API key or placeholder'; fi; fi; python /app/scripts/bootstrap_gateway_token.py; exec openclaw gateway run --port 18789 --bind \"$GATEWAY_BIND\" --allow-unconfigured --dev" |
| autorestart=true |
| startsecs=5 |
| startretries=20 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/openclaw-gateway.log |
| stderr_logfile=/tmp/openclaw-gateway.err.log |
| environment=HOME="/root",HOSTNAME="openclaw",COMPUTERNAME="openclaw",OPENCLAW_DISABLE_BONJOUR="1",OPENCLAW_DISABLE_MDNS="1" |
|
|
| [program:streamlit] |
| command=/bin/sh -lc "cd /app && uv run streamlit run app.py --server.address=0.0.0.0 --server.port=8501" |
| autorestart=true |
| startsecs=2 |
| startretries=20 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/streamlit.log |
| stderr_logfile=/tmp/streamlit.err.log |
|
|
| [program:caddy] |
| command=/bin/sh -lc "caddy run --config /app/Caddyfile --adapter caddyfile" |
| autorestart=true |
| startsecs=2 |
| startretries=20 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/caddy.log |
| stderr_logfile=/tmp/caddy.err.log |
|
|
| [program:nanoclaw] |
| command=/bin/sh -lc "if [ \"${NANOCLAW_ENABLED:-1}\" = \"1\" ]; then ${NANOCLAW_CMD} ${NANOCLAW_ARGS}; else echo '[nanoclaw] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/nanoclaw.log |
| stderr_logfile=/tmp/nanoclaw.err.log |
| environment=HOME="/root",NANOCLAW_CONFIG_PATH="/app/nanoclaw.json",NANOCLAW_PORT="18889",NANOCLAW_BASE_PATH="/nanoclaw" |
|
|
| [program:nanobot] |
| command=/bin/sh -lc "if [ \"${NANOBOT_ENABLED:-1}\" = \"1\" ]; then ${NANOBOT_CMD} ${NANOBOT_ARGS}; else echo '[nanobot] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/nanobot.log |
| stderr_logfile=/tmp/nanobot.err.log |
| environment=HOME="/root",NANOBOT_CONFIG_PATH="/app/nanobot.json",NANOBOT_PORT="18790",NANOBOT_BASE_PATH="/nanobot" |
|
|
| [program:picoclaw] |
| command=/bin/sh -lc "if [ \"${PICOCLAW_ENABLED:-1}\" = \"1\" ]; then ${PICOCLAW_CMD} ${PICOCLAW_ARGS}; else echo '[picoclaw] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/picoclaw.log |
| stderr_logfile=/tmp/picoclaw.err.log |
| environment=HOME="/root",PICOCLAW_CONFIG_PATH="/app/picoclaw.json",PICOCLAW_PORT="18792",PICOCLAW_BASE_PATH="/picoclaw" |
|
|
| [program:ironclaw] |
| command=/bin/sh -lc "if [ \"${IRONCLAW_ENABLED:-1}\" = \"1\" ]; then ${IRONCLAW_CMD} ${IRONCLAW_ARGS}; else echo '[ironclaw] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/ironclaw.log |
| stderr_logfile=/tmp/ironclaw.err.log |
| environment=HOME="/root" |
|
|
| [program:zeroclaw] |
| command=/bin/sh -lc "if [ \"${ZEROCLAW_ENABLED:-1}\" = \"1\" ]; then ${ZEROCLAW_CMD} ${ZEROCLAW_ARGS}; else echo '[zeroclaw] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/zeroclaw.log |
| stderr_logfile=/tmp/zeroclaw.err.log |
| environment=HOME="/root",ZEROCLAW_CONFIG_PATH="/app/zeroclaw.json",ZEROCLAW_PORT="42617",ZEROCLAW_BASE_PATH="/zeroclaw" |
|
|
| [program:nullclaw] |
| command=/bin/sh -lc "if [ \"${NULLCLAW_ENABLED:-1}\" = \"1\" ]; then ${NULLCLAW_CMD} ${NULLCLAW_ARGS}; else echo '[nullclaw] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/nullclaw.log |
| stderr_logfile=/tmp/nullclaw.err.log |
| environment=HOME="/root",NULLCLAW_CONFIG_PATH="/app/nullclaw.json",NULLCLAW_PORT="3000",NULLCLAW_BASE_PATH="/nullclaw" |
|
|
| [program:hermes-agent] |
| command=/bin/sh -lc "if [ \"${HERMES_AGENT_ENABLED:-1}\" = \"1\" ]; then ${HERMES_AGENT_CMD} ${HERMES_AGENT_ARGS}; else echo '[hermes-agent] disabled'; sleep infinity; fi" |
| autorestart=true |
| startsecs=5 |
| startretries=10 |
| stopasgroup=true |
| killasgroup=true |
| stdout_logfile=/tmp/hermes-agent.log |
| stderr_logfile=/tmp/hermes-agent.err.log |
| environment=HOME="/root",HERMES_AGENT_CONFIG_PATH="/app/hermes-agent.json",HERMES_AGENT_PORT="18794",HERMES_AGENT_BASE_PATH="/hermes-agent" |
|
|