#!/usr/bin/env bash set -euo pipefail LABEL="net.hyungi.ai-server" PLIST="$HOME/Library/LaunchAgents/${LABEL}.plist" WORKDIR="$(pwd)" # load .env if present if [ -f "$WORKDIR/.env" ]; then set -a # shellcheck disable=SC1091 . "$WORKDIR/.env" set +a fi cat > "$PLIST" < Label${LABEL} ProgramArguments ${WORKDIR}/.venv/bin/uvicorn server.main:app --host0.0.0.0 --port${AI_SERVER_PORT:-26000} EnvironmentVariables OLLAMA_HOST${OLLAMA_HOST:-http://localhost:11434} BASE_MODEL${BASE_MODEL:-qwen2.5:7b-instruct} BOOST_MODEL${BOOST_MODEL:-qwen2.5:14b-instruct} ENGLISH_MODEL${ENGLISH_MODEL:-llama3:8b-instruct} ENGLISH_RATIO_THRESHOLD${ENGLISH_RATIO_THRESHOLD:-0.65} EMBEDDING_MODEL${EMBEDDING_MODEL:-bge-m3} INDEX_PATH${INDEX_PATH:-data/index.jsonl} API_KEY${API_KEY:-} CORS_ORIGINS${CORS_ORIGINS:-} PAPERLESS_BASE_URL${PAPERLESS_BASE_URL:-} PAPERLESS_TOKEN${PAPERLESS_TOKEN:-} WorkingDirectory${WORKDIR} StandardOutPath${WORKDIR}/ai-server.out.log StandardErrorPath${WORKDIR}/ai-server.err.log RunAtLoad KeepAlive PLIST launchctl unload "$PLIST" 2>/dev/null || true launchctl load -w "$PLIST" echo "[ok] launchd agent installed: $PLIST"