Initial commit
All checks were successful
Build and Push RunPod Docker Image / build-and-push (push) Successful in 1m28s
All checks were successful
Build and Push RunPod Docker Image / build-and-push (push) Successful in 1m28s
This commit is contained in:
253
arty.yml
Normal file
253
arty.yml
Normal file
@@ -0,0 +1,253 @@
|
||||
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/MixLabPro/comfyui-sound-lab.git
|
||||
into: $COMFYUI_ROOT/custom_nodes/comfyui-sound-lab
|
||||
description: "MusicGen and Stable Audio integration"
|
||||
|
||||
- url: https://github.com/billwuhao/ComfyUI_DiffRhythm.git
|
||||
into: $COMFYUI_ROOT/custom_nodes/ComfyUI_DiffRhythm
|
||||
description: "DiffRhythm - Full-length song generation (up to 4m45s) with text/audio conditioning"
|
||||
|
||||
- url: https://github.com/billwuhao/ComfyUI_ACE-Step.git
|
||||
into: $COMFYUI_ROOT/custom_nodes/ComfyUI_ACE-Step
|
||||
description: "ACE Step - State-of-the-art music generation with 19-language support, voice cloning, and superior coherence"
|
||||
|
||||
- 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 ""
|
||||
|
||||
if [ -n "${TAILSCALE_AUTHKEY:-}" ]; then
|
||||
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 connected"
|
||||
echo " Hostname: $HOSTNAME"
|
||||
echo " IP: $TAILSCALE_IP"
|
||||
|
||||
# Export for other services
|
||||
export GPU_TAILSCALE_IP="$TAILSCALE_IP"
|
||||
else
|
||||
echo " ⚠ Tailscale failed to obtain IP"
|
||||
fi
|
||||
else
|
||||
echo " ⚠ Tailscale disabled (no TAILSCALE_AUTHKEY in env)"
|
||||
echo " Services requiring VPN connectivity will not work"
|
||||
fi
|
||||
|
||||
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
|
||||
cd $dir && python3 -m venv venv && source venv/bin/activate
|
||||
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
|
||||
deactivate && cd ..
|
||||
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..."
|
||||
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}
|
||||
|
||||
# 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: |
|
||||
artifact_civitai_download.sh link -c ./models/models_civitai.yaml --cache-dir ./.cache/civitai --output-dir ./services/comfyui/models
|
||||
artifact_huggingface_download.sh link -c ./models/models_huggingface.yaml --cache-dir ./.cache/huggingface --output-dir ./services/comfyui/models
|
||||
|
||||
#
|
||||
# Supervisor Control Scripts
|
||||
#
|
||||
supervisor/start: |
|
||||
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
|
||||
Reference in New Issue
Block a user