49 lines
1.2 KiB
Bash
49 lines
1.2 KiB
Bash
#!/bin/bash
|
|
# Auto-restart loop for OpenClaw Command Center
|
|
# Keeps the dashboard running with exponential backoff on crashes
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
DASHBOARD_DIR="$(dirname "$SCRIPT_DIR")"
|
|
LOG_DIR="${HOME}/.openclaw-command-center/logs"
|
|
LOG_FILE="${LOG_DIR}/dashboard.log"
|
|
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
# Backoff settings
|
|
INITIAL_DELAY=1
|
|
MAX_DELAY=30
|
|
DELAY=$INITIAL_DELAY
|
|
|
|
cd "$DASHBOARD_DIR"
|
|
|
|
# Ensure node is available (nvm support)
|
|
if [ -f "$HOME/.nvm/nvm.sh" ]; then
|
|
source "$HOME/.nvm/nvm.sh"
|
|
fi
|
|
|
|
echo "🦞 OpenClaw Command Center - Auto-restart loop"
|
|
echo " Logs: $LOG_FILE"
|
|
echo " Press Ctrl+C to stop"
|
|
echo ""
|
|
|
|
while true; do
|
|
echo "[$(date)] Starting dashboard..." | tee -a "$LOG_FILE"
|
|
|
|
# Run the server
|
|
if node lib/server.js 2>&1 | tee -a "$LOG_FILE"; then
|
|
# Clean exit
|
|
echo "[$(date)] Dashboard exited cleanly" | tee -a "$LOG_FILE"
|
|
DELAY=$INITIAL_DELAY
|
|
else
|
|
# Crash - backoff
|
|
echo "[$(date)] Dashboard crashed! Restarting in ${DELAY}s..." | tee -a "$LOG_FILE"
|
|
sleep $DELAY
|
|
DELAY=$((DELAY * 2))
|
|
if [ $DELAY -gt $MAX_DELAY ]; then
|
|
DELAY=$MAX_DELAY
|
|
fi
|
|
fi
|
|
done
|