#!/usr/bin/env bash set -euo pipefail if [[ $# -lt 2 ]]; then echo "Uso: $0 [porta_api]" echo "Esempio: $0 192.168.1.51 18601 18000" exit 1 fi CLIENT_IP="$1" UI_PORT="$2" API_PORT="${3:-18000}" 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}" exit 1 fi source "${ACTIVATE_SCRIPT}" cleanup() { [[ -n "${API_PID:-}" ]] && kill "${API_PID}" 2>/dev/null || true [[ -n "${UI_PID:-}" ]] && kill "${UI_PID}" 2>/dev/null || true } trap cleanup EXIT INT TERM HOST=0.0.0.0 PORT="${API_PORT}" python "${PROJECT_ROOT}/api/api_server.py" & API_PID=$! sleep 6 export JARVIS_API_BASE_URL="http://${CLIENT_IP}:${API_PORT}" STREAMLIT_SERVER_PORT="${UI_PORT}" streamlit run "${PROJECT_ROOT}/ui/dashboard.py" --server.address 0.0.0.0 --server.headless true --browser.gatherUsageStats false & UI_PID=$! wait "${API_PID}" "${UI_PID}"