#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" LABEL="${AURORA_LAUNCHD_LABEL:-com.daarion.aurora}" DOMAIN="gui/$(id -u)" LAUNCH_AGENTS_DIR="${HOME}/Library/LaunchAgents" PLIST_PATH="${LAUNCH_AGENTS_DIR}/${LABEL}.plist" START_SCRIPT="${ROOT_DIR}/start-native-macos.sh" PORT_VALUE="${PORT:-9401}" AURORA_ENV_FILE_VALUE="${AURORA_ENV_FILE:-${HOME}/.sofiia/aurora.env}" DATA_DIR_VALUE="${AURORA_DATA_DIR:-${HOME}/.sofiia/aurora-data}" MODELS_DIR_VALUE="${AURORA_MODELS_DIR:-${DATA_DIR_VALUE}/models}" PUBLIC_BASE_URL_VALUE="${AURORA_PUBLIC_BASE_URL:-http://127.0.0.1:${PORT_VALUE}}" CORS_ORIGINS_VALUE="${AURORA_CORS_ORIGINS:-*}" FORCE_CPU_VALUE="${AURORA_FORCE_CPU:-false}" PREFER_MPS_VALUE="${AURORA_PREFER_MPS:-true}" ENABLE_VTB_VALUE="${AURORA_ENABLE_VIDEOTOOLBOX:-true}" KLING_ACCESS_KEY_VALUE="${KLING_ACCESS_KEY:-}" KLING_SECRET_KEY_VALUE="${KLING_SECRET_KEY:-}" KLING_BASE_URL_VALUE="${KLING_BASE_URL:-https://api.klingai.com}" KLING_TIMEOUT_VALUE="${KLING_TIMEOUT:-60}" LOG_DIR="${DATA_DIR_VALUE}/logs" LOG_OUT="${LOG_DIR}/launchd.out.log" LOG_ERR="${LOG_DIR}/launchd.err.log" PATH_VALUE="${PATH:-/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin}" if [ ! -x "${START_SCRIPT}" ]; then echo "[aurora-launchd] missing start script: ${START_SCRIPT}" exit 1 fi if [ ! -x "${ROOT_DIR}/.venv-macos/bin/python" ]; then echo "[aurora-launchd] .venv-macos is missing. Run ./setup-native-macos.sh first." exit 1 fi mkdir -p "${LAUNCH_AGENTS_DIR}" "${LOG_DIR}" "${DATA_DIR_VALUE}" "${MODELS_DIR_VALUE}" cat > "${PLIST_PATH}" < Label ${LABEL} ProgramArguments ${START_SCRIPT} WorkingDirectory ${ROOT_DIR} RunAtLoad KeepAlive StandardOutPath ${LOG_OUT} StandardErrorPath ${LOG_ERR} EnvironmentVariables PATH ${PATH_VALUE} PYTHONUNBUFFERED 1 PORT ${PORT_VALUE} AURORA_ENV_FILE ${AURORA_ENV_FILE_VALUE} AURORA_DATA_DIR ${DATA_DIR_VALUE} AURORA_MODELS_DIR ${MODELS_DIR_VALUE} AURORA_PUBLIC_BASE_URL ${PUBLIC_BASE_URL_VALUE} AURORA_CORS_ORIGINS ${CORS_ORIGINS_VALUE} AURORA_FORCE_CPU ${FORCE_CPU_VALUE} AURORA_PREFER_MPS ${PREFER_MPS_VALUE} AURORA_ENABLE_VIDEOTOOLBOX ${ENABLE_VTB_VALUE} KLING_ACCESS_KEY ${KLING_ACCESS_KEY_VALUE} KLING_SECRET_KEY ${KLING_SECRET_KEY_VALUE} KLING_BASE_URL ${KLING_BASE_URL_VALUE} KLING_TIMEOUT ${KLING_TIMEOUT_VALUE} PLIST chmod 644 "${PLIST_PATH}" launchctl bootout "${DOMAIN}/${LABEL}" >/dev/null 2>&1 || true launchctl bootstrap "${DOMAIN}" "${PLIST_PATH}" launchctl enable "${DOMAIN}/${LABEL}" >/dev/null 2>&1 || true launchctl kickstart -k "${DOMAIN}/${LABEL}" echo "[aurora-launchd] installed: ${PLIST_PATH}" echo "[aurora-launchd] active label: ${DOMAIN}/${LABEL}" echo "[aurora-launchd] logs: ${LOG_OUT} | ${LOG_ERR}" echo "[aurora-launchd] check: launchctl print ${DOMAIN}/${LABEL}"