diff --git a/scripts/aider_watch_client/launchd/com.awoooi.aider-flush.plist b/scripts/aider_watch_client/launchd/com.awoooi.aider-flush.plist
new file mode 100644
index 00000000..5b7f803f
--- /dev/null
+++ b/scripts/aider_watch_client/launchd/com.awoooi.aider-flush.plist
@@ -0,0 +1,33 @@
+
+
+
+
+
+ Label
+ com.awoooi.aider-flush
+
+ ProgramArguments
+
+ /Users/ogt/.local/bin/aider-watch
+ flush
+
+
+ StartInterval
+ 300
+
+ EnvironmentVariables
+
+ PATH
+ /opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
+
+
+ StandardOutPath
+ /Users/ogt/aider-watch/logs/flush.log
+ StandardErrorPath
+ /Users/ogt/aider-watch/logs/flush.log
+
+ RunAtLoad
+
+
+
diff --git a/scripts/aider_watch_client/scripts/install.sh b/scripts/aider_watch_client/scripts/install.sh
new file mode 100755
index 00000000..5ee1af45
--- /dev/null
+++ b/scripts/aider_watch_client/scripts/install.sh
@@ -0,0 +1,115 @@
+#!/usr/bin/env bash
+# aider-watch-client installer | 2026-04-20 @ Asia/Taipei
+# Mac 本機安裝腳本:
+# 1. pipx install aider-watch-client(獨立 venv,不污染系統 Python)
+# 2. symlink aiderw 到 /opt/homebrew/bin(讓 PATH 找得到)
+# 3. 檢查 ~/.aider-watch.env(必須有 AIDER_API_URL + AIDER_WEBHOOK_SECRET)
+# 4. 建工作目錄 ~/aider-watch/{buffer,logs}
+# 5. 安裝 launchd flush job(每 5min)
+# 6. 跑 aider-watch doctor 驗證
+
+set -euo pipefail
+HERE="$(cd "$(dirname "$0")" && pwd)"
+ROOT="$(cd "$HERE/.." && pwd)"
+PY="/Users/ogt/.pyenv/versions/3.11.7/bin/python3"
+
+echo "== aider-watch-client installer =="
+echo "repo: $ROOT"
+echo "python: $PY"
+
+# ---------- 1. pipx install ----------
+if ! command -v pipx >/dev/null 2>&1; then
+ echo "❌ pipx 未安裝。請先 brew install pipx && pipx ensurepath"
+ exit 1
+fi
+
+echo "-> pipx install -e $ROOT ..."
+if pipx list | grep -q "aider-watch-client"; then
+ echo " 已存在,執行 pipx reinstall..."
+ pipx reinstall aider-watch-client
+else
+ pipx install --python "$PY" -e "$ROOT"
+fi
+
+# ---------- 2. symlink ----------
+HOMEBREW_BIN="/opt/homebrew/bin"
+if [[ -d "$HOMEBREW_BIN" ]]; then
+ ln -sf "$HOME/.local/bin/aiderw" "$HOMEBREW_BIN/aiderw"
+ ln -sf "$HOME/.local/bin/aider-watch" "$HOMEBREW_BIN/aider-watch"
+ echo "✓ aiderw + aider-watch symlinked to $HOMEBREW_BIN"
+fi
+
+# ---------- 3. ~/.aider-watch.env 檢查 ----------
+ENV_FILE="$HOME/.aider-watch.env"
+if [[ ! -f "$ENV_FILE" ]]; then
+ cat < $ENV_FILE <<'EV'
+AIDER_API_URL=http://192.168.0.120:32334/api/v1/aider/events
+AIDER_WEBHOOK_SECRET=<從 /tmp/aider_webhook_secret.txt 貼過來>
+AIDER_WATCH_HOSTNAME=ogt-mac
+EV
+chmod 600 $ENV_FILE
+
+EOF
+ exit 1
+fi
+chmod 600 "$ENV_FILE"
+
+# 驗必要 env 有值
+required_keys=("AIDER_API_URL" "AIDER_WEBHOOK_SECRET")
+missing=()
+for k in "${required_keys[@]}"; do
+ if ! grep -q "^${k}=" "$ENV_FILE"; then
+ missing+=("$k")
+ fi
+done
+if [[ ${#missing[@]} -gt 0 ]]; then
+ echo "❌ $ENV_FILE 缺必要 key: ${missing[*]}"
+ exit 2
+fi
+echo "✓ $ENV_FILE 檢查通過"
+
+# ---------- 4. 工作目錄 ----------
+mkdir -p "$HOME/aider-watch/"{buffer,logs}
+touch "$HOME/aider-watch/live.log"
+echo "✓ ~/aider-watch/ 工作目錄就緒"
+
+# ---------- 5. launchd ----------
+DEST="$HOME/Library/LaunchAgents"
+mkdir -p "$DEST"
+PLIST_SRC="$ROOT/launchd/com.awoooi.aider-flush.plist"
+PLIST_DST="$DEST/com.awoooi.aider-flush.plist"
+
+cp "$PLIST_SRC" "$PLIST_DST"
+launchctl unload "$PLIST_DST" 2>/dev/null || true
+launchctl load -w "$PLIST_DST"
+
+if ! launchctl list | grep -q "com.awoooi.aider-flush"; then
+ echo "❌ launchd flush job 載入失敗"
+ exit 3
+fi
+echo "✓ launchd com.awoooi.aider-flush 已註冊(每 5 min 跑)"
+
+# ---------- 6. doctor ----------
+echo ""
+echo "-> aider-watch doctor"
+if ! aider-watch doctor; then
+ echo "❌ doctor 檢查未全過 — 請修完問題後重跑"
+ exit 4
+fi
+
+echo ""
+echo "🎉 安裝完成!"
+echo ""
+echo "使用:"
+echo " aiderw --message '改 hello' --exit"
+echo " aider-watch doctor # 檢查環境"
+echo " aider-watch flush # 手動 flush buffer"
+echo ""
+echo "卸載:"
+echo " launchctl unload $PLIST_DST"
+echo " pipx uninstall aider-watch-client"
+echo " rm $HOMEBREW_BIN/aiderw $HOMEBREW_BIN/aider-watch"