#!/usr/bin/env bash set -euo pipefail WORKSPACE="/home/openclaw/.openclaw/workspace" LOG="${WORKSPACE}/logs/guardian-recover.log" TS="$(date -u +'%F %T UTC')" log(){ echo "[$TS] $*" >> "$LOG" } mkdir -p "${WORKSPACE}/logs" if openclaw status >/dev/null 2>&1; then log "ok: openclaw status healthy" exit 0 fi log "warn: openclaw unhealthy, restarting gateway" openclaw gateway restart >/dev/null 2>&1 || true sleep 3 if openclaw status >/dev/null 2>&1; then log "ok: recovered after gateway restart" exit 0 fi log "warn: still unhealthy, restarting user gateway service" systemctl --user restart openclaw-gateway.service >/dev/null 2>&1 || true sleep 3 if openclaw status >/dev/null 2>&1; then log "ok: recovered after service restart" exit 0 fi # Optional hard restore from main branch in gitea (OFF by default) # Enable by setting GUARDIAN_HARD_RESET=1 in service Environment. if [[ "${GUARDIAN_HARD_RESET:-0}" == "1" ]]; then log "warn: hard reset enabled, restoring workspace from gitea/main" GIT_SSH_COMMAND='ssh -i /home/openclaw/.ssh/id_ed25519_vps_openclaw_45158 -o IdentitiesOnly=yes' \ git -C "$WORKSPACE" fetch gitea main >/dev/null 2>&1 || true git -C "$WORKSPACE" reset --hard gitea/main >/dev/null 2>&1 || true log "warn: hard reset attempted" fi log "error: unrecovered" exit 1