run.sh 904 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. cd "$SCRIPT_DIR"
  5. if [[ -f .env ]]; then
  6. set -a
  7. # shellcheck source=/dev/null
  8. source .env
  9. set +a
  10. fi
  11. if [[ -f .venv/bin/activate ]]; then
  12. # shellcheck source=/dev/null
  13. source .venv/bin/activate
  14. fi
  15. PORT="${MCP_PORT:-${PORT:-8550}}"
  16. HOST="${MCP_HOST:-0.0.0.0}"
  17. LOG_DIR="logs"
  18. mkdir -p "$LOG_DIR"
  19. PID_FILE="$LOG_DIR/server.pid"
  20. LOG_FILE="$LOG_DIR/server.log"
  21. if [[ -f "$PID_FILE" ]]; then
  22. PID="$(cat "$PID_FILE" 2>/dev/null || true)"
  23. if [[ -n "${PID:-}" ]] && kill -0 "$PID" 2>/dev/null; then
  24. echo "Atlas already running (PID $PID)."
  25. exit 1
  26. else
  27. echo "Removing stale pidfile."
  28. rm -f "$PID_FILE"
  29. fi
  30. fi
  31. nohup python3 -m uvicorn app.main:app --host "$HOST" --port "$PORT" >"$LOG_FILE" 2>&1 &
  32. PID=$!
  33. echo "$PID" >"$PID_FILE"
  34. echo "Atlas started (PID $PID). Logs: $LOG_FILE"