Nodes/ComfyUI_Eclipse/IO Context Video (WVW)
ComfyUI Node

IO Context Video (WVW)

The Wan wrapper's whole state on one wire

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
IO Context Video (WVW)
  • pipe
  • torch_compile_args
  • block_swap_args
  • vram_management_args
  • loras
  • model
  • clip
  • vae
  • text_embeds
  • image_embeds
  • images_input
  • images_ref_start
  • images_ref_new
  • images_ref_end
  • images_1st
  • images_loop
  • images_pp1
  • images_pp2
  • images_pp3
  • images_output
  • mask_1
  • mask_2
  • mask_3
  • sampler_name
  • scheduler
  • audio
  • any_1
  • any_2
  • context
  • torch_compile_args
  • block_swap_args
  • vram_management_args
  • loras
  • model
  • clip
  • vae
  • text_embeds
  • image_embeds
  • images_input
  • images_ref_start
  • images_ref_new
  • images_ref_end
  • images_1st
  • images_loop
  • images_pp1
  • images_pp2
  • images_pp3
  • images_output
  • mask_1
  • mask_2
  • mask_3
  • steps
  • cfg
  • sampler_name
  • scheduler
  • denoise
  • seed
  • width
  • height
  • text_pos
  • text_i2p
  • text_neg
  • frame_rate
  • frame_load_cap
  • context_length
  • overlap
  • skip_first_frames
  • select_every_nth
  • loop_idx
  • audio
  • any_1
  • any_2
  • path
  • purge
β—„stepsβ€”β–Ί
β—„cfgβ€”β–Ί
β—„denoiseβ€”β–Ί
β—„seedβ€”β–Ί
β—„widthβ€”β–Ί
β—„heightβ€”β–Ί
β—„text_posβ€”β–Ί
β—„text_i2pβ€”β–Ί
β—„text_negβ€”β–Ί
β—„frame_rateβ€”β–Ί
β—„frame_load_capβ€”β–Ί
β—„context_lengthβ€”β–Ί
β—„overlapβ€”β–Ί
β—„skip_first_framesβ€”β–Ί
β—„select_every_nthβ€”β–Ί
β—„loop_idxβ€”β–Ί
β—„pathβ€”β–Ί
β—„purgeβ€”β–Ί

The "WVW" is Eclipse's WanVideo wrapper - the pack's pipe for Wan 2.x video workflows. A Wan pipeline doesn't just carry model/clip/vae; it carries a dedicated text encoder, image embeddings, LoRA stacks, torch.compile flags, block-swap args, and VRAM-management settings that no image context knows about. IO Context Video (WVW) is the context node that bundles that whole Wan-specific state into one PIPE and explodes it back out, so a Wan workflow can live on a single tidy wire instead of thirty.

What it is

A context manager built on the same merge-and-explode pattern as the image and video contexts - the source even credits the same rgthree lineage - but its slot list is Wan-flavored from top to bottom:

  • Wan-specific model slots: model (WANVIDEOMODEL), clip (WANTEXTENCODER), vae (WANVAE), text_embeds (WANVIDEOTEXTEMBEDS), image_embeds (WANVIDIMAGE_EMBEDS), loras (WANVIDLORA).
  • Performance plumbing: torch_compile_args (WANCOMPILEARGS), block_swap_args (BLOCKSWAPARGS), vram_management_args (VRAM_MANAGEMENTARGS). These are the knobs people fight over when Wan video eats their VRAM.
  • The full video frame surface: images_input, images_ref_start/new/end, images_1st, images_loop, images_pp1/2/3, images_output, and mask_1/2/3.
  • Timing and audio: frame_rate, frame_load_cap, context_length, overlap, skip_first_frames, select_every_nth, loop_idx, and audio.
  • The usual core: steps, cfg, sampler/scheduler, denoise, seed, width/height, prompt text, path, purge, plus two free any_1/2 slots.

How it works

Same merge semantics as the rest of the family: start from an input pipe, overlay whatever fields you connect or set, and the output context is the merged dict. Every field also comes out individually, so you can pull just the text_embeds and image_embeds wires into a Wan text-encode stage while the context wire carries everything onward. If your pipeline uses the Eclipse KSampler (Kargim), it can consume the context directly and return an updated pipe - that's the intended loop: build context β†’ sample β†’ get updated context β†’ build the next pass.

The fields a beginner actually sets:

  • pipe - start from a loader-provided context or carry one forward.
  • model / clip / vae - Wan's model, its text encoder, and VAE (the WanLoader family in Smart Model Loader provides these).
  • block_swap_args / vram_management_args - connect these when you're setting up block swapping or VRAM management for long generations.
  • images_ref_start / images_ref_end - first/last frame anchors for image-to-video.

What goes in, what comes out

All inputs optional; outputs are context (PIPE) plus one socket per field, typed to the Wan custom types (WANVIDEOMODEL, WANTEXTENCODER, etc.) so ComfyUI keeps type-checking your Wan connections.

Install

Part of ComfyUI_Eclipse. Manager β†’ ComfyUI_Eclipse β†’ install β†’ restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

Under Eclipse β†’ Pipe. Note the Wan model loaders themselves live in the companion pack ComfyUI Smart Model Loader, and the text encoder comes via ComfyUI SmartLLM - the Eclipse pack provides the pipe plumbing, not the loaders.

Troubleshooting

  • Wan types not recognized: the custom WAN* types come from the WanVideo ecosystem (Kijai's WanVideoWrapper is the common source). Install the Wan wrapper pack your loaders expect, or the sockets won't type-check.
  • VRAM-heavy generation: connect block_swap_args and vram_management_args here and tune them - this node is the clean place to carry those settings through the pipeline.
  • Old workflows: v4.0.0 removed legacy IDs; run python tools/migrate_workflow.py <file>.json.
CategoryπŸŒ’ Eclipse/ Pipe

Inputs (46)

NameTypeDefaultDescription
pipeoptPIPEOptional input for 'pipe'.
torch_compile_argsoptWANCOMPILEARGSOptional input for 'torch_compile_args'.
block_swap_argsoptBLOCKSWAPARGSOptional input for 'block_swap_args'.
vram_management_argsoptVRAM_MANAGEMENTARGSOptional input for 'vram_management_args'.
lorasoptWANVIDLORAOptional input for 'loras'.
modeloptWANVIDEOMODELOptional input for 'model'.
clipoptWANTEXTENCODEROptional input for 'clip'.
vaeoptWANVAEOptional input for 'vae'.
text_embedsoptWANVIDEOTEXTEMBEDSOptional input for 'text_embeds'.
image_embedsoptWANVIDIMAGE_EMBEDSOptional input for 'image_embeds'.
images_inputoptIMAGEOptional input for 'images_input'.
images_ref_startoptIMAGEOptional input for 'images_ref_start'.
images_ref_newoptIMAGEOptional input for 'images_ref_new'.
images_ref_endoptIMAGEOptional input for 'images_ref_end'.
images_1stoptIMAGEOptional input for 'images_1st'.
images_loopoptIMAGEOptional input for 'images_loop'.
images_pp1optIMAGEOptional input for 'images_pp1'.
images_pp2optIMAGEOptional input for 'images_pp2'.
images_pp3optIMAGEOptional input for 'images_pp3'.
images_outputoptIMAGEOptional input for 'images_output'.
mask_1optMASKOptional input for 'mask_1'.
mask_2optMASKOptional input for 'mask_2'.
mask_3optMASKOptional input for 'mask_3'.
stepsoptINTOptional input for 'steps'.
cfgoptFLOATOptional input for 'cfg'.
sampler_nameopt*Optional input for 'sampler_name'.
scheduleropt*Optional input for 'scheduler'.
denoiseoptFLOATOptional input for 'denoise'.
seedoptINTOptional input for 'seed'.
widthoptINTOptional input for 'width'.
heightoptINTOptional input for 'height'.
text_posoptSTRINGOptional input for 'text_pos'.
text_i2poptSTRINGOptional input for 'text_i2p'.
text_negoptSTRINGOptional input for 'text_neg'.
frame_rateoptFLOATOptional input for 'frame_rate'.
frame_load_capoptINTOptional input for 'frame_load_cap'.
context_lengthoptINTOptional input for 'context_length'.
overlapoptINTOptional input for 'overlap'.
skip_first_framesoptINTOptional input for 'skip_first_frames'.
select_every_nthoptINTOptional input for 'select_every_nth'.
loop_idxoptINTOptional input for 'loop_idx'.
audiooptAUDIOOptional input for 'audio'.
any_1opt*Optional input for 'any_1'.
any_2opt*Optional input for 'any_2'.
pathoptSTRINGOptional input for 'path'.
purgeoptBOOLEANOptional input for 'purge'.

Outputs (46)

NameTypeDescription
contextPIPEβ€”
torch_compile_argsWANCOMPILEARGSβ€”
block_swap_argsBLOCKSWAPARGSβ€”
vram_management_argsVRAM_MANAGEMENTARGSβ€”
lorasWANVIDLORAβ€”
modelWANVIDEOMODELβ€”
clipWANTEXTENCODERβ€”
vaeWANVAEβ€”
text_embedsWANVIDEOTEXTEMBEDSβ€”
image_embedsWANVIDIMAGE_EMBEDSβ€”
images_inputIMAGEβ€”
images_ref_startIMAGEβ€”
images_ref_newIMAGEβ€”
images_ref_endIMAGEβ€”
images_1stIMAGEβ€”
images_loopIMAGEβ€”
images_pp1IMAGEβ€”
images_pp2IMAGEβ€”
images_pp3IMAGEβ€”
images_outputIMAGEβ€”
mask_1MASKβ€”
mask_2MASKβ€”
mask_3MASKβ€”
stepsINTβ€”
cfgFLOATβ€”
sampler_name*β€”
scheduler*β€”
denoiseFLOATβ€”
seedINTβ€”
widthINTβ€”
heightINTβ€”
text_posSTRINGβ€”
text_i2pSTRINGβ€”
text_negSTRINGβ€”
frame_rateFLOATβ€”
frame_load_capINTβ€”
context_lengthINTβ€”
overlapINTβ€”
skip_first_framesINTβ€”
select_every_nthINTβ€”
loop_idxINTβ€”
audioAUDIOβ€”
any_1*β€”
any_2*β€”
pathSTRINGβ€”
purgeBOOLEANβ€”