#!/usr/bin/env bash # Dev server with --reload scoped to app code only. Reloading on the repo root # also watches .venv/site-packages and causes constant reload loops. set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" export PYTHONPATH="$ROOT" export PORT="${PORT:-8000}" PYTHON="${ROOT}/.venv/bin/python" if [[ ! -x "$PYTHON" ]]; then echo "Missing project venv. From repo root run:" echo " python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt" exit 1 fi if command -v lsof >/dev/null 2>&1; then if lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then echo "Port $PORT is already in use — another process is listening." echo "Stop it (Ctrl+C in that terminal) or run on another port, e.g.:" echo " PORT=8001 $0" exit 1 fi fi echo "Starting SentinelAI API at http://127.0.0.1:${PORT} (reload dirs = source only)" exec "$PYTHON" -m uvicorn backend.app.main:app \ --reload \ --host 0.0.0.0 \ --port "$PORT" \ --reload-dir "$ROOT/backend" \ --reload-dir "$ROOT/agents" \ --reload-dir "$ROOT/services" \ --reload-dir "$ROOT/workflows" \ --reload-dir "$ROOT/models" \ --reload-dir "$ROOT/collectors" \ --reload-dir "$ROOT/parsers" \ --reload-dir "$ROOT/database"