- Add runpod env with AI_ROOT, COMFYUI_ROOT, HF_CACHE, LOGS_DIR, BIN_DIR
- Update workflows/link-comfyui to use $AI_ROOT for absolute paths
- Workflows will now link correctly from /workspace/ai/comfyui/workflows
- Create logs directory with .gitkeep
- Update .gitignore to track logs dir but ignore log files
- Update supervisord.conf with paths relative to /workspace/ai
- Add supervisor control scripts to arty.yml (start/stop/status/restart)
- All paths now use ../ to reference parent /workspace directory
The HF_TOKEN environment variable is not available in the supervisord environment.
Since the orchestrator service has autostart=false, removing the HF_TOKEN reference
to allow supervisord to start successfully.
All paths now relative from /workspace directory where supervisord runs.
This makes the configuration truly portable.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move comfyui and vllm out of models/ directory to top level for better
organization. Replace all hardcoded /workspace paths with relative paths
to make the configuration portable across different environments.
Changes:
- Move models/comfyui/ → comfyui/
- Move models/vllm/ → vllm/
- Remove models/ directory (empty)
- Update arty.yml: replace /workspace with environment variables
- Update supervisord.conf: use relative paths from /workspace/ai
- Update all script references to use new paths
- Maintain TQDM_DISABLE=1 to fix BrokenPipeError
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add multi-ControlNet workflow combining depth and canny edge control for
precise composition with SDXL. Includes example control images for testing.
Changes:
- Add controlnet-fusion-production-v1.json with 18 properly linked nodes
- Add examples/control_depth.png (radial gradient depth map)
- Add examples/control_canny.png (geometric edge detection)
- Chain depth → canny ControlNet application
- Configure for SDXL with 30 steps, CFG 7.0
- Support dual control strengths (depth: 0.8, canny: 0.6)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The ControlNet workflow requires:
- ControlNet models (not currently installed)
- Control images (user-provided)
- ComfyUI-Advanced-ControlNet custom nodes
This workflow cannot function without these dependencies, so removing
it from production workflows. Can be re-added when ControlNet models
are available in the model orchestrator.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The ControlNet workflow had no links between nodes. Added all required
connections for a complete multi-ControlNet pipeline:
- SDXL checkpoint → model/CLIP/VAE
- Load depth & canny control images
- Load ControlNet models
- Chain ControlNet applications (depth → canny)
- Text encoders → conditioning
- Sampler → VAE decode → save/preview
Also fixed checkpoint to use sd_xl_base_1.0.safetensors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed checkpoint from FLUX.1-schnell to sd_xl_base_1.0.safetensors
to match available models. Also updated sampling parameters for SDXL:
- Steps: 4 → 20 (SDXL needs more steps)
- CFG: 1.0 → 7.0 (standard for SDXL)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The batch-pipeline workflow had no links between nodes, making it
non-functional in ComfyUI. Added all required inputs/outputs and
links to properly connect the workflow chain.
Changes:
- Added inputs/outputs to all nodes
- Created 10 links connecting the workflow
- Set batch size to 4 in EmptyLatentImage
- Simplified to 8 core nodes for clarity
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add TQDM_DISABLE=1 environment variable to ComfyUI service to fix
BrokenPipeError during sampling operations. This is caused by
ComfyUI-Manager's stderr wrapper interfering with tqdm's progress bar
mechanism.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Clean up project structure by organizing WebDAV sync service properly.
Changes:
- Move scripts/comfyui_webdav_sync.py → webdav-sync/webdav_sync.py
- Create webdav-sync/requirements.txt with watchdog and webdavclient3
- Remove webdav dependencies from model-orchestrator/requirements.txt
- Delete unused scripts/ folder (start-all.sh, status.sh, stop-all.sh)
- Update supervisord.conf to use new path /workspace/ai/webdav-sync/webdav_sync.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add Python watchdog service to automatically sync ComfyUI outputs to HiDrive WebDAV storage.
Changes:
- Add scripts/comfyui_webdav_sync.py: File watcher service using watchdog + webdavclient3
- Update model-orchestrator/requirements.txt: Add watchdog and webdavclient3 dependencies
- Update supervisord.conf: Add webdav-sync program with ENV variable support
- Update arty.yml: Add service management scripts (start/stop/restart/status/logs)
WebDAV credentials are now loaded from .env file (WEBDAV_URL, WEBDAV_USERNAME, WEBDAV_PASSWORD, WEBDAV_REMOTE_PATH)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- Added Stable Diffusion v1.5 model to comfyui_models.yaml
- Required for AnimateDiff motion modules (mm_sd_v15_v2.ckpt)
- Size: 4GB, VRAM: 8GB
- Updated AnimateDiff workflow to use SD 1.5 instead of SDXL
- Changed checkpoint from sd_xl_base_1.0.safetensors to v1-5-pruned-emaonly.safetensors
- Updated VRAM requirement from 18GB to 12GB
- Updated model requirements in metadata
AnimateDiff v15 motion modules are not compatible with SDXL.
This resolves: "Motion module 'mm_sd_v15_v2.ckpt' is intended for SD1.5 models"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed widget_values order for KSamplerAdvanced node:
- Changed sampler from dpmpp_2m to euler (valid sampler)
- Changed scheduler from karras to normal (valid scheduler)
- Fixed end_at_step from 10000 to 25 (matching steps count)
This resolves validation errors:
- scheduler '0' not in list
- cfg could not convert 'dpmpp_2m' to float
- sampler_name 'karras' not in list
- end_at_step 'disable' invalid literal for int
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed type fields to use actual ComfyUI directory names:
- diffusion_models → checkpoints (for FLUX, CogVideoX)
- musicgen → checkpoints (with notes about custom_nodes placement)
All models now properly map to real ComfyUI/models/* subdirectories.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
MusicGen Large is split into multiple files (pytorch_model-00001/00002-of-00002.bin)
Added all 3 files to the mapping (2 parts + index.json)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added 'files' array to all models specifying source and destination filenames
- Image models (FLUX, SDXL, SD 3.5): Use original checkpoint filenames
- Video models (CogVideoX, SVD): Use descriptive filenames
- Audio models (MusicGen): Prefix with model name for clarity
- Support models (CLIP, IP-Adapter, AnimateDiff): Keep original names
- This allows precise control over linked filenames in ComfyUI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Audio model files (MusicGen) should not be mixed with image generation
checkpoints. Changed type from 'checkpoints' to 'audio_models' to ensure
they are linked to the correct ComfyUI directory.
Supervisor groups programs as 'ai-services:comfyui' and 'ai-services:orchestrator'
so commands need to use these full names instead of just the program names.
- Replace shell script calls with direct supervisorctl commands
- Organize services hierarchically: services/{service}/action
- Add all service control commands: start, stop, restart, status, logs
- Support both individual service control and all services control
- Remove obsolete script-based service management
New command structure:
- All services: arty services/{start,stop,restart,status}
- ComfyUI: arty services/comfyui/{start,stop,restart,status,logs}
- Orchestrator: arty services/orchestrator/{start,stop,restart,status,logs}
Change CheckpointLoaderSimple to use 'sd_xl_base_1.0.safetensors' instead of
'diffusers/stable-diffusion-xl-base-1.0' to match the actual checkpoint file
linked in /root/ComfyUI/models/checkpoints/
- Add 'type' field to all model entries (diffusers, clip_vision, checkpoints, etc.)
- Add animatediff_models category with guoyww/animatediff repo
- Add ipadapter_models category with h94/IP-Adapter repo
- Map models to correct ComfyUI subdirectories
This fixes model linking issues where models weren't appearing in ComfyUI.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace deprecated AnimateDiffLoaderV1 with ADE_LoadAnimateDiffModel
- Add ADE_ApplyAnimateDiffModelSimple to create M_MODELS
- Add ADE_UseEvolvedSampling to inject motion into base model
- Replace AnimateDiffSampler with KSamplerAdvanced
- Add complete node links for all connections
- Update node IDs and execution order
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace ADE_AnimateDiffSampler with KSamplerAdvanced
- Adjust widget values for KSamplerAdvanced compatibility
- Add proper node name mappings in fix_workflows.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
ComfyUI-CogVideoXWrapper requires diffusers>=0.31.0 to function properly. Pin the version requirement to ensure the correct version is installed during setup.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add ComfyUI_UltimateSDUpscale repository to support the ultimate-sd-upscale-production-v1 workflow. This provides high-quality image upscaling capabilities.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Update workflows/link-comfyui to link workflow files to the correct ComfyUI user directory (/workspace/ComfyUI/user/default/workflows/) instead of the non-standard /workspace/ComfyUI/workflows/ location.
Add category prefixes to maintain organization in ComfyUI's flat workflow browser:
- t2i_: Text-to-Image workflows
- i2i_: Image-to-Image workflows
- i2v_: Image-to-Video workflows
- t2m_: Text-to-Music workflows
- upscale_: Upscaling workflows
- adv_: Advanced workflows
Changes:
- Target correct ComfyUI user workflows directory
- Add category prefixes to all workflow symlinks
- Clean up old symlinks from previous location
- Workflows will now appear in ComfyUI's workflow browser sorted by category
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Update workflows/link-comfyui script to link individual JSON files directly to /workspace/ComfyUI/workflows/ instead of subdirectories. ComfyUI web UI requires workflows to be in the root workflows directory to display them.
Changes:
- Remove old directory symlinks
- Link all 20 workflow JSON files directly to workflows root
- Preserve original descriptive filenames (e.g., flux-dev-t2i-production-v1.json)
- Add workflow count display
- Keep README and WORKFLOW_STANDARDS documentation links
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>