#!/bin/bash set -e echo "=== Fast Restart: botserver only (keeps infra running) ===" # Only kill the app services, keep infra (postgres, valkey, minio, vault, zitadel) running pkill -f "botserver --noconsole" || true pkill -f "botmodels" || true # Clean app logs only rm -f botserver.log botmodels.log # Build botserver (incremental, should be fast) cargo build -p botserver # Start botmodels if not running if ! pgrep -f "botmodels" > /dev/null; then echo "Starting botmodels..." cd botmodels source venv/bin/activate uvicorn src.main:app --host 0.0.0.0 --port 8085 > ../botmodels.log 2>&1 & echo " botmodels PID: $!" cd .. # Wait for botmodels for i in $(seq 1 15); do if curl -s http://localhost:8085/api/health > /dev/null 2>&1; then echo " botmodels ready" break fi sleep 1 done else echo " botmodels already running" fi # Start botserver echo "Starting botserver..." BOTMODELS_HOST="http://localhost:8085" BOTMODELS_API_KEY="starter" RUST_LOG=info \ ./target/debug/botserver --noconsole > botserver.log 2>&1 & echo " botserver PID: $!" # Wait for botserver health with timeout echo "Waiting for botserver..." for i in $(seq 1 10); do if curl -sf http://localhost:8080/health > /dev/null 2>&1; then echo "✅ botserver ready" exit 0 fi sleep 1 done echo "❌ botserver failed to start - check botserver.log" tail -20 botserver.log exit 1