feat: add script to launch Image Studio with local ComfyUI server

This commit is contained in:
syntaxbullet
2026-07-11 15:11:22 +02:00
parent 5915c62a9a
commit f4e13b80e7
3 changed files with 89 additions and 0 deletions

74
scripts/dev-with-comfy.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
set -euo pipefail
COMFYUI_HOST="${COMFYUI_HOST:-127.0.0.1}"
COMFYUI_PORT="${COMFYUI_PORT:-8188}"
COMFYUI_URL="${COMFYUI_URL:-http://${COMFYUI_HOST}:${COMFYUI_PORT}}"
COMFYUI_BASE_DIR="${COMFYUI_BASE_DIR:-/Users/syntaxbullet/Documents/ComfyUI}"
COMFYUI_SOURCE_DIR="${COMFYUI_SOURCE_DIR:-/Users/syntaxbullet/ComfyUI-Installs/ComfyUI/ComfyUI}"
COMFYUI_PYTHON="${COMFYUI_PYTHON:-${COMFYUI_BASE_DIR}/.venv/bin/python}"
COMFYUI_MODEL_PATHS_CONFIG="${COMFYUI_MODEL_PATHS_CONFIG:-/Users/syntaxbullet/Library/Application Support/Comfy Desktop/shared_model_paths.yaml}"
COMFYUI_READY_TIMEOUT_SECONDS="${COMFYUI_READY_TIMEOUT_SECONDS:-120}"
comfy_pid=""
cleanup() {
if [[ -n "${comfy_pid}" ]] && kill -0 "${comfy_pid}" 2>/dev/null; then
echo "Stopping ComfyUI (PID ${comfy_pid})..."
kill "${comfy_pid}" 2>/dev/null || true
wait "${comfy_pid}" 2>/dev/null || true
fi
}
trap cleanup EXIT INT TERM
comfy_is_ready() {
curl --fail --silent --show-error --max-time 2 "${COMFYUI_URL}/object_info" >/dev/null 2>&1
}
if comfy_is_ready; then
echo "Using existing ComfyUI server at ${COMFYUI_URL}."
else
if [[ ! -x "${COMFYUI_PYTHON}" ]]; then
echo "ComfyUI Python executable not found: ${COMFYUI_PYTHON}" >&2
exit 1
fi
if [[ ! -f "${COMFYUI_SOURCE_DIR}/main.py" ]]; then
echo "ComfyUI entrypoint not found: ${COMFYUI_SOURCE_DIR}/main.py" >&2
exit 1
fi
echo "Starting ComfyUI at ${COMFYUI_URL}..."
"${COMFYUI_PYTHON}" "${COMFYUI_SOURCE_DIR}/main.py" \
--base-directory "${COMFYUI_BASE_DIR}" \
--user-directory "${COMFYUI_BASE_DIR}/user" \
--input-directory "${COMFYUI_BASE_DIR}/input" \
--output-directory "${COMFYUI_BASE_DIR}/output" \
--extra-model-paths-config "${COMFYUI_MODEL_PATHS_CONFIG}" \
--listen "${COMFYUI_HOST}" \
--port "${COMFYUI_PORT}" &
comfy_pid=$!
deadline=$((SECONDS + COMFYUI_READY_TIMEOUT_SECONDS))
until comfy_is_ready; do
if ! kill -0 "${comfy_pid}" 2>/dev/null; then
wait "${comfy_pid}" || true
echo "ComfyUI exited before becoming ready." >&2
exit 1
fi
if (( SECONDS >= deadline )); then
echo "Timed out waiting for ComfyUI after ${COMFYUI_READY_TIMEOUT_SECONDS} seconds." >&2
exit 1
fi
sleep 1
done
echo "ComfyUI is ready."
fi
echo "Starting Image Studio..."
COMFYUI_URL="${COMFYUI_URL}" bun --hot index.ts