The wrapper nodes aren't loaded yet. ComfyUI needs to be restarted to pick up the new custom node. But I should use the native implementation if possible since it's already available. Let me check what native nodes are available for I2V.

# Check native HunyuanVideo I2V nodes
curl -s http://localhost:8188/object_info/TextEncodeHunyuanVideo_ImageToVideo | python3 -m json.tool 2>/dev/null | head -60

# Check sampler for native
curl -s http://localhost:8188/object_info | python3 -c "
import json, sys
data = json.load(sys.stdin)
for name in sorted(data.keys()):
    if 'Sampler' in name and ('hunyuan' in name.lower() or 'Hunyuan' in name):
        print(name)
" 2>/dev/null


{
    "TextEncodeHunyuanVideo_ImageToVideo": {
        "input": {
            "required": {
                "clip": [
                    "CLIP",
                    {}
                ],
                "clip_vision_output": [
                    "CLIP_VISION_OUTPUT",
                    {}
                ],
                "prompt": [
                    "STRING",
                    {
                        "multiline": true,
                        "dynamicPrompts": true
                    }
                ],
                "image_interleave": [
                    "INT",
                    {
                        "tooltip": "How much the image influences things vs the text prompt. Higher number means more influence from the text prompt.",
                        "default": 2,
                        "min": 1,
                        "max": 512
                    }
                ]
            }
        },
        "input_order": {
            "required": [
                "clip",
                "clip_vision_output",
                "prompt",
                "image_interleave"
            ]
        },
        "is_input_list": false,
        "output": [
            "CONDITIONING"
        ],
        "output_is_list": [
            false
        ],
        "output_name": [
            "CONDITIONING"
        ],
        "output_tooltips": [
            null
        ],
        "output_matchtypes": null,
        "name": "TextEncodeHunyuanVideo_ImageToVideo",
        "display_name": null,
        "description": "",
        "python_module": "comfy_extras.nodes_hunyuan",
        "category": "advanced/conditioning",
        "output_node": false,
        "deprecated": false,
        "experimental": false,


(no output)


I see - the native HunyuanVideo I2V uses CLIP + CLIP Vision + conditioning. But I need to find the sampler and model loader. Let me check for VideoSampler nodes.

exec

# Check for video samplers
curl -s http://localhost:8188/object_info | python3 -c "
import json, sys
data = json.load(sys.stdin)
for name in sorted(data.keys()):
    if 'Sampler' in name:
        print(name)
" 2>/dev/null | head -20

# Check for HunyuanVideoSampler
curl -s http://localhost:8188/object_info | python3 -c "
import json, sys
data = json.load(sys.stdin)
for name in sorted(data.keys()):
    info = data[name]
    desc = str(info.get('description', '')).lower()
    cat = str(info.get('category', '')).lower()
    if 'hunyuan' in desc or 'hunyuan' in cat:
        print(name, '-', info.get('category', ''))
" 2>/dev/null | head -20


FluxSamplerParams+
KSampler
KSampler Config (rgthree)
KSamplerAdvanced
KSamplerSelect
KSamplerVariationsStochastic+
KSamplerVariationsWithNoise+
SamplerCustom
SamplerCustomAdvanced
SamplerDPMAdaptative
SamplerDPMPP_2M_SDE
SamplerDPMPP_2S_Ancestral
SamplerDPMPP_3M_SDE
SamplerDPMPP_SDE
SamplerER_SDE
SamplerEulerAncestral
SamplerEulerAncestralCFGPP
SamplerEulerCFGpp
SamplerLCMUpscale
SamplerLMS


ApplyRifleXRoPE_HunuyanVideo - KJNodes/experimental
ApplyRifleXRoPE_WanVideo - KJNodes/experimental
DualCLIPLoader - advanced/loaders


I think HunyuanVideo uses the standard KSampler. Let me check the example workflow more carefully and see what nodes it uses. Let me look at an example that uses the UNETLoader with the hunyuan model.

# Read more of the wrapper example
python3 -c "
import json
with open('/home/crogers2287/ComfyUI/custom_nodes/ComfyUI-HunyuanVideoWrapper/example_workflows/hyvideo_i2v_example_fixed_model_02.json') as f:
    data = json.load(f)
for node in data.get('nodes', []):
    ntype = node.get('type')
    if 'Loader' in ntype or 'loader' in ntype.lower() or 'Model' in ntype:
        print(f\"{ntype}: {node.get('widgets_values', [])[:3]}\")" | head -20


HyVideoVAELoader: ['hyvid\\hunyuan_video_vae_bf16.safetensors', 'bf16']
HyVideoModelLoader: ['hyvideo\\hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors', 'bf16', 'fp8_e4m3fn']


The wrapper uses HyVideoModelLoader and HyVideoVAELoader. These nodes aren't loaded because ComfyUI needs to be restarted. Let me check if we need to restart ComfyUI.

# Check if ComfyUI needs restart
curl -s http://localhost:8188/object_info/HyVideoModelLoader 2>/dev/null | head -5

# Restart ComfyUI to load new nodes
# First check how it's running
ps aux | grep -i comfy | grep -v grep | head -5


crogers+ 3545181  0.0  0.0   4884  2820 ?        Ss   Feb22   0:00 /bin/bash /home/crogers2287/ComfyUI/start.sh


ComfyUI needs to be restarted to pick up the new HunyuanVideoWrapper nodes. Let me check how to restart it.

I need to restart ComfyUI to load the HunyuanVideo nodes. Let me do that:

# Check the start script
cat /home/crogers2287/ComfyUI/start.sh


#!/bin/bash
cd /home/crogers2287/ComfyUI
source venv/bin/activate
python main.py --listen 0.0.0.0 --port 8188


I should not restart ComfyUI without asking the user first, since it could affect other work. Let me inform them of the situation and ask if they want to proceed.

**Setup Status:**

HunyuanVideo needs a ComfyUI restart to load the new nodes. Here's what I've got ready:

| Component | Status |
|-----------|--------|
| **HunyuanVideo I2V Model** | ✅ Downloaded (12.3GB) |
| **HunyuanVideo VAE** | ✅ Downloaded (493MB) |
| **HunyuanVideoWrapper nodes** | ✅ Installed |
| **ComfyUI restart** | ⏳ Needed |

**To proceed:**
I need to restart ComfyUI. This will interrupt any current work but takes ~30 seconds.

Want me to restart ComfyUI now? Or should I wait?


System: [2026-02-26 15:07:38 UTC] Exec completed (gentle-s, code 0) :: gular HTTP download. For better performance, install the package with: `pip install huggingface_hub[hf_xet]` or `pip install hf_xet` Download complete. Moving file to /home/croger…
System: [2026-02-26 15:08:33 UTC] Exec completed (lucky-cl, code 0) :: p install huggingface_hub[hf_xet]` or `pip install hf_xet` Download complete. Moving file to /home/crogers2287/ComfyUI/models/diffusion_models/hunyuan/hunyuan_video_I2V_720_fixed_…

Conversation info (untrusted metadata):
```json
{
  "message_id": "644",
  "sender": "6558388607"
}
```

Do it


User wants me to restart ComfyUI to load the HunyuanVideo nodes.

# Find and kill ComfyUI process
pkill -f "python main.py --listen 0.0.0.0 --port 8188"
sleep 2
echo "ComfyUI stopped"


That command was running when I sent the termination signal. Let me try again to restart ComfyUI.

# Check if ComfyUI is still running
ps aux | grep -E "python.*main.py.*8188" | grep -v grep


crogers+ 2204779  182  0.9 31650256 1253968 ?    Dl   15:13   0:30 python main.py --listen 0.0.0.0 --port 8188


ComfyUI is still running. Let me kill it properly and restart it.

# Kill ComfyUI
kill 2204779
sleep 3
ps aux | grep -E "python.*main.py.*8188" | grep -v grep || echo "ComfyUI stopped"


crogers+ 2213235  353  0.4 7615228 560752 ?      Rl   15:13   0:09 python main.py --listen 0.0.0.0 --port 8188


There's a restart happening automatically - a new process was spawned. Let me check if it's a systemd service or something similar that auto-restarts.

# Check if it's a service
systemctl --user status comfyui 2>/dev/null || echo "Not a user service"
systemctl status comfyui 2>/dev/null || echo "Not a system service"

# Wait for it to fully start
sleep 10
curl -s http://localhost:8188/system_stats | python3 -c "import json,sys; d=json.load(sys.stdin); print('ComfyUI version:', d.get('system',{}).get('comfyui_version','unknown'))" 2>/dev/null || echo "Still starting..."


Not a user service
Not a system service


Command still running (session swift-seaslug, pid 2217807). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


The service might have auto-restarted. Let me check the status.


ComfyUI version: 0.13.0

Process exited with code 0.


ComfyUI is back up. Let me check if the HunyuanVideo wrapper nodes are now loaded.

# Check for HyVideo nodes
curl -s http://localhost:8188/object_info | python3 -c "
import json, sys
data = json.load(sys.stdin)
for name in sorted(data.keys()):
    if name.startswith('HyVideo'):
        print(name)
" 2>/dev/null | head -20


HyVideoBlockSwap
HyVideoCFG
HyVideoContextOptions
HyVideoCustomPromptTemplate
HyVideoDecode
HyVideoEmptyTextEmbeds
HyVideoEncode
HyVideoEncodeKeyframes
HyVideoEnhanceAVideo
HyVideoGetClosestBucketSize
HyVideoI2VEncode
HyVideoInverseSampler
HyVideoLatentPreview
HyVideoLoopArgs
HyVideoLoraBlockEdit
HyVideoLoraSelect
HyVideoModelLoader
HyVideoPromptMixSampler
HyVideoReSampler
HyVideoSTG


Excellent! The HyVideo nodes are now loaded. Let me check what models are available to the loader.

# Check HyVideoModelLoader available models
curl -s http://localhost:8188/object_info/HyVideoModelLoader | python3 -c "
import json, sys
data = json.load(sys.stdin)
req = data.get('HyVideoModelLoader', {}).get('input', {}).get('required', {})
for k, v in req.items():
    if isinstance(v, list) and len(v) > 0 and isinstance(v[0], list):
        for m in v[0]:
            if 'hunyuan' in m.lower() or 'hyvideo' in m.lower():
                print(m)
" 2>/dev/null | head -10

# Check HyVideoVAELoader
curl -s http://localhost:8188/object_info/HyVideoVAELoader | python3 -c "
import json, sys
data = json.load(sys.stdin)
req = data.get('HyVideoVAELoader', {}).get('input', {}).get('required', {})
for k, v in req.items():
    if isinstance(v, list) and len(v) > 0 and isinstance(v[0], list):
        for m in v[0]:
            print(m)
" 2>/dev/null


flux-vae-bf16.safetensors
hunyuan_video_vae_bf16.safetensors
wan_2.1_vae.safetensors
wanvideo/Wan2_1_VAE_bf16.safetensors
z_image_turbo_ae.safetensors


Everything is ready. Now let me create the HunyuanVideo I2V workflow.

write

#!/usr/bin/env python3
"""HunyuanVideo I2V - Better temporal coherence"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model_name": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "precision": "bf16",
        "quantization": "fp8_e4m3fn"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "vae_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "CLIPLoader", "inputs": {
        "clip_name": "t5xxl_fp8_e4m3fn.safetensors",
        "type": "hunyuan_video"
    }},

    "6": {"class_type": "CLIPTextEncode", "inputs": {
        "text": PROMPT,
        "clip": ["5", 0]
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "image": ["2", 0],
        "vae": ["4", 0],
        "width": 848,
        "height": 480,
        "length": 61,
        "batch_size": 1
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {
        "blocks_to_swap": 20
    }},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "positive": ["6", 0],
        "negative": ["6", 0],
        "vae": ["4", 0],
        "samples": ["7", 0],
        "steps": 30,
        "cfg": 1.0,
        "seed": 42,
        "scheduler": "euler",
        "block_swap_args": ["8", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_tiling": True,
        "tile_size": 256,
        "tile_overlap": 64
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode('utf-8'))
            print(f"✅ Submitted! ID: {result.get('prompt_id', prompt_id)}")
            return result.get('prompt_id')
    except urllib.error.HTTPError as e:
        err = e.read().decode('utf-8')
        print(f"❌ Error: {err[:800]}")
        return None

if __name__ == "__main__":
    print("🎬 HunyuanVideo I2V:")
    print("   - Better temporal coherence")
    print("   - 30 steps euler scheduler")
    print("   - 61 frames @ 24fps")
    print()
    submit()


Successfully wrote 3633 bytes to /home/crogers2287/.openclaw/agents/selena/submit_hunyuan.py


Let me check the actual HyVideoSampler inputs to make sure I have the right node structure.

exec

curl -s http://localhost:8188/object_info/HyVideoSampler | python3 -m json.tool 2>/dev/null | head -60


{
    "HyVideoSampler": {
        "input": {
            "required": {
                "model": [
                    "HYVIDEOMODEL"
                ],
                "hyvid_embeds": [
                    "HYVIDEMBEDS"
                ],
                "width": [
                    "INT",
                    {
                        "default": 512,
                        "min": 64,
                        "max": 4096,
                        "step": 16
                    }
                ],
                "height": [
                    "INT",
                    {
                        "default": 512,
                        "min": 64,
                        "max": 4096,
                        "step": 16
                    }
                ],
                "num_frames": [
                    "INT",
                    {
                        "default": 49,
                        "min": 1,
                        "max": 1024,
                        "step": 4
                    }
                ],
                "steps": [
                    "INT",
                    {
                        "default": 30,
                        "min": 1
                    }
                ],
                "embedded_guidance_scale": [
                    "FLOAT",
                    {
                        "default": 6.0,
                        "min": 0.0,
                        "max": 30.0,
                        "step": 0.01
                    }
                ],
                "flow_shift": [
                    "FLOAT",
                    {
                        "default": 9.0,
                        "min": 0.0,
                        "max": 1000.0,
                        "step": 0.01


Okay, so the HyVideoSampler takes HYVIDEOMODEL and HYVIDEMBEDS. I need to check what nodes create these types.

# Check HyVideoI2VEncode outputs
curl -s http://localhost:8188/object_info/HyVideoI2VEncode | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('HyVideoI2VEncode', {})
print('Inputs required:')
for k, v in info.get('input', {}).get('required', {}).items():
    print(f'  {k}: {v}')
print('Outputs:', info.get('output', []))
" 2>/dev/null


Inputs required:
  text_encoders: ['HYVIDTEXTENCODER']
  prompt: ['STRING', {'default': '', 'multiline': True}]
Outputs: ['HYVIDEMBEDS']


So HyVideoI2VEncode needs text_encoders of type HYVIDTEXTENCODER and a prompt. Let me check what nodes produce that.

# Check text encoder loader
curl -s http://localhost:8188/object_info | python3 -c "
import json, sys
data = json.load(sys.stdin)
for name, info in data.items():
    out = info.get('output', [])
    if 'HYVIDTEXTENCODER' in str(out):
        print(name)
" 2>/dev/null


DownloadAndLoadHyVideoTextEncoder


Okay, so I need to use DownloadAndLoadHyVideoTextEncoder. Let me rewrite the workflow correctly.

write

#!/usr/bin/env python3
"""HunyuanVideo I2V - Proper workflow"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model_name": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "precision": "bf16",
        "quantization": "fp8_e4m3fn"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "vae_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "model": "llava-llama-3-8b-v1_1-transformers",
        "precision": "bf16",
        "device": "offload_device"
    }},

    "6": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT
    }},

    "7": {"class_type": "HyVideoBlockSwap", "inputs": {
        "blocks_to_swap": 20
    }},

    "8": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["6", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 1.0,
        "flow_shift": 7.0,
        "seed": 42,
        "scheduler": "euler",
        "block_swap_args": ["7", 0]
    }},

    "9": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["8", 0],
        "enable_tiling": True,
        "tile_size": 256
    }},

    "10": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["9", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode('utf-8'))
            print(f"✅ Submitted! ID: {result.get('prompt_id', prompt_id)}")
            return result.get('prompt_id')
    except urllib.error.HTTPError as e:
        err = e.read().decode('utf-8')
        print(f"❌ Error: {err[:1000]}")
        return None

if __name__ == "__main__":
    print("🎬 HunyuanVideo I2V:")
    print("   - Better temporal coherence")
    print("   - 30 steps euler scheduler")
    print("   - 61 frames @ 24fps (~2.5 sec)")
    print()
    submit()


Successfully wrote 3501 bytes to /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v2.py


Let me check the exact inputs for HyVideoSampler to make sure I have all required fields.

exec

curl -s http://localhost:8188/object_info/HyVideoSampler | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('HyVideoSampler', {})
print('Required inputs:')
for k, v in info.get('input', {}).get('required', {}).items():
    print(f'  {k}')
print()
print('Optional inputs:')
for k in info.get('input', {}).get('optional', {}).keys():
    print(f'  {k}')
" 2>/dev/null


Required inputs:
  model
  hyvid_embeds
  width
  height
  num_frames
  steps
  embedded_guidance_scale
  flow_shift
  seed
  force_offload

Optional inputs:
  samples
  image_cond_latents
  denoise_strength
  stg_args
  context_options
  feta_args
  teacache_args
  scheduler
  riflex_freq_index
  i2v_mode
  loop_args
  fresca_args
  slg_args
  mask


I need to add `force_offload` to the sampler inputs. Let me update the workflow.

edit

    "8": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["6", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 1.0,
        "flow_shift": 7.0,
        "seed": 42,
        "scheduler": "euler",
        "block_swap_args": ["7", 0]
    }},

    "8": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["6", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 1.0,
        "flow_shift": 7.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "euler",
        "block_swap_args": ["7", 0],
        "i2v_mode": True
    }},


Successfully replaced text in /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v2.py.

     ...
  55         "steps": 30,
  56         "embedded_guidance_scale": 1.0,
  57         "flow_shift": 7.0,
  58         "seed": 42,
+ 59         "force_offload": True,
  59         "scheduler": "euler",
- 60         "block_swap_args": ["7", 0]
+ 61         "block_swap_args": ["7", 0],
+ 62         "i2v_mode": True
  61     }},
  62
  63     "9": {"class_type": "HyVideoDecode", "inputs": {
  64         "vae": ["4", 0],
     ...


Now let me also check if I need an I2V encode step for the image. Let me check the HyVideoEncode node.

exec

# Check HyVideoEncode for I2V
curl -s http://localhost:8188/object_info/HyVideoEncode | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('HyVideoEncode', {})
print('Required inputs:')
for k, v in info.get('input', {}).get('required', {}).items():
    print(f'  {k}')
" 2>/dev/null

# Check what outputs the I2V encode produces
curl -s http://localhost:8188/object_info/HyVideoI2VEncode | python3 -m json.tool 2>/dev/null


Required inputs:
  vae
  image
  enable_vae_tiling
  temporal_tiling_sample_size
  spatial_tile_sample_min_size
  auto_tile_size


Prompt: STRING

Use the default prompt templates for the llm text encoder

Use comfy clip model instead, in this case the text encoder loader's clip_l should be disabled

Model to move to offload_device before encoding

Output: HYVIDEMBEDS

Prompt: STRING

Use the default prompt templates for the llm text encoder

Use comfy clip model instead, in this case the text encoder loader's clip_l should be disabled

Model to move to offload_device before encoding

Output: HYVIDEMBEDS


I see - HyVideoI2VEncode has an optional image input. Let me also add the image and HyVideoEncode to encode the image into latents. But wait - looking at the sampler, it needs `image_cond_latents` as optional input. Let me check what the full I2V workflow looks like.

# Read more of the example workflow
python3 << 'EOF'
import json
with open('/home/crogers2287/ComfyUI/custom_nodes/ComfyUI-HunyuanVideoWrapper/example_workflows/hyvideo_i2v_example_fixed_model_02.json') as f:
    data = json.load(f)

# Find key nodes
for node in data.get('nodes', []):
    ntype = node.get('type')
    if ntype in ['HyVideoSampler', 'HyVideoI2VEncode', 'HyVideoEncode', 'LoadImage', 'HyVideoModelLoader']:
        print(f"\n{ntype} (id={node['id']}):")
        widgets = node.get('widgets_values', [])
        if widgets:
            print(f"  widgets: {widgets[:5]}")
        inputs = node.get('inputs', [])
        if inputs:
            for inp in inputs[:5]:
                print(f"  input: {inp.get('name')} -> link {inp.get('link')}")
        outputs = node.get('outputs', [])
        if outputs:
            for out in outputs[:3]:
                print(f"  output: {out.get('name')}")
EOF


LoadImage (id=72):
  widgets: ['anya.jpg', 'image']
  output: IMAGE
  output: MASK

HyVideoEncode (id=43):
  widgets: [False, 64, 256, True, 0.020000000000000004]
  input: vae -> link 176
  input: image -> link 144
  output: samples

HyVideoI2VEncode (id=77):
  widgets: ['A woman in an antique-style dress sits in a chair, but quickly gets up and leaves the chair. In the video, the woman jumped up and ran away. Action shots. Excited beautiful white woman.', True, 'I2V_video', 4]
  input: text_encoders -> link 114
  input: clip_l -> link None
  input: image -> link 145
  input: hyvid_cfg -> link None
  output: hyvid_embeds

HyVideoModelLoader (id=1):
  widgets: ['hyvideo\\hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors', 'bf16', 'fp8_e4m3fn', 'offload_device', 'sdpa']
  input: compile_args -> link None
  input: block_swap_args -> link 179
  input: lora -> link None
  output: model

HyVideoSampler (id=90):
  widgets: [512, 512, 65, 30, 6]
  input: model -> link 162
  input: hyvid_embeds -> link 163
  input: samples -> link None
  input: image_cond_latents -> link 164
  input: stg_args -> link None
  output: samples


Now I understand the workflow better:
1. LoadImage -> image
2. HyVideoEncode (vae, image) -> samples (latents)
3. HyVideoI2VEncode (text_encoders, prompt, image) -> hyvid_embeds
4. HyVideoSampler (model, hyvid_embeds, image_cond_latents=samples) -> samples
5. HyVideoDecode (vae, samples) -> images
6. VHS_VideoCombine (images) -> video

Let me rewrite the workflow properly.

write

#!/usr/bin/env python3
"""HunyuanVideo I2V - Complete workflow"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model_name": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "device": "offload_device",
        "attention_mode": "sdpa"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "vae_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "model": "llava-llama-3-8b-v1_1-transformers",
        "precision": "bf16",
        "device": "offload_device"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["2", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["2", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "euler",
        "block_swap_args": ["8", 0],
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_tiling": True,
        "tile_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode('utf-8'))
            print(f"✅ Submitted! ID: {result.get('prompt_id', prompt_id)}")
            return result.get('prompt_id')
    except urllib.error.HTTPError as e:
        err = e.read().decode('utf-8')
        print(f"❌ Error: {err[:1200]}")
        return None

if __name__ == "__main__":
    print("🎬 HunyuanVideo I2V:")
    print("   - Better temporal coherence")
    print("   - 30 steps euler scheduler")
    print("   - 61 frames @ 24fps (~2.5 sec)")
    print("   - CFG 6.0, flow_shift 9.0")
    print()
    submit()


Successfully wrote 4041 bytes to /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v3.py


Let me check the GPU memory status first, then submit.


memory.free [MiB], memory.total [MiB]
21754 MiB, 24576 MiB
22318 MiB, 24576 MiB


🎬 HunyuanVideo I2V:
   - Better temporal coherence
   - 30 steps euler scheduler
   - 61 frames @ 24fps (~2.5 sec)
   - CFG 6.0, flow_shift 9.0

❌ Error: {"error": {"type": "prompt_outputs_failed_validation", "message": "Prompt outputs failed validation", "details": "Required input is missing: pingpong", "extra_info": {}}, "node_errors": {"4": {"errors": [{"type": "required_input_missing", "message": "Required input is missing", "details": "model_name", "extra_info": {"input_name": "model_name"}}], "dependent_outputs": ["11"], "class_type": "HyVideoVAELoader"}, "5": {"errors": [{"type": "required_input_missing", "message": "Required input is missing", "details": "clip_model", "extra_info": {"input_name": "clip_model"}}, {"type": "required_input_missing", "message": "Required input is missing", "details": "llm_model", "extra_info": {"input_name": "llm_model"}}], "dependent_outputs": ["11"], "class_type": "DownloadAndLoadHyVideoTextEncoder"}, "3": {"errors": [{"type": "required_input_missing", "message": "Required input is missing", "details": "base_precision", "extra_info": {"input_name": "base_precision"}}, {"type": "required_input_missing", "message": "Required input is missing", "details": "load_device", "extra_info": {"input_name": "load_device"}}, {"type": "required_input_missing", "message": "Required input is missing", "detail


Let me check the exact input requirements for each node.

exec

curl -s http://localhost:8188/object_info/HyVideoModelLoader | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('HyVideoModelLoader', {})
print('Required:')
for k in info.get('input', {}).get('required', {}).keys():
    print(f'  {k}')
" 2>/dev/null

curl -s http://localhost:8188/object_info/DownloadAndLoadHyVideoTextEncoder | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('DownloadAndLoadHyVideoTextEncoder', {})
print('Required:')
for k, v in info.get('input', {}).get('required', {}).items():
    print(f'  {k}: {v}')
" 2>/dev/null

curl -s http://localhost:8188/object_info/HyVideoVAELoader | python3 -c "
import json, sys
data = json.load(sys.stdin)
info = data.get('HyVideoVAELoader', {})
print('Required:')
for k, v in info.get('input', {}).get('required', {}).items():
    print(f'  {k}: {v}')
" 2>/dev/null


Required:
  model
  base_precision
  quantization
  load_device


Required:
  llm_model: [['Kijai/llava-llama-3-8b-text-encoder-tokenizer', 'xtuner/llava-llama-3-8b-v1_1-transformers']]
  clip_model: [['disabled', 'openai/clip-vit-large-patch14']]
  precision: [['fp16', 'fp32', 'bf16'], {'default': 'bf16'}]


Required:
  model_name: [['flux-vae-bf16.safetensors', 'hunyuan_video_vae_bf16.safetensors', 'wan_2.1_vae.safetensors', 'wanvideo/Wan2_1_VAE_bf16.safetensors', 'z_image_turbo_ae.safetensors'], {'tooltip': "These models are loaded from 'ComfyUI/models/vae'"}]


Let me fix all the node inputs properly.

write

#!/usr/bin/env python3
"""HunyuanVideo I2V - Fixed workflow"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["2", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["2", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "euler",
        "block_swap_args": ["8", 0],
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_tiling": True,
        "tile_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode('utf-8'))
            print(f"✅ Submitted! ID: {result.get('prompt_id', prompt_id)}")
            return result.get('prompt_id')
    except urllib.error.HTTPError as e:
        err = e.read().decode('utf-8')
        print(f"❌ Error: {err[:1200]}")
        return None

if __name__ == "__main__":
    print("🎬 HunyuanVideo I2V:")
    print("   - Better temporal coherence")
    print("   - 30 steps euler scheduler")
    print("   - 61 frames @ 24fps (~2.5 sec)")
    print("   - CFG 6.0, flow_shift 9.0")
    print()
    submit()


Successfully wrote 4043 bytes to /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v4.py


Let me submit and see if there are any more errors.


🎬 HunyuanVideo I2V:
   - Better temporal coherence
   - 30 steps euler scheduler
   - 61 frames @ 24fps (~2.5 sec)
   - CFG 6.0, flow_shift 9.0

❌ Error: {"error": {"type": "prompt_outputs_failed_validation", "message": "Prompt outputs failed validation", "details": "", "extra_info": {}}, "node_errors": {"9": {"errors": [{"type": "value_not_in_list", "message": "Value not in list", "details": "scheduler: 'euler' not in ['FlowMatchDiscreteScheduler', 'SDE-DPMSolverMultistepScheduler', 'DPMSolverMultistepScheduler', 'SASolverScheduler', 'UniPCMultistepScheduler']", "extra_info": {"input_name": "scheduler", "input_config": [["FlowMatchDiscreteScheduler", "SDE-DPMSolverMultistepScheduler", "DPMSolverMultistepScheduler", "SASolverScheduler", "UniPCMultistepScheduler"], {"default": "FlowMatchDiscreteScheduler"}], "received_value": "euler"}}], "dependent_outputs": ["11"], "class_type": "HyVideoSampler"}, "10": {"errors": [{"type": "required_input_missing", "message": "Required input is missing", "details": "auto_tile_size", "extra_info": {"input_name": "auto_tile_size"}}, {"type": "required_input_missing", "message": "Required input is missing", "details": "temporal_tiling_sample_size", "extra_info": {"input_name": "temporal_tiling_sample_size"}}, {"type": "required_input_missing", "message": "Required input is missing", "details": "spatia


Good, the scheduler names are different. Let me fix the scheduler and decode node inputs.

edit

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "block_swap_args": ["8", 0],
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},


System: [2026-02-26 15:07:38 UTC] Exec completed (gentle-s, code 0) :: gular HTTP download. For better performance, install the package with: `pip install huggingface_hub[hf_xet]` or `pip install hf_xet` Download complete. Moving file to /home/croger…
System: [2026-02-26 15:08:33 UTC] Exec completed (lucky-cl, code 0) :: p install huggingface_hub[hf_xet]` or `pip install hf_xet` Download complete. Moving file to /home/crogers2287/ComfyUI/models/diffusion_models/hunyuan/hunyuan_video_I2V_720_fixed_…

Conversation info (untrusted metadata):
```json
{
  "message_id": "644",
  "sender": "6558388607"
}
```

Do it


exec

# Fix final workflow with valid schedulers and missing tiling parameters
cat > /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v5.py <<EOF
#!/usr/bin/env python3
"""HunyuanVideo I2V - Corrected Schedulers and Tiling"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["2", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["2", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20, "offload_img_emb": False, "offload_txt_emb": False}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "block_swap_args": ["8", 0],
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_vae_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V_Final",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.load(response)
            print(f"✅ Submitted! ID: {result.get('prompt_id')}")
    except urllib.error.HTTPError as e:
        print(f"❌ Error: {e.read().decode('utf-8')[:1500]}")

if __name__ == "__main__":
    submit()
EOF

python3 /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v5.py


✅ Submitted! ID: 10c2c039-7961-46d3-8cb9-d6c292dd991b


# Monitor queue and GPU status for Hunyuan run
for i in {1..5}; do
  echo "--- Check $i ---"
  curl -s http://localhost:8188/queue | python3 -c "import json,sys; d=json.load(sys.stdin); print('Running:', len(d.get('queue_running',[])), '| Pending:', len(d.get('queue_pending',[])))"
  nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv | tail -n 2
  sleep 15
done


Command still running (session warm-ember, pid 2367680). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


--- Check 1 ---
Running: 0 | Pending: 0
0 %, 2370 MiB
0 %, 1807 MiB
--- Check 2 ---
Running: 0 | Pending: 0
0 %, 2370 MiB
0 %, 1807 MiB
--- Check 3 ---
Running: 0 | Pending: 0
0 %, 2370 MiB
0 %, 1807 MiB
--- Check 4 ---
Running: 0 | Pending: 0
0 %, 2370 MiB
0 %, 1807 MiB
--- Check 5 ---
Running: 0 | Pending: 0
0 %, 2370 MiB
0 %, 1807 MiB

Process still running.


# Check history for the specific prompt ID
curl -s http://localhost:8188/history/10c2c039-7961-46d3-8cb9-d6c292dd991b | python3 -c "
import json, sys
d = json.load(sys.stdin)
for k, v in d.items():
    status = v.get('status', {})
    print('Status:', status.get('status_str', 'unknown'))
    msgs = status.get('messages', [])
    for msg in msgs:
        if 'error' in msg[0].lower() or msg[0] == 'execution_error':
            print(json.dumps(msg, indent=2))
"


Status: error
[
  "execution_error",
  {
    "prompt_id": "10c2c039-7961-46d3-8cb9-d6c292dd991b",
    "node_id": "4",
    "node_type": "HyVideoVAELoader",
    "executed": [],
    "exception_message": "HyVideoVAELoader.loadmodel() missing 1 required positional argument: 'precision'\n",
    "exception_type": "TypeError",
    "traceback": [
      "  File \"/home/crogers2287/ComfyUI/execution.py\", line 530, in execute\n    output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
      "  File \"/home/crogers2287/ComfyUI/execution.py\", line 334, in get_output_data\n    return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
      "  File \"/home/crogers2287/ComfyUI/execution.py\", line 308, in _async_map_node_over_list\n    await process_inputs(input_dict, i)\n",
      "  File \"/home/crogers2287/ComfyUI/execution.py\", line 296, in process_inputs\n    result = f(**inputs)\n             ^^^^^^^^^^^\n"
    ],
    "current_inputs": {
      "model_name": [
        "hunyuan_video_vae_bf16.safetensors"
      ]
    },
    "current_outputs": [
      "8",
      "9",
      "4",
      "6",
      "10",
      "1",
      "2",
      "11",
      "3",
      "7",
      "5"
    ],
    "timestamp": 1772119375796
  }
]


# Fix VAE loader precision and resubmit
cat > /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v6.py <<EOF
#!/usr/bin/env python3
"""HunyuanVideo I2V - Fixed VAE precision"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["2", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["2", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20, "offload_img_emb": False, "offload_txt_emb": False}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "block_swap_args": ["8", 0],
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_vae_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V_Final",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.load(response)
            print(f"✅ Submitted! ID: {result.get('prompt_id')}")
    except urllib.error.HTTPError as e:
        print(f"❌ Error: {e.read().decode('utf-8')[:1500]}")

if __name__ == "__main__":
    submit()
EOF

python3 /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v6.py


✅ Submitted! ID: d30b9f79-3a7f-4d22-97c4-f443a2024918


# Monitor queue and GPU status for Hunyuan run (Attempt 6)
for i in {1..10}; do
  echo "--- Check $i ---"
  curl -s http://localhost:8188/queue | python3 -c "import json,sys; d=json.load(sys.stdin); print('Running:', len(d.get('queue_running',[])), '| Pending:', len(d.get('queue_pending',[])))"
  nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv | tail -n 2
  sleep 30
done


Command still running (session quick-trail, pid 2398753). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


--- Check 1 ---
Running: 1 | Pending: 0
0 %, 3154 MiB
0 %, 1807 MiB
--- Check 2 ---
Running: 1 | Pending: 0
0 %, 3154 MiB
0 %, 1807 MiB
--- Check 3 ---
Running: 1 | Pending: 0
0 %, 3154 MiB
0 %, 1807 MiB
--- Check 4 ---
Running: 1 | Pending: 0
0 %, 3154 MiB
0 %, 1807 MiB
--- Check 5 ---
Running: 1 | Pending: 0
0 %, 3154 MiB
0 %, 1807 MiB

Process still running.


--- Check 6 ---
Running: 1 | Pending: 0
0 %, 3506 MiB
0 %, 1807 MiB
--- Check 7 ---
Running: 1 | Pending: 0
8 %, 10426 MiB
0 %, 1807 MiB
--- Check 8 ---
Running: 0 | Pending: 0
0 %, 2554 MiB
0 %, 1807 MiB
--- Check 9 ---
Running: 0 | Pending: 0
0 %, 2554 MiB
0 %, 1807 MiB

Process still running.


# Check history for prompt ID d30b9f79-3a7f-4d22-97c4-f443a2024918
curl -s http://localhost:8188/history/d30b9f79-3a7f-4d22-97c4-f443a2024918 | python3 -c "
import json, sys
d = json.load(sys.stdin)
for k, v in d.items():
    status = v.get('status', {})
    print('Status:', status.get('status_str', 'unknown'))
    outputs = v.get('outputs', {})
    for node_id, out in outputs.items():
        if 'videos' in out:
            print(f'✅ Video: {out[\"videos\"]}')
    msgs = status.get('messages', [])
    for msg in msgs:
        if 'error' in msg[0].lower() or msg[0] == 'execution_error':
            print('Error:', json.dumps(msg[1], indent=2))
"


Status: error
Error: {
  "prompt_id": "d30b9f79-3a7f-4d22-97c4-f443a2024918",
  "node_id": "9",
  "node_type": "HyVideoSampler",
  "executed": [
    "8",
    "4",
    "6",
    "2",
    "3",
    "7",
    "5",
    "1"
  ],
  "exception_message": "HyVideoSampler.process() got an unexpected keyword argument 'block_swap_args'\n",
  "exception_type": "TypeError",
  "traceback": [
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 530, in execute\n    output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 334, in get_output_data\n    return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 308, in _async_map_node_over_list\n    await process_inputs(input_dict, i)\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 296, in process_inputs\n    result = f(**inputs)\n             ^^^^^^^^^^^\n"
  ],
  "current_inputs": {
    "model": [
      "<comfy.model_patcher.ModelPatcher object at 0x75815f709e80>"
    ],
    "hyvid_embeds": [
      "{'prompt_embeds': tensor([[[-0.7109,  0.1943, -0.4668,  ...,  0.7344, -0.6250, -0.4043],\n         [-0.1572,  0.4844, -0.0708,  ...,  0.1167, -0.6445,  0.2598],\n         [ 0.2656, -0.6875,  0.1660,  ...,  0.2715, -0.5820,  0.5508],\n         ...,\n         [-0.3496,  0.8828,  0.3301,  ...,  0.1387, -0.7383,  0.7891],\n         [-0.3828,  1.0312,  0.3789,  ..., -0.0359, -0.9531,  0.9141],\n         [-0.8008,  0.3770, -0.1387,  ..., -0.1689, -0.6211,  0.2109]]],\n       device='cuda:0', dtype=torch.bfloat16), 'negative_prompt_embeds': None, 'prompt_embeds_2': tensor([[ 0.5156, -1.6475,  2.6035, -0.6255, -1.7148, -1.0605, -0.8765,  1.9277,\n          0.2532,  0.6152,  1.5566,  0.6821,  2.0176, -1.7178, -0.2766, -0.7021,\n         -0.1849,  0.6924, -0.9839,  1.9121, -0.9111, -0.5454, -0.8179,  0.0242,\n         -0.9917, -0.9907, -1.2832, -2.1875, -0.0246, -0.0241, -0.3481,  0.0690,\n         -2.1465,  0.1461,  0.7007,  0.3025, -0.3784, -0.4968,  0.5249,  0.7817,\n          1.0791,  0.5752,  0.5127, -1.2803, -0.4004, -0.2771, -1.8594, -0.2996,\n         -0.1791,  0.9272,  0.2671,  0.0981, -1.7080,  1.2432, -1.5625, -1.0127,\n          1.8711,  0.9189, -1.1162, -0.4697, -1.3486,  0.2495,  1.1514, -0.0238,\n          1.3486, -1.1318,  0.9805,  0.4285, -0.0074,  3.6699,  0.1288, -0.4592,\n         -0.5547,  1.3926,  1.5625, -0.4600, -0.7383,  1.5781, -1.0176, -0.9966,\n          2.3809,  0.3110, -1.0879, -0.1962, -0.3838,  0.1061, -0.9385,  0.3467,\n         -0.5400, -1.6670, -0.2411, -1.4512,  0.3730,  0.4338, -2.7637,  0.3452,\n         -0.8213, -1.0205,  0.1874, -0.8882,  0.6108, -0.2174,  0.7783, -0.3308,\n         -1.4014,  0.3596, -1.0742,  1.0840, -0.8804,  0.0472, -0.9858,  0.5542,\n          0.9653, -0.0580,  0.0050, -0.4019,  0.9116,  1.1123,  0.1694,  0.0724,\n         -1.1494, -0.2988,  0.9458,  1.2822, -0.5103,  0.4871, -1.4658,  1.3066,\n          0.7490, -0.7197,  0.3318,  1.1494, -0.9775, -0.4819,  1.1807,  0.8281,\n         -0.8071, -0.3530,  1.4805,  0.2013,  0.3706, -0.6353,  0.1337,  0.1409,\n         -0.5674, -0.4299,  0.7402, -0.7256,  1.3789, -0.5229, -0.7227,  0.1602,\n          0.8677,  0.0106,  0.5967,  1.5205, -0.8486, -1.7197, -1.0029, -2.4062,\n         -3.2090,  0.6729, -1.3359, -2.1035,  0.1439,  0.0653, -0.5869,  0.5625,\n          0.5024, -1.1270, -1.5049,  0.3035,  0.9189,  0.7188, -0.3862, -2.3574,\n          0.1666, -0.7021, -1.4795, -0.7622,  0.6260, -0.6924,  1.2842, -0.2219,\n         -0.3501, -1.0713,  0.9854, -0.0264,  0.5298, -0.7656,  0.0436, -0.5942,\n          0.4551, -0.4829,  0.0593, -1.2510,  0.3872, -0.5332,  2.3652,  0.4124,\n         -0.7622,  0.6660,  1.2764, -0.0539,  0.0671,  0.4341, -0.9233,  0.8594,\n         -1.2803, -0.5649,  2.3652,  0.4980,  0.7891,  1.0088,  0.2522,  1.0615,\n          0.3931,  0.0426,  0.2026, -0.8848, -1.2676, -1.3896,  0.2727,  0.6157,\n          0.7129, -0.6187,  0.8940,  0.6636,  0.0154, -2.6523, -0.3528, -0.1792,\n          1.5254,  0.1074,  0.5703, -1.1602,  0.6445, -0.2269, -0.5688, -0.3276,\n          0.1887,  1.1807, -0.0731,  0.4363,  0.6484, -0.6606, -0.2876, -0.0807,\n          1.8096,  1.0195,  1.3574, -0.2981,  0.6729,  0.8921,  0.9873, -0.3223,\n          1.5752,  0.4617, -0.8994, -1.1445,  0.8184,  0.7583, -0.5576,  0.3638,\n          0.3708, -0.0812, -0.2703,  0.0682, -0.2727,  0.1049, -0.6055, -0.9248,\n         -0.1951,  0.0231,  0.0202, -0.8662, -0.1403,  0.0141, -0.8320, -0.4717,\n         -0.5327,  0.3794, -0.4187,  0.4041, -0.1754, -0.2666, -1.0166, -1.6484,\n         -0.3464, -0.9795,  0.8115, -0.1384,  0.3896,  0.2258,  1.0732, -0.2747,\n         -0.2644, -1.1826,  1.1396,  0.4961,  2.0332,  0.3455,  0.0896,  1.4502,\n         -0.5781,  0.8574, -1.7148, -0.5747, -0.0977,  0.0968, -0.6621, -2.0801,\n         -1.7383,  0.2417, -0.4624,  0.0152,  0.2211,  0.3245,  1.2725,  0.6025,\n         -1.1113,  1.2246, -1.8926, -0.6177, -1.5918,  1.4893,  0.2019,  1.0059,\n          0.2072, -0.7637,  0.9448,  0.1549, -1.4375, -0.5254, -1.0137, -0.4736,\n          0.5361,  0.1561,  1.9443,  1.0742,  0.6909,  0.7212,  0.8105,  0.4878,\n         -1.1377,  0.2708, -1.0723,  0.4080, -1.0752,  1.0469, -0.7944,  1.4141,\n          0.1974,  1.5752,  0.7881, -2.1484, -1.3359, -1.2891, -0.8071, -0.2681,\n          0.8682, -0.2761,  1.0654, -1.4600,  0.8687, -0.0341, -1.7559, -1.0391,\n         -0.8672, -0.2234, -3.2422, -1.0664,  0.6807,  0.8750, -1.6045, -0.6001,\n         -0.2095, -0.4941, -0.9082, -0.7837, -0.5151,  2.1133,  0.5054,  0.3303,\n         -1.3252,  0.2354, -0.3723, -0.4446, -1.2246, -0.2087,  1.4590, -1.3447,\n         -0.2908,  1.4434, -0.9165,  0.1641,  1.8545,  0.3411,  1.7090,  1.0957,\n          0.2830,  1.1885, -1.5693, -0.5386, -1.4082,  0.4563, -1.4863, -0.4058,\n         -1.2559, -2.2207, -0.7959, -0.7397,  0.1393,  0.3093,  0.8584,  0.1709,\n         -1.6445, -2.4414, -0.3218,  1.0449,  0.9053, -1.6270, -2.2148, -0.2590,\n          0.1687, -0.0787, -0.8726, -1.2227, -0.3274, -1.5039,  0.0080,  0.6421,\n          0.3203, -1.4365, -0.3574, -1.0029, -0.7896,  1.0928, -1.0498, -0.1109,\n          0.5029,  0.2512, -1.2373, -2.4336,  0.2893,  0.9360,  1.1211, -0.4717,\n         -0.6597,  1.2764,  1.8691, -2.5801,  0.2314,  0.1338, -0.5195,  0.2446,\n          0.7827, -0.4192,  0.3755, -0.2169, -1.0586,  0.0242, -1.2178, -0.0937,\n         -0.8403,  0.8940,  0.8657, -1.0537, -0.3599, -0.1161,  2.9453, -0.5093,\n          0.1819,  0.8281,  0.9014, -1.2578,  0.0735,  0.2047,  0.3501,  1.9297,\n          0.5312,  0.2612, -0.2448,  0.3848, -1.9375, -1.3594,  0.6895,  0.9946,\n         -0.6460, -0.6362, -1.9922, -0.6548,  0.1904,  0.4561, -0.1296, -0.2299,\n          0.0854, -1.0107,  1.3613, -1.1338, -0.4094,  0.2487,  0.9458, -1.3447,\n          0.2356, -0.0366, -0.6777, -0.0679,  0.9258, -1.9209,  0.3599, -0.3340,\n         -1.6807, -0.6226,  1.3633, -0.3721, -0.7148,  0.0445, -0.6860, -1.7109,\n          0.2971, -1.2607,  2.6309,  0.2142, -0.4746,  0.8164, -0.8271, -0.5742,\n         -0.7114, -1.5664, -0.3540,  1.5703, -0.5879, -1.6309, -0.2273,  0.7744,\n         -0.0123,  0.1256,  1.1670,  0.2866, -0.6963,  1.4824, -2.3398, -1.9219,\n         -1.4219, -0.1833, -1.0518, -0.9619,  0.2942, -0.0129,  1.1865,  0.1236,\n         -0.4751, -0.5586,  0.7827, -0.3350, -0.1394, -0.6211,  1.8359,  0.9414,\n          0.5161, -0.3403, -0.6216, -0.1963,  0.7031, -1.3486,  1.4248,  1.4834,\n         -0.3113,  0.4954,  1.7129, -0.1389,  1.0264,  0.8652, -0.5259, -0.7329,\n         -0.2764, -0.0679,  0.7441,  0.1248, -1.9053, -0.6655,  0.7422, -0.6489,\n         -1.5996, -1.6211, -0.7148, -0.7856, -0.1345,  0.3186,  0.1664,  1.3584,\n         -1.7246,  2.5000, -1.0254, -2.5371,  1.2002, -0.6162,  0.5625,  1.3467,\n          1.7344, -0.9990,  0.7959, -0.2048, -0.0085, -0.6338,  0.9272, -0.1073,\n          0.7397,  0.6782,  0.3904, -1.5391,  0.4983, -1.3594, -0.5132, -1.6963,\n          0.3831, -1.4453, -1.0732,  0.5967, -1.1865, -1.4834,  0.7471, -0.3735,\n         -0.0976,  0.7114,  0.2744,  0.3616,  0.7065, -0.6362, -0.5391,  0.2262,\n         -1.1094,  0.7627, -1.1484, -1.1836, -0.5786, -0.2991, -0.2800,  1.1562,\n         -0.9268, -0.3733, -1.2246,  0.6567,  1.6992, -0.8784,  0.6318, -0.6602,\n         -1.5039,  0.0646,  0.7905, -0.7109, -1.8477,  0.0101,  1.7617, -0.7939,\n          0.2964, -0.3154, -0.9946, -1.1270,  0.6172,  0.5581, -1.5674,  0.0756,\n          0.6465, -0.8364,  0.8721,  1.4629,  0.2522, -0.2279,  0.0310, -0.8198,\n         -0.0127,  1.1045, -1.8428, -0.4353, -0.3647, -0.5786, -0.9033, -1.2852,\n          1.3418, -0.2979, -0.2314, -0.0459, -0.2090, -0.1920,  0.3442,  0.6318,\n          0.2216, -2.1230,  0.6626, -1.6680, -0.8589, -0.7549, -0.1503, -0.3066,\n          0.6440,  0.3044,  1.1240, -1.5684, -0.7197, -0.4966, -0.6011, -1.0449,\n         -0.7715,  0.3538,  0.5161, -0.7021,  0.5518,  0.1769,  0.9839,  1.1426,\n         -0.1013, -0.6689, -0.1570, -0.9189,  0.0262, -1.3447, -0.4512, -0.3020,\n         -0.0471,  0.5420,  1.1582,  0.5210,  1.2705,  0.2194,  3.7305, -0.7217,\n         -0.8672, -0.8267, -0.8340, -0.0975,  0.9683, -0.5435,  0.8389, -1.5674,\n         -1.5879, -0.9395,  0.6406,  0.3291,  1.0879,  0.0298, -0.9946, -0.3086,\n          0.4692, -0.7598,  0.5435,  0.7271,  0.1028, -0.2399,  0.1026, -1.9863,\n         -1.0811,  0.3713, -0.4231, -0.0260,  0.0812, -1.0234, -1.1787, -0.2585,\n          1.4131,  0.1931,  1.4062,  0.2429,  0.3206,  0.5571, -0.3982, -1.4111]],\n       device='cuda:0', dtype=torch.float16), 'negative_prompt_embeds_2': None, 'cfg': None, 'start_percent': None, 'end_percent': None, 'batched_cfg': None}"
    ],
    "width": [
      848
    ],
    "height": [
      480
    ],
    "num_frames": [
      61
    ],
    "steps": [
      30
    ],
    "embedded_guidance_scale": [
      6.0
    ],
    "flow_shift": [
      9.0
    ],
    "seed": [
      42
    ],
    "force_offload": [
      true
    ],
    "scheduler": [
      "FlowMatchDiscreteScheduler"
    ],
    "block_swap_args": [
      "{}"
    ],
    "image_cond_latents": [
      "{'samples': tensor([[[[[-1.1172, -1.4062, -1.1953,  ...,  2.0156,  1.3281,  1.6719],\n           [-3.2812, -2.6406, -1.9453,  ...,  1.9531,  1.9453,  1.7969],\n           [-0.3125, -1.2500, -2.3594,  ...,  1.2500,  1.4375,  1.3125],\n           ...,\n           [ 1.3281,  1.6797,  1.8672,  ...,  0.7344,  0.8867,  1.1875],\n           [-0.0610,  0.7266,  1.4766,  ...,  0.9375,  0.4180,  0.3301],\n           [ 0.0957,  0.7969,  0.8945,  ...,  1.1094,  0.9258,  0.7109]]],\n\n\n         [[[ 2.4062,  1.8750,  1.8750,  ...,  5.0312,  4.9375,  5.0312],\n           [-1.3984, -0.5703,  0.6836,  ...,  5.3125,  5.1875,  5.2812],\n           [ 1.6172,  0.6094, -0.2871,  ...,  5.3750,  5.4375,  5.3438],\n           ...,\n           [ 3.1875,  3.7969,  4.2188,  ...,  2.5156,  2.8125,  2.8594],\n           [ 2.8125,  2.8281,  3.5312,  ...,  2.5469,  2.2812,  2.5469],\n           [ 3.0938,  2.5781,  2.3750,  ...,  2.6250,  2.3594,  3.1094]]],\n\n\n         [[[-0.4453,  0.2266, -0.1426,  ...,  1.3125,  0.9531,  1.2344],\n           [-0.0894, -0.9219, -1.3984,  ...,  1.4297,  1.2422,  1.2344],\n           [ 0.4902,  0.6797,  0.6328,  ...,  0.9570,  1.2422,  1.0703],\n           ...,\n           [-1.2656, -1.5625, -1.6016,  ...,  0.5352,  0.5547,  0.9414],\n           [-0.6641, -0.4805, -1.4062,  ...,  0.5312,  0.7109,  0.7109],\n           [-0.2109, -0.3242, -0.5312,  ...,  0.8164,  0.7148,  0.3730]]],\n\n\n         ...,\n\n\n         [[[-3.1562, -3.2812, -3.9844,  ..., -5.4375, -5.3750, -5.4062],\n           [-0.5117, -0.4805, -0.9727,  ..., -4.9375, -4.8125, -4.4375],\n           [-4.4688, -3.8750, -2.7031,  ..., -3.9375, -4.1875, -4.1875],\n           ...,\n           [-3.6562, -4.7500, -4.7500,  ..., -6.0000, -6.1250, -6.0938],\n           [-4.0312, -4.0312, -4.5312,  ..., -6.1250, -5.3125, -5.8438],\n           [-4.9062, -4.8438, -5.2500,  ..., -6.0000, -5.6875, -6.3750]]],\n\n\n         [[[-1.2500, -1.0156, -1.2969,  ..., -6.5625, -6.4688, -6.6250],\n           [ 2.3750,  2.4531,  2.2656,  ..., -6.5000, -6.6250, -6.5625],\n           [-3.0781, -1.8438,  0.0869,  ..., -6.0000, -6.1875, -5.9375],\n           ...,\n           [-4.6250, -5.2500, -5.8750,  ..., -3.3438, -3.8438, -4.0312],\n           [-3.4062, -4.0312, -4.4062,  ..., -3.3281, -3.3750, -4.0000],\n           [-3.3281, -3.5469, -3.9375,  ..., -3.6250, -3.8438, -4.3438]]],\n\n\n         [[[-0.8906, -0.8086,  0.2559,  ..., -0.0718, -0.1660, -0.3633],\n           [-1.0391, -0.8906, -1.1016,  ...,  0.2500,  0.2656,  0.3848],\n           [-1.0078, -0.7539, -0.5625,  ...,  0.7812,  1.0078,  1.1172],\n           ...,\n           [-4.5000, -4.5625, -4.8125,  ..., -3.5000, -3.0938, -3.1562],\n           [-3.7812, -4.0938, -3.9531,  ..., -3.1250, -3.2188, -3.0781],\n           [-4.1250, -4.2188, -3.9531,  ..., -3.1562, -2.9375, -2.8281]]]]],\n       device='cuda:0', dtype=torch.bfloat16)}"
    ]
  },
  "current_outputs": [
    "8",
    "9",
    "4",
    "6",
    "10",
    "1",
    "2",
    "11",
    "3",
    "7",
    "5"
  ],
  "timestamp": 1772119686295
}


# Fix sampler and tiling parameters for Attempt 7
cat > /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v7.py <<EOF
#!/usr/bin/env python3
"""HunyuanVideo I2V - Final Fix for node params"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "ImageResizeKJv2", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480,
        "upscale_method": "lanczos", "keep_proportion": "crop",
        "pad_color": "0, 0, 0", "crop_position": "center", "divisible_by": 32
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["2", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["2", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20, "offload_img_emb": False, "offload_txt_emb": False}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": 848,
        "height": 480,
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_vae_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V_Final",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.load(response)
            print(f"✅ Submitted! ID: {result.get('prompt_id')}")
    except urllib.error.HTTPError as e:
        print(f"❌ Error: {e.read().decode('utf-8')[:1500]}")

if __name__ == "__main__":
    submit()
EOF

python3 /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v7.py


✅ Submitted! ID: a6bb5d69-6f22-42df-ae71-f8bfbdafe0f5


# Final monitor for Hunyuan run (Attempt 7)
for i in {1..20}; do
  echo "--- Check $i ---"
  curl -s http://localhost:8188/queue | python3 -c "import json,sys; d=json.load(sys.stdin); print('Running:', len(d.get('queue_running',[])), '| Pending:', len(d.get('queue_pending',[])))"
  nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv | tail -n 2
  sleep 30
done


Command still running (session briny-ocean, pid 2477730). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


--- Check 1 ---
Running: 1 | Pending: 0
62 %, 11866 MiB
0 %, 1807 MiB
--- Check 2 ---
Running: 0 | Pending: 0
0 %, 15066 MiB
0 %, 1807 MiB
--- Check 3 ---
Running: 0 | Pending: 0
0 %, 15066 MiB
0 %, 1807 MiB
--- Check 4 ---
Running: 0 | Pending: 0
0 %, 15066 MiB
0 %, 1807 MiB
--- Check 5 ---
Running: 0 | Pending: 0
0 %, 15066 MiB
0 %, 1807 MiB

Process still running.


# Check history for prompt ID a6bb5d69-6f22-42df-ae71-f8bfbdafe0f5
curl -s http://localhost:8188/history/a6bb5d69-6f22-42df-ae71-f8bfbdafe0f5 | python3 -c "
import json, sys
d = json.load(sys.stdin)
for k, v in d.items():
    status = v.get('status', {})
    print('Status:', status.get('status_str', 'unknown'))
    outputs = v.get('outputs', {})
    for node_id, out in outputs.items():
        if 'videos' in out:
            for vid in out['videos']:
                print(f'✅ Video Found: {vid.get(\"filename\")}')
    msgs = status.get('messages', [])
    for msg in msgs:
        if 'error' in msg[0].lower() or msg[0] == 'execution_error':
            print('Error:', json.dumps(msg[1], indent=2))
"


Status: error
Error: {
  "prompt_id": "a6bb5d69-6f22-42df-ae71-f8bfbdafe0f5",
  "node_id": "9",
  "node_type": "HyVideoSampler",
  "executed": [],
  "exception_message": "The size of tensor a (106) must match the size of tensor b (104) at non-singleton dimension 4\n",
  "exception_type": "RuntimeError",
  "traceback": [
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 530, in execute\n    output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 334, in get_output_data\n    return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 308, in _async_map_node_over_list\n    await process_inputs(input_dict, i)\n",
    "  File \"/home/crogers2287/ComfyUI/execution.py\", line 296, in process_inputs\n    result = f(**inputs)\n             ^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/custom_nodes/ComfyUI-HunyuanVideoWrapper/nodes.py\", line 1478, in process\n    out_latents = model[\"pipe\"](\n                  ^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/venv/lib/python3.12/site-packages/torch/utils/_contextlib.py\", line 124, in decorate_context\n    return func(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/custom_nodes/ComfyUI-HunyuanVideoWrapper/hyvideo/diffusion/pipelines/pipeline_hunyuan_video.py\", line 680, in __call__\n    latents, timesteps, i2v_mask, image_cond_latents, noise, original_latents = self.prepare_latents(\n                                                                                ^^^^^^^^^^^^^^^^^^^^^\n",
    "  File \"/home/crogers2287/ComfyUI/custom_nodes/ComfyUI-HunyuanVideoWrapper/hyvideo/diffusion/pipelines/pipeline_hunyuan_video.py\", line 335, in prepare_latents\n    latents = noise * t + img_latents * (1 - t)\n              ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~\n"
  ],
  "current_inputs": {
    "model": [
      "<comfy.model_patcher.ModelPatcher object at 0x75815f709e80>"
    ],
    "hyvid_embeds": [
      "{'prompt_embeds': tensor([[[-0.7109,  0.1943, -0.4668,  ...,  0.7344, -0.6250, -0.4043],\n         [-0.1572,  0.4844, -0.0708,  ...,  0.1167, -0.6445,  0.2598],\n         [ 0.2656, -0.6875,  0.1660,  ...,  0.2715, -0.5820,  0.5508],\n         ...,\n         [-0.3496,  0.8828,  0.3301,  ...,  0.1387, -0.7383,  0.7891],\n         [-0.3828,  1.0312,  0.3789,  ..., -0.0359, -0.9531,  0.9141],\n         [-0.8008,  0.3770, -0.1387,  ..., -0.1689, -0.6211,  0.2109]]],\n       device='cuda:0', dtype=torch.bfloat16), 'negative_prompt_embeds': None, 'prompt_embeds_2': tensor([[ 0.5156, -1.6475,  2.6035, -0.6255, -1.7148, -1.0605, -0.8765,  1.9277,\n          0.2532,  0.6152,  1.5566,  0.6821,  2.0176, -1.7178, -0.2766, -0.7021,\n         -0.1849,  0.6924, -0.9839,  1.9121, -0.9111, -0.5454, -0.8179,  0.0242,\n         -0.9917, -0.9907, -1.2832, -2.1875, -0.0246, -0.0241, -0.3481,  0.0690,\n         -2.1465,  0.1461,  0.7007,  0.3025, -0.3784, -0.4968,  0.5249,  0.7817,\n          1.0791,  0.5752,  0.5127, -1.2803, -0.4004, -0.2771, -1.8594, -0.2996,\n         -0.1791,  0.9272,  0.2671,  0.0981, -1.7080,  1.2432, -1.5625, -1.0127,\n          1.8711,  0.9189, -1.1162, -0.4697, -1.3486,  0.2495,  1.1514, -0.0238,\n          1.3486, -1.1318,  0.9805,  0.4285, -0.0074,  3.6699,  0.1288, -0.4592,\n         -0.5547,  1.3926,  1.5625, -0.4600, -0.7383,  1.5781, -1.0176, -0.9966,\n          2.3809,  0.3110, -1.0879, -0.1962, -0.3838,  0.1061, -0.9385,  0.3467,\n         -0.5400, -1.6670, -0.2411, -1.4512,  0.3730,  0.4338, -2.7637,  0.3452,\n         -0.8213, -1.0205,  0.1874, -0.8882,  0.6108, -0.2174,  0.7783, -0.3308,\n         -1.4014,  0.3596, -1.0742,  1.0840, -0.8804,  0.0472, -0.9858,  0.5542,\n          0.9653, -0.0580,  0.0050, -0.4019,  0.9116,  1.1123,  0.1694,  0.0724,\n         -1.1494, -0.2988,  0.9458,  1.2822, -0.5103,  0.4871, -1.4658,  1.3066,\n          0.7490, -0.7197,  0.3318,  1.1494, -0.9775, -0.4819,  1.1807,  0.8281,\n         -0.8071, -0.3530,  1.4805,  0.2013,  0.3706, -0.6353,  0.1337,  0.1409,\n         -0.5674, -0.4299,  0.7402, -0.7256,  1.3789, -0.5229, -0.7227,  0.1602,\n          0.8677,  0.0106,  0.5967,  1.5205, -0.8486, -1.7197, -1.0029, -2.4062,\n         -3.2090,  0.6729, -1.3359, -2.1035,  0.1439,  0.0653, -0.5869,  0.5625,\n          0.5024, -1.1270, -1.5049,  0.3035,  0.9189,  0.7188, -0.3862, -2.3574,\n          0.1666, -0.7021, -1.4795, -0.7622,  0.6260, -0.6924,  1.2842, -0.2219,\n         -0.3501, -1.0713,  0.9854, -0.0264,  0.5298, -0.7656,  0.0436, -0.5942,\n          0.4551, -0.4829,  0.0593, -1.2510,  0.3872, -0.5332,  2.3652,  0.4124,\n         -0.7622,  0.6660,  1.2764, -0.0539,  0.0671,  0.4341, -0.9233,  0.8594,\n         -1.2803, -0.5649,  2.3652,  0.4980,  0.7891,  1.0088,  0.2522,  1.0615,\n          0.3931,  0.0426,  0.2026, -0.8848, -1.2676, -1.3896,  0.2727,  0.6157,\n          0.7129, -0.6187,  0.8940,  0.6636,  0.0154, -2.6523, -0.3528, -0.1792,\n          1.5254,  0.1074,  0.5703, -1.1602,  0.6445, -0.2269, -0.5688, -0.3276,\n          0.1887,  1.1807, -0.0731,  0.4363,  0.6484, -0.6606, -0.2876, -0.0807,\n          1.8096,  1.0195,  1.3574, -0.2981,  0.6729,  0.8921,  0.9873, -0.3223,\n          1.5752,  0.4617, -0.8994, -1.1445,  0.8184,  0.7583, -0.5576,  0.3638,\n          0.3708, -0.0812, -0.2703,  0.0682, -0.2727,  0.1049, -0.6055, -0.9248,\n         -0.1951,  0.0231,  0.0202, -0.8662, -0.1403,  0.0141, -0.8320, -0.4717,\n         -0.5327,  0.3794, -0.4187,  0.4041, -0.1754, -0.2666, -1.0166, -1.6484,\n         -0.3464, -0.9795,  0.8115, -0.1384,  0.3896,  0.2258,  1.0732, -0.2747,\n         -0.2644, -1.1826,  1.1396,  0.4961,  2.0332,  0.3455,  0.0896,  1.4502,\n         -0.5781,  0.8574, -1.7148, -0.5747, -0.0977,  0.0968, -0.6621, -2.0801,\n         -1.7383,  0.2417, -0.4624,  0.0152,  0.2211,  0.3245,  1.2725,  0.6025,\n         -1.1113,  1.2246, -1.8926, -0.6177, -1.5918,  1.4893,  0.2019,  1.0059,\n          0.2072, -0.7637,  0.9448,  0.1549, -1.4375, -0.5254, -1.0137, -0.4736,\n          0.5361,  0.1561,  1.9443,  1.0742,  0.6909,  0.7212,  0.8105,  0.4878,\n         -1.1377,  0.2708, -1.0723,  0.4080, -1.0752,  1.0469, -0.7944,  1.4141,\n          0.1974,  1.5752,  0.7881, -2.1484, -1.3359, -1.2891, -0.8071, -0.2681,\n          0.8682, -0.2761,  1.0654, -1.4600,  0.8687, -0.0341, -1.7559, -1.0391,\n         -0.8672, -0.2234, -3.2422, -1.0664,  0.6807,  0.8750, -1.6045, -0.6001,\n         -0.2095, -0.4941, -0.9082, -0.7837, -0.5151,  2.1133,  0.5054,  0.3303,\n         -1.3252,  0.2354, -0.3723, -0.4446, -1.2246, -0.2087,  1.4590, -1.3447,\n         -0.2908,  1.4434, -0.9165,  0.1641,  1.8545,  0.3411,  1.7090,  1.0957,\n          0.2830,  1.1885, -1.5693, -0.5386, -1.4082,  0.4563, -1.4863, -0.4058,\n         -1.2559, -2.2207, -0.7959, -0.7397,  0.1393,  0.3093,  0.8584,  0.1709,\n         -1.6445, -2.4414, -0.3218,  1.0449,  0.9053, -1.6270, -2.2148, -0.2590,\n          0.1687, -0.0787, -0.8726, -1.2227, -0.3274, -1.5039,  0.0080,  0.6421,\n          0.3203, -1.4365, -0.3574, -1.0029, -0.7896,  1.0928, -1.0498, -0.1109,\n          0.5029,  0.2512, -1.2373, -2.4336,  0.2893,  0.9360,  1.1211, -0.4717,\n         -0.6597,  1.2764,  1.8691, -2.5801,  0.2314,  0.1338, -0.5195,  0.2446,\n          0.7827, -0.4192,  0.3755, -0.2169, -1.0586,  0.0242, -1.2178, -0.0937,\n         -0.8403,  0.8940,  0.8657, -1.0537, -0.3599, -0.1161,  2.9453, -0.5093,\n          0.1819,  0.8281,  0.9014, -1.2578,  0.0735,  0.2047,  0.3501,  1.9297,\n          0.5312,  0.2612, -0.2448,  0.3848, -1.9375, -1.3594,  0.6895,  0.9946,\n         -0.6460, -0.6362, -1.9922, -0.6548,  0.1904,  0.4561, -0.1296, -0.2299,\n          0.0854, -1.0107,  1.3613, -1.1338, -0.4094,  0.2487,  0.9458, -1.3447,\n          0.2356, -0.0366, -0.6777, -0.0679,  0.9258, -1.9209,  0.3599, -0.3340,\n         -1.6807, -0.6226,  1.3633, -0.3721, -0.7148,  0.0445, -0.6860, -1.7109,\n          0.2971, -1.2607,  2.6309,  0.2142, -0.4746,  0.8164, -0.8271, -0.5742,\n         -0.7114, -1.5664, -0.3540,  1.5703, -0.5879, -1.6309, -0.2273,  0.7744,\n         -0.0123,  0.1256,  1.1670,  0.2866, -0.6963,  1.4824, -2.3398, -1.9219,\n         -1.4219, -0.1833, -1.0518, -0.9619,  0.2942, -0.0129,  1.1865,  0.1236,\n         -0.4751, -0.5586,  0.7827, -0.3350, -0.1394, -0.6211,  1.8359,  0.9414,\n          0.5161, -0.3403, -0.6216, -0.1963,  0.7031, -1.3486,  1.4248,  1.4834,\n         -0.3113,  0.4954,  1.7129, -0.1389,  1.0264,  0.8652, -0.5259, -0.7329,\n         -0.2764, -0.0679,  0.7441,  0.1248, -1.9053, -0.6655,  0.7422, -0.6489,\n         -1.5996, -1.6211, -0.7148, -0.7856, -0.1345,  0.3186,  0.1664,  1.3584,\n         -1.7246,  2.5000, -1.0254, -2.5371,  1.2002, -0.6162,  0.5625,  1.3467,\n          1.7344, -0.9990,  0.7959, -0.2048, -0.0085, -0.6338,  0.9272, -0.1073,\n          0.7397,  0.6782,  0.3904, -1.5391,  0.4983, -1.3594, -0.5132, -1.6963,\n          0.3831, -1.4453, -1.0732,  0.5967, -1.1865, -1.4834,  0.7471, -0.3735,\n         -0.0976,  0.7114,  0.2744,  0.3616,  0.7065, -0.6362, -0.5391,  0.2262,\n         -1.1094,  0.7627, -1.1484, -1.1836, -0.5786, -0.2991, -0.2800,  1.1562,\n         -0.9268, -0.3733, -1.2246,  0.6567,  1.6992, -0.8784,  0.6318, -0.6602,\n         -1.5039,  0.0646,  0.7905, -0.7109, -1.8477,  0.0101,  1.7617, -0.7939,\n          0.2964, -0.3154, -0.9946, -1.1270,  0.6172,  0.5581, -1.5674,  0.0756,\n          0.6465, -0.8364,  0.8721,  1.4629,  0.2522, -0.2279,  0.0310, -0.8198,\n         -0.0127,  1.1045, -1.8428, -0.4353, -0.3647, -0.5786, -0.9033, -1.2852,\n          1.3418, -0.2979, -0.2314, -0.0459, -0.2090, -0.1920,  0.3442,  0.6318,\n          0.2216, -2.1230,  0.6626, -1.6680, -0.8589, -0.7549, -0.1503, -0.3066,\n          0.6440,  0.3044,  1.1240, -1.5684, -0.7197, -0.4966, -0.6011, -1.0449,\n         -0.7715,  0.3538,  0.5161, -0.7021,  0.5518,  0.1769,  0.9839,  1.1426,\n         -0.1013, -0.6689, -0.1570, -0.9189,  0.0262, -1.3447, -0.4512, -0.3020,\n         -0.0471,  0.5420,  1.1582,  0.5210,  1.2705,  0.2194,  3.7305, -0.7217,\n         -0.8672, -0.8267, -0.8340, -0.0975,  0.9683, -0.5435,  0.8389, -1.5674,\n         -1.5879, -0.9395,  0.6406,  0.3291,  1.0879,  0.0298, -0.9946, -0.3086,\n          0.4692, -0.7598,  0.5435,  0.7271,  0.1028, -0.2399,  0.1026, -1.9863,\n         -1.0811,  0.3713, -0.4231, -0.0260,  0.0812, -1.0234, -1.1787, -0.2585,\n          1.4131,  0.1931,  1.4062,  0.2429,  0.3206,  0.5571, -0.3982, -1.4111]],\n       device='cuda:0', dtype=torch.float16), 'negative_prompt_embeds_2': None, 'cfg': None, 'start_percent': None, 'end_percent': None, 'batched_cfg': None}"
    ],
    "width": [
      848
    ],
    "height": [
      480
    ],
    "num_frames": [
      61
    ],
    "steps": [
      30
    ],
    "embedded_guidance_scale": [
      6.0
    ],
    "flow_shift": [
      9.0
    ],
    "seed": [
      42
    ],
    "force_offload": [
      true
    ],
    "scheduler": [
      "FlowMatchDiscreteScheduler"
    ],
    "image_cond_latents": [
      "{'samples': tensor([[[[[-1.1172, -1.4062, -1.1953,  ...,  2.0156,  1.3281,  1.6719],\n           [-3.2812, -2.6406, -1.9453,  ...,  1.9531,  1.9453,  1.7969],\n           [-0.3125, -1.2500, -2.3594,  ...,  1.2500,  1.4375,  1.3125],\n           ...,\n           [ 1.3281,  1.6797,  1.8672,  ...,  0.7344,  0.8867,  1.1875],\n           [-0.0610,  0.7266,  1.4766,  ...,  0.9375,  0.4180,  0.3301],\n           [ 0.0957,  0.7969,  0.8945,  ...,  1.1094,  0.9258,  0.7109]]],\n\n\n         [[[ 2.4062,  1.8750,  1.8750,  ...,  5.0312,  4.9375,  5.0312],\n           [-1.3984, -0.5703,  0.6836,  ...,  5.3125,  5.1875,  5.2812],\n           [ 1.6172,  0.6094, -0.2871,  ...,  5.3750,  5.4375,  5.3438],\n           ...,\n           [ 3.1875,  3.7969,  4.2188,  ...,  2.5156,  2.8125,  2.8594],\n           [ 2.8125,  2.8281,  3.5312,  ...,  2.5469,  2.2812,  2.5469],\n           [ 3.0938,  2.5781,  2.3750,  ...,  2.6250,  2.3594,  3.1094]]],\n\n\n         [[[-0.4453,  0.2266, -0.1426,  ...,  1.3125,  0.9531,  1.2344],\n           [-0.0894, -0.9219, -1.3984,  ...,  1.4297,  1.2422,  1.2344],\n           [ 0.4902,  0.6797,  0.6328,  ...,  0.9570,  1.2422,  1.0703],\n           ...,\n           [-1.2656, -1.5625, -1.6016,  ...,  0.5352,  0.5547,  0.9414],\n           [-0.6641, -0.4805, -1.4062,  ...,  0.5312,  0.7109,  0.7109],\n           [-0.2109, -0.3242, -0.5312,  ...,  0.8164,  0.7148,  0.3730]]],\n\n\n         ...,\n\n\n         [[[-3.1562, -3.2812, -3.9844,  ..., -5.4375, -5.3750, -5.4062],\n           [-0.5117, -0.4805, -0.9727,  ..., -4.9375, -4.8125, -4.4375],\n           [-4.4688, -3.8750, -2.7031,  ..., -3.9375, -4.1875, -4.1875],\n           ...,\n           [-3.6562, -4.7500, -4.7500,  ..., -6.0000, -6.1250, -6.0938],\n           [-4.0312, -4.0312, -4.5312,  ..., -6.1250, -5.3125, -5.8438],\n           [-4.9062, -4.8438, -5.2500,  ..., -6.0000, -5.6875, -6.3750]]],\n\n\n         [[[-1.2500, -1.0156, -1.2969,  ..., -6.5625, -6.4688, -6.6250],\n           [ 2.3750,  2.4531,  2.2656,  ..., -6.5000, -6.6250, -6.5625],\n           [-3.0781, -1.8438,  0.0869,  ..., -6.0000, -6.1875, -5.9375],\n           ...,\n           [-4.6250, -5.2500, -5.8750,  ..., -3.3438, -3.8438, -4.0312],\n           [-3.4062, -4.0312, -4.4062,  ..., -3.3281, -3.3750, -4.0000],\n           [-3.3281, -3.5469, -3.9375,  ..., -3.6250, -3.8438, -4.3438]]],\n\n\n         [[[-0.8906, -0.8086,  0.2559,  ..., -0.0718, -0.1660, -0.3633],\n           [-1.0391, -0.8906, -1.1016,  ...,  0.2500,  0.2656,  0.3848],\n           [-1.0078, -0.7539, -0.5625,  ...,  0.7812,  1.0078,  1.1172],\n           ...,\n           [-4.5000, -4.5625, -4.8125,  ..., -3.5000, -3.0938, -3.1562],\n           [-3.7812, -4.0938, -3.9531,  ..., -3.1250, -3.2188, -3.0781],\n           [-4.1250, -4.2188, -3.9531,  ..., -3.1562, -2.9375, -2.8281]]]]],\n       device='cuda:0', dtype=torch.bfloat16)}"
    ]
  },
  "current_outputs": [
    "8",
    "9",
    "4",
    "6",
    "10",
    "1",
    "2",
    "11",
    "3",
    "7",
    "5"
  ],
  "timestamp": 1772119763498
}


# Final attempt with auto bucket size to fix tensor size mismatch
cat > /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v8.py <<EOF
#!/usr/bin/env python3
"""HunyuanVideo I2V - Fixed with bucket sizing"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "HyVideoGetClosestBucketSize", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["1", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["1", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20, "offload_img_emb": False, "offload_txt_emb": False}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": ["2", 0],
        "height": ["2", 1],
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_vae_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V_Final",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.load(response)
            print(f"✅ Submitted! ID: {result.get('prompt_id')}")
    except urllib.error.HTTPError as e:
        print(f"❌ Error: {e.read().decode('utf-8')[:1500]}")

if __name__ == "__main__":
    submit()
EOF

python3 /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v8.py


❌ Error: {"error": {"type": "prompt_outputs_failed_validation", "message": "Prompt outputs failed validation", "details": "", "extra_info": {}}, "node_errors": {"2": {"errors": [{"type": "required_input_missing", "message": "Required input is missing", "details": "base_size", "extra_info": {"input_name": "base_size"}}], "dependent_outputs": ["11"], "class_type": "HyVideoGetClosestBucketSize"}}}


# Final, final fix for bucket size and submission
cat > /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v9.py <<EOF
#!/usr/bin/env python3
"""HunyuanVideo I2V - Fixed with correct bucket node params"""

import json
import urllib.request
import urllib.error
import uuid

COMFY_URL = "http://localhost:8188"
INPUT_IMAGE = "pool_party.png"

PROMPT = """Two men stand beside a swimming pool at sunset. The larger man on the left slowly turns to face the smaller man. The smaller man turns around to face him. They embrace in a warm hug and share a tender romantic kiss. All movements are smooth, slow, and natural. High quality detailed hands with proper anatomy. Photorealistic video quality."""

workflow = {
    "1": {"class_type": "LoadImage", "inputs": {"image": INPUT_IMAGE, "upload": "image"}},

    "2": {"class_type": "HyVideoGetClosestBucketSize", "inputs": {
        "image": ["1", 0], "width": 848, "height": 480, "base_size": 256
    }},

    "3": {"class_type": "HyVideoModelLoader", "inputs": {
        "model": "hunyuan/hunyuan_video_I2V_720_fixed_fp8_e4m3fn.safetensors",
        "base_precision": "bf16",
        "quantization": "fp8_e4m3fn",
        "load_device": "offload_device"
    }},

    "4": {"class_type": "HyVideoVAELoader", "inputs": {
        "model_name": "hunyuan_video_vae_bf16.safetensors",
        "precision": "bf16"
    }},

    "5": {"class_type": "DownloadAndLoadHyVideoTextEncoder", "inputs": {
        "llm_model": "Kijai/llava-llama-3-8b-text-encoder-tokenizer",
        "clip_model": "openai/clip-vit-large-patch14",
        "precision": "bf16"
    }},

    "6": {"class_type": "HyVideoEncode", "inputs": {
        "vae": ["4", 0],
        "image": ["1", 0],
        "enable_vae_tiling": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256,
        "auto_tile_size": True
    }},

    "7": {"class_type": "HyVideoI2VEncode", "inputs": {
        "text_encoders": ["5", 0],
        "prompt": PROMPT,
        "force_offload": True,
        "image": ["1", 0],
        "image_embed_interleave": 4
    }},

    "8": {"class_type": "HyVideoBlockSwap", "inputs": {"blocks_to_swap": 20, "offload_img_emb": False, "offload_txt_emb": False}},

    "9": {"class_type": "HyVideoSampler", "inputs": {
        "model": ["3", 0],
        "hyvid_embeds": ["7", 0],
        "width": ["2", 0],
        "height": ["2", 1],
        "num_frames": 61,
        "steps": 30,
        "embedded_guidance_scale": 6.0,
        "flow_shift": 9.0,
        "seed": 42,
        "force_offload": True,
        "scheduler": "FlowMatchDiscreteScheduler",
        "image_cond_latents": ["6", 0]
    }},

    "10": {"class_type": "HyVideoDecode", "inputs": {
        "vae": ["4", 0],
        "samples": ["9", 0],
        "enable_vae_tiling": True,
        "auto_tile_size": True,
        "temporal_tiling_sample_size": 64,
        "spatial_tile_sample_min_size": 256
    }},

    "11": {"class_type": "VHS_VideoCombine", "inputs": {
        "images": ["10", 0],
        "frame_rate": 24,
        "loop_count": 0,
        "filename_prefix": "Hunyuan_I2V_Final",
        "format": "video/h264-mp4",
        "pix_fmt": "yuv420p",
        "crf": 16,
        "save_metadata": True,
        "pingpong": False,
        "save_output": True
    }}
}

def submit():
    prompt_id = str(uuid.uuid4())
    data = {"prompt": workflow, "client_id": "selena"}
    req = urllib.request.Request(
        f"{COMFY_URL}/prompt",
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    try:
        with urllib.request.urlopen(req) as response:
            result = json.load(response)
            print(f"✅ Submitted! ID: {result.get('prompt_id')}")
    except urllib.error.HTTPError as e:
        print(f"❌ Error: {e.read().decode('utf-8')[:1500]}")

if __name__ == "__main__":
    submit()
EOF

python3 /home/crogers2287/.openclaw/agents/selena/submit_hunyuan_v9.py


❌ Error: {"error": {"type": "prompt_outputs_failed_validation", "message": "Prompt outputs failed validation", "details": "", "extra_info": {}}, "node_errors": {"2": {"errors": [{"type": "value_not_in_list", "message": "Value not in list", "details": "base_size: '256' not in ['360', '540', '720']", "extra_info": {"input_name": "base_size", "input_config": [["360", "540", "720"], {"default": "540", "tooltip": "Resizes the input image to closest original training bucket size"}], "received_value": 256}}], "dependent_outputs": ["11"], "class_type": "HyVideoGetClosestBucketSize"}}}