#!/usr/bin/env bash # Sync token-optimization Router / memory env to 103 Portal (.env only). # Does NOT change global LLM model (keep deepseek-v4-pro for Agent quality). # # Usage: # bash scripts/sync-token-optimization-env-103.sh # dry-run # bash scripts/sync-token-optimization-env-103.sh --apply # write + restart portal set -euo pipefail HOST="${MEMIND_103_HOST:-john@58.38.22.103}" REMOTE_ENV="/Users/john/Project/Memind/.env" APPLY=0 if [[ "${1:-}" == "--apply" ]]; then APPLY=1 fi PATCH_LINES=( "MEMIND_CHAT_LLM_ROUTER_ENABLED=1" "MEMIND_CHAT_LLM_ROUTER_SHADOW=0" "MEMIND_CHAT_ROUTER_CANARY_USER_IDS=" "MEMIND_CHAT_ROUTER_MODEL=deepseek-chat" "MEMIND_CHAT_ROUTER_MEMORY_LIMIT=2" "MEMIND_CHAT_ROUTER_TIMEOUT_MS=2500" "MEMIND_CHAT_ROUTER_MIN_CONFIDENCE=0.65" "MEMORY_AGENT_RESOLVE_LIMIT=3" "MEMORY_RETRIEVER_LIMIT=4" "MEMORY_RETRIEVER_TOKEN_BUDGET=900" "MEMORY_PERSONA_MAX_TOKENS=300" ) echo "==> Target: ${HOST}:${REMOTE_ENV}" echo "==> Patch:" printf ' %s\n' "${PATCH_LINES[@]}" echo if [[ "${APPLY}" -ne 1 ]]; then echo "Dry-run only. Re-run with --apply to write and restart Portal." exit 0 fi PATCH_B64=$(printf '%s\n' "${PATCH_LINES[@]}" | base64 | tr -d '\n') ssh "${HOST}" "bash -s" <> "\${ENV_FILE}" fi } while IFS='=' read -r key val; do [[ -z "\${key}" ]] && continue upsert "\${key}" "\${val}" done <<'ENVPATCH' $(printf '%s\n' "${PATCH_LINES[@]}") ENVPATCH echo "==> Updated keys:" grep -E '^(MEMIND_CHAT_|MEMORY_AGENT_RESOLVE|MEMORY_RETRIEVER|MEMORY_PERSONA_MAX)' "\${ENV_FILE}" || true GUI="\$(/usr/bin/stat -f %u /dev/console)" launchctl kickstart -k "gui/\${GUI}/cn.tkmind.memind-portal" sleep 3 curl -sf http://127.0.0.1:8081/api/status >/dev/null echo "Portal restarted and /api/status OK" REMOTE echo "Done."