#!/bin/bash set -e SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) PROJECT_DIR=$(cd "$SCRIPT_DIR/.." && pwd) # Build first "$SCRIPT_DIR/build.sh" # Configuration REDIS_URL="${REDIS_URL:-redis://localhost:6379}" PORT="${PORT:-3030}" BIND_ADDRESS="${BIND_ADDRESS:-127.0.0.1}" BOOTSTRAP_ADMIN_KEY="${BOOTSTRAP_ADMIN_KEY:-admin}" ADMIN_UI_PORT="${ADMIN_UI_PORT:-8080}" LOG_LEVEL="${LOG_LEVEL:-info}" # Cleanup function cleanup() { echo "Shutting down..." kill $(jobs -p) 2>/dev/null || true exit 0 } trap cleanup SIGINT SIGTERM echo "Starting Hero Supervisor..." cd "$PROJECT_DIR" # Start supervisor in background RUST_LOG="$LOG_LEVEL" RUST_LOG_STYLE=never \ target/release/supervisor \ --bootstrap-admin-key "$BOOTSTRAP_ADMIN_KEY" \ --redis-url "$REDIS_URL" \ --port "$PORT" \ --bind-address "$BIND_ADDRESS" & SUPERVISOR_PID=$! # Wait for supervisor to start sleep 2 # Check if supervisor is running if ! ps -p $SUPERVISOR_PID > /dev/null 2>&1; then echo "Failed to start supervisor" exit 1 fi # Start admin UI echo "Starting Admin UI on port $ADMIN_UI_PORT..." cd "$PROJECT_DIR/ui" trunk serve --port "$ADMIN_UI_PORT" & ADMIN_UI_PID=$! echo "" echo "✅ Hero Supervisor system started" echo " 📡 Supervisor API: http://$BIND_ADDRESS:$PORT" echo " 🎨 Admin UI: http://127.0.0.1:$ADMIN_UI_PORT" echo "" echo "Press Ctrl+C to stop all services" # Wait for both processes wait