Spaces:
Running
Running
| # 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" | |