#!/usr/bin/env bash set -euo pipefail COMFYUI_DIR="${COMFYUI_DIR:-/workspace/ComfyUI}" CUSTOM_NODES_DIR="${CUSTOM_NODES_DIR:-$COMFYUI_DIR/custom_nodes}" PYTHON_BIN="${PYTHON_BIN:-$COMFYUI_DIR/venv/bin/python}" if [ ! -d "$COMFYUI_DIR" ]; then echo "ComfyUI directory not found: $COMFYUI_DIR" >&2 exit 1 fi if [ ! -x "$PYTHON_BIN" ]; then if command -v python3 >/dev/null 2>&1; then PYTHON_BIN="$(command -v python3)" else echo "Python not found. Set PYTHON_BIN=/path/to/python" >&2 exit 1 fi fi mkdir -p "$CUSTOM_NODES_DIR" install_node() { local name="$1" local repo="$2" local ref="${3:-}" local dir="$CUSTOM_NODES_DIR/$name" if [ -d "$dir/.git" ]; then echo "==> Updating $name" git -C "$dir" fetch --depth 1 origin "${ref:-HEAD}" || git -C "$dir" fetch origin else echo "==> Installing $name" git clone --depth 1 "$repo" "$dir" fi if [ -n "$ref" ]; then git -C "$dir" checkout --quiet "$ref" fi if [ -f "$dir/requirements.txt" ]; then echo "==> Installing Python requirements for $name" if command -v uv >/dev/null 2>&1; then UV_INDEX_URL="${UV_INDEX_URL:-https://pypi.tuna.tsinghua.edu.cn/simple}" \ uv pip install --python "$PYTHON_BIN" -r "$dir/requirements.txt" else "$PYTHON_BIN" -m pip install -r "$dir/requirements.txt" fi fi if [ -f "$dir/install.py" ]; then echo "==> Running install.py for $name" "$PYTHON_BIN" "$dir/install.py" || true fi } # ComfyUI-Manager backend API. The v1.46.x cloud frontend already contains the # Manager UI; this backend node provides /manager/* and /customnode/* endpoints # for local/docker/external ComfyUI instances. install_node "ComfyUI-Manager" "https://github.com/Comfy-Org/ComfyUI-Manager.git" # Nodes used by common RunningHub digital-human / video templates. install_node "audio-separation-nodes-comfyui" "https://github.com/christian-byrne/audio-separation-nodes-comfyui.git" install_node "ComfyUI_Yvann-Nodes" "https://github.com/yvann-ba/ComfyUI_Yvann-Nodes.git" install_node "ComfyUI-Easy-Use" "https://github.com/yolain/ComfyUI-Easy-Use.git" install_node "ComfyUI-VoxCPM" "https://github.com/wildminder/ComfyUI-VoxCPM.git" install_node "ComfyUI-WanVideoWrapper" "https://github.com/kijai/ComfyUI-WanVideoWrapper.git" install_node "ComfyUI-Whisper-Translator" "https://github.com/civen-cn/ComfyUI-Whisper-Translator.git" install_node "ComfyUI-KJNodes" "https://github.com/kijai/ComfyUI-KJNodes.git" cat <<'EOF' RunningHub template nodes installed. Notes: - Install system packages such as ffmpeg/libsndfile/rubberband separately if a node requires them at runtime. - The screenshot also references a "soundflow" package. I did not find a stable public repository for that exact package name; install it through ComfyUI-Manager or add its repository manually when you have the source URL. - Missing model files, for example Wan/InfiniteTalk checkpoints, are not custom nodes. Put those models into the matching ComfyUI models folders or use a backend where RunningHub/Cloud already provides them. EOF