55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/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" <<PLIST
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>Label</key><string>${LABEL}</string>
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>${WORKDIR}/.venv/bin/uvicorn</string>
|
|
<string>server.main:app</string>
|
|
<string>--host</string><string>0.0.0.0</string>
|
|
<string>--port</string><string>${AI_SERVER_PORT:-26000}</string>
|
|
</array>
|
|
<key>EnvironmentVariables</key>
|
|
<dict>
|
|
<key>OLLAMA_HOST</key><string>${OLLAMA_HOST:-http://localhost:11434}</string>
|
|
<key>BASE_MODEL</key><string>${BASE_MODEL:-qwen2.5:7b-instruct}</string>
|
|
<key>BOOST_MODEL</key><string>${BOOST_MODEL:-qwen2.5:14b-instruct}</string>
|
|
<key>ENGLISH_MODEL</key><string>${ENGLISH_MODEL:-llama3:8b-instruct}</string>
|
|
<key>ENGLISH_RATIO_THRESHOLD</key><string>${ENGLISH_RATIO_THRESHOLD:-0.65}</string>
|
|
<key>EMBEDDING_MODEL</key><string>${EMBEDDING_MODEL:-bge-m3}</string>
|
|
<key>INDEX_PATH</key><string>${INDEX_PATH:-data/index.jsonl}</string>
|
|
<key>API_KEY</key><string>${API_KEY:-}</string>
|
|
<key>CORS_ORIGINS</key><string>${CORS_ORIGINS:-}</string>
|
|
<key>PAPERLESS_BASE_URL</key><string>${PAPERLESS_BASE_URL:-}</string>
|
|
<key>PAPERLESS_TOKEN</key><string>${PAPERLESS_TOKEN:-}</string>
|
|
</dict>
|
|
<key>WorkingDirectory</key><string>${WORKDIR}</string>
|
|
<key>StandardOutPath</key><string>${WORKDIR}/ai-server.out.log</string>
|
|
<key>StandardErrorPath</key><string>${WORKDIR}/ai-server.err.log</string>
|
|
<key>RunAtLoad</key><true/>
|
|
<key>KeepAlive</key><true/>
|
|
</dict>
|
|
</plist>
|
|
PLIST
|
|
|
|
launchctl unload "$PLIST" 2>/dev/null || true
|
|
launchctl load -w "$PLIST"
|
|
echo "[ok] launchd agent installed: $PLIST"
|