#!/usr/bin/env bash # Linux launcher for Jarvis-Cognitive (backend API + Streamlit UI) set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VENV_PATH="${PROJECT_ROOT}/.venv" ACTIVATE_SCRIPT="${VENV_PATH}/bin/activate" if [[ ! -f "${ACTIVATE_SCRIPT}" ]]; then echo "Errore: ambiente virtuale non trovato in ${VENV_PATH}" echo "Crea l'ambiente con: python3 -m venv .venv" echo "e installa i pacchetti: source .venv/bin/activate && pip install -r requirements.txt" exit 1 fi source "${ACTIVATE_SCRIPT}" BACKEND_HOST="${HOST:-0.0.0.0}" BACKEND_PORT="${PORT:-8000}" UI_HOST="${STREAMLIT_HOST:-0.0.0.0}" UI_PORT="${STREAMLIT_PORT:-8501}" echo "=========================================" echo " Jarvis-Cognitive – Avvio servizi Linux" echo " Backend: http://${BACKEND_HOST}:${BACKEND_PORT}" echo " UI: http://${UI_HOST}:${UI_PORT}" echo "=========================================" cd "${PROJECT_ROOT}" shutdown() { echo echo "[launcher] Arresto servizi..." if [[ -n "${API_PID:-}" ]] && ps -p "${API_PID}" > /dev/null 2>&1; then kill "${API_PID}" 2>/dev/null || true fi } trap shutdown EXIT INT TERM echo "[launcher] Avvio backend API..." HOST="${BACKEND_HOST}" PORT="${BACKEND_PORT}" python api/api_server.py & API_PID=$! sleep 6 echo "[launcher] Avvio UI Streamlit..." streamlit run ui/dashboard.py \ --server.address "${UI_HOST}" \ --server.port "${UI_PORT}" wait "${API_PID}" || true