2025-11-26 15:31:41 +01:00
|
|
|
name: "RunPod AI Service Orchestrator"
|
|
|
|
|
version: "0.1.0"
|
|
|
|
|
description: "Process-based AI service orchestrator for RunPod GPU instances with ComfyUI integration"
|
|
|
|
|
author: "valknar@pivoine.art"
|
|
|
|
|
license: "MIT"
|
|
|
|
|
|
|
|
|
|
# Environment profiles for selective repository management
|
|
|
|
|
envs:
|
|
|
|
|
# RunPod environment variables
|
|
|
|
|
default:
|
|
|
|
|
COMFYUI_ROOT: services/comfyui
|
|
|
|
|
AUDIOCRAFT_ROOT: services/audiocraft
|
|
|
|
|
|
|
|
|
|
# Git repositories to clone for a fresh RunPod deployment
|
|
|
|
|
references:
|
|
|
|
|
# AudioCraft Studio
|
|
|
|
|
- url: https://dev.pivoine.art/valknar/audiocraft-ui.git
|
|
|
|
|
into: $AUDIOCRAFT_ROOT
|
|
|
|
|
# ComfyUI base installation
|
|
|
|
|
- url: https://github.com/comfyanonymous/ComfyUI.git
|
|
|
|
|
into: $COMFYUI_ROOT
|
|
|
|
|
description: "ComfyUI - Node-based interface for image/video/audio generation"
|
|
|
|
|
|
|
|
|
|
# ComfyUI Essential Custom Nodes
|
|
|
|
|
- url: https://github.com/ltdrdata/ComfyUI-Manager.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-Manager
|
|
|
|
|
description: "ComfyUI Manager - Install/manage custom nodes and models"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-VideoHelperSuite
|
|
|
|
|
description: "Video operations and processing"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-AnimateDiff-Evolved
|
|
|
|
|
description: "AnimateDiff for video generation"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/cubiq/ComfyUI_IPAdapter_plus.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI_IPAdapter_plus
|
|
|
|
|
description: "IP-Adapter for style transfer"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-Impact-Pack
|
|
|
|
|
description: "Auto face enhancement and detailer"
|
|
|
|
|
|
|
|
|
|
# ComfyUI Optional Custom Nodes
|
|
|
|
|
- url: https://github.com/kijai/ComfyUI-CogVideoXWrapper.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-CogVideoXWrapper
|
|
|
|
|
description: "CogVideoX integration for text-to-video"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/ltdrdata/ComfyUI-Inspire-Pack.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-Inspire-Pack
|
|
|
|
|
description: "Additional inspiration tools"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-Advanced-ControlNet
|
|
|
|
|
description: "Advanced ControlNet features"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/MrForExample/ComfyUI-3D-Pack.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-3D-Pack
|
|
|
|
|
description: "3D asset generation"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI_UltimateSDUpscale
|
|
|
|
|
description: "Ultimate SD Upscale for high-quality image upscaling"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/kijai/ComfyUI-KJNodes.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-KJNodes
|
|
|
|
|
description: "Kijai optimizations for HunyuanVideo and Wan2.2 (FP8 scaling, video helpers, model loading)"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/Fannovel16/comfyui_controlnet_aux.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/comfyui_controlnet_aux
|
|
|
|
|
description: "ControlNet preprocessors (Canny, Depth, OpenPose, MLSD) for Wan2.2 Fun Control"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/city96/ComfyUI-GGUF.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/ComfyUI-GGUF
|
|
|
|
|
description: "GGUF quantization support for memory-efficient model loading"
|
|
|
|
|
|
|
|
|
|
- url: https://github.com/11cafe/comfyui-workspace-manager.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/comfyui-workspace-manager
|
|
|
|
|
description: "Workspace manager for ComfyUI - workflow/model organization"
|
|
|
|
|
|
|
|
|
|
- url: https://dev.pivoine.art/valknar/comfyui-extras.git
|
|
|
|
|
into: $COMFYUI_ROOT/custom_nodes/comfyui-extras
|
|
|
|
|
|
|
|
|
|
# Deployment scripts for RunPod instances
|
|
|
|
|
scripts:
|
|
|
|
|
setup: |
|
|
|
|
|
arty deps
|
|
|
|
|
arty setup/tailscale
|
|
|
|
|
arty setup/services
|
|
|
|
|
arty setup/comfyui
|
|
|
|
|
arty models/download
|
|
|
|
|
arty models/link
|
|
|
|
|
arty supervisor/start
|
|
|
|
|
|
|
|
|
|
setup/tailscale: |
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo " Setting up tailscale"
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo ""
|
|
|
|
|
|
2025-11-26 18:04:53 +01:00
|
|
|
if [ ! "$TAILSCALE_AUTHKEY" ]; then
|
|
|
|
|
echo " ⚠ Tailscale disabled (no TAILSCALE_AUTHKEY in env)"
|
|
|
|
|
echo " Services requiring VPN connectivity will not work"
|
|
|
|
|
exit 1
|
2025-11-26 15:31:41 +01:00
|
|
|
fi
|
|
|
|
|
|
2025-11-26 18:04:53 +01:00
|
|
|
echo " Starting Tailscale daemon..."
|
|
|
|
|
tailscaled --tun=userspace-networking --socks5-server=localhost:1055 &
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
|
|
echo " Connecting to Tailscale network..."
|
|
|
|
|
HOSTNAME="runpod-ai-orchestrator"
|
|
|
|
|
tailscale up --authkey="$TAILSCALE_AUTHKEY" --advertise-tags=tag:gpu --hostname="$HOSTNAME" || {
|
|
|
|
|
echo " ⚠ Tailscale connection failed, continuing without VPN"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Get Tailscale IP if connected
|
|
|
|
|
TAILSCALE_IP=$(tailscale ip -4 2>/dev/null || echo "not connected")
|
|
|
|
|
if [ "$TAILSCALE_IP" == "not connected" ]; then
|
|
|
|
|
echo " ⚠ Tailscale failed to obtain IP"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo " ✓ Tailscale connected"
|
|
|
|
|
echo " Hostname: $HOSTNAME"
|
|
|
|
|
echo " IP: $TAILSCALE_IP"
|
|
|
|
|
|
2025-11-26 15:31:41 +01:00
|
|
|
setup/services: |
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo " Setting up services python venvs"
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
# Install dependencies for each custom node
|
|
|
|
|
echo "Setting up venvs for all services..."
|
|
|
|
|
cd services
|
|
|
|
|
|
|
|
|
|
installed_count=0
|
|
|
|
|
skipped_count=0
|
|
|
|
|
|
|
|
|
|
for dir in */; do
|
2025-11-26 21:26:19 +01:00
|
|
|
cd $dir
|
|
|
|
|
python3 -m venv venv && source venv/bin/activate
|
2025-11-26 22:03:03 +01:00
|
|
|
pip install --upgrade pip
|
2025-11-26 21:26:19 +01:00
|
|
|
if [ -f "requirements.txt" ]; then
|
2025-11-26 15:31:41 +01:00
|
|
|
echo ""
|
|
|
|
|
echo "📦 Installing ${dir%/} dependencies..."
|
2025-11-26 21:26:19 +01:00
|
|
|
if pip install -r "requirements.txt"; then
|
2025-11-26 15:31:41 +01:00
|
|
|
installed_count=$((installed_count + 1))
|
|
|
|
|
echo " ✓ ${dir%/} dependencies installed"
|
|
|
|
|
else
|
|
|
|
|
echo " ⚠ Warning: Some dependencies for ${dir%/} may have failed"
|
|
|
|
|
installed_count=$((installed_count + 1))
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
skipped_count=$((skipped_count + 1))
|
|
|
|
|
fi
|
2025-11-26 21:26:19 +01:00
|
|
|
deactivate
|
|
|
|
|
cd -
|
2025-11-26 15:31:41 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "✓ Service environments configured successfully"
|
|
|
|
|
echo " Services with dependencies: $installed_count"
|
|
|
|
|
echo " Services without requirements.txt: $skipped_count"
|
|
|
|
|
|
|
|
|
|
setup/comfyui: |
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo " Setting up ComfyUI"
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
cd $COMFYUI_ROOT
|
|
|
|
|
|
|
|
|
|
# Activate ComfyUI venv
|
|
|
|
|
if [ ! -d "venv" ]; then
|
|
|
|
|
echo "❌ ERROR: ComfyUI venv not found. Run setup/venvs first!"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
source venv/bin/activate
|
|
|
|
|
|
|
|
|
|
# Install common extension dependencies
|
|
|
|
|
echo "Installing common extension dependencies..."
|
|
|
|
|
pip install GitPython opencv-python-headless diffusers insightface onnxruntime
|
|
|
|
|
|
|
|
|
|
# Create model directory structure
|
|
|
|
|
echo "Creating ComfyUI model directories..."
|
2025-11-27 10:01:28 +01:00
|
|
|
mkdir -p $COMFYUI_ROOT/models/{checkpoints,unet,vae,loras,clip,clip_vision,controlnet,ipadapter,embeddings,upscale_models,video_models,animatediff_models,animatediff_motion_lora,audio_models,configs,diffusers,diffusion_models,musicgen,latent_upscale_models}
|
2025-11-26 15:31:41 +01:00
|
|
|
|
|
|
|
|
# Install dependencies for each custom node
|
|
|
|
|
echo "Installing dependencies for all custom nodes..."
|
|
|
|
|
cd custom_nodes
|
|
|
|
|
|
|
|
|
|
installed_count=0
|
|
|
|
|
skipped_count=0
|
|
|
|
|
|
|
|
|
|
for dir in */; do
|
|
|
|
|
if [ -f "${dir}requirements.txt" ]; then
|
|
|
|
|
echo ""
|
|
|
|
|
echo "📦 Installing ${dir%/} dependencies..."
|
|
|
|
|
if pip install -r "${dir}requirements.txt"; then
|
|
|
|
|
installed_count=$((installed_count + 1))
|
|
|
|
|
echo " ✓ ${dir%/} dependencies installed"
|
|
|
|
|
else
|
|
|
|
|
echo " ⚠ Warning: Some dependencies for ${dir%/} may have failed"
|
|
|
|
|
installed_count=$((installed_count + 1))
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
skipped_count=$((skipped_count + 1))
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
deactivate
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "✓ Extension dependencies installation complete"
|
|
|
|
|
echo " Extensions with dependencies: $installed_count"
|
|
|
|
|
echo " Extensions without requirements.txt: $skipped_count"
|
|
|
|
|
|
|
|
|
|
models/download: |
|
|
|
|
|
artifact_civitai_download.sh download -c ./models/models_civitai.yaml --cache-dir ./.cache/civitai
|
|
|
|
|
artifact_huggingface_download.sh download -c ./models/models_huggingface.yaml --cache-dir ./.cache/huggingface
|
|
|
|
|
|
|
|
|
|
models/link: |
|
2025-11-26 23:51:21 +01:00
|
|
|
artifact_civitai_download.sh link -c ./models/models_civitai.yaml --cache-dir $PWD/.cache/civitai --output-dir ./services/comfyui/models
|
|
|
|
|
artifact_huggingface_download.sh link -c ./models/models_huggingface.yaml --cache-dir $PWD/.cache/huggingface --output-dir ./services/comfyui/models
|
2025-11-26 15:31:41 +01:00
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Supervisor Control Scripts
|
|
|
|
|
#
|
|
|
|
|
supervisor/start: |
|
2025-11-26 18:04:53 +01:00
|
|
|
mkdir -p .logs/
|
2025-11-26 15:31:41 +01:00
|
|
|
supervisord -c supervisord.conf
|
|
|
|
|
|
|
|
|
|
supervisor/stop: |
|
|
|
|
|
supervisorctl -c supervisord.conf shutdown
|
|
|
|
|
|
|
|
|
|
supervisor/status: |
|
|
|
|
|
supervisorctl -c supervisord.conf status
|
|
|
|
|
|
|
|
|
|
supervisor/restart: |
|
|
|
|
|
supervisorctl -c supervisord.conf restart all
|