IO Context Video (WVW)
The Wan wrapper's whole state on one wire
- 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
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, andmask_1/2/3. - Timing and audio:
frame_rate,frame_load_cap,context_length,overlap,skip_first_frames,select_every_nth,loop_idx, andaudio. - The usual core: steps, cfg, sampler/scheduler, denoise, seed, width/height, prompt text, path, purge, plus two free
any_1/2slots.
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_argsandvram_management_argshere 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.
Inputs (46)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE | Optional input for 'pipe'. | |
| torch_compile_argsopt | WANCOMPILEARGS | Optional input for 'torch_compile_args'. | |
| block_swap_argsopt | BLOCKSWAPARGS | Optional input for 'block_swap_args'. | |
| vram_management_argsopt | VRAM_MANAGEMENTARGS | Optional input for 'vram_management_args'. | |
| lorasopt | WANVIDLORA | Optional input for 'loras'. | |
| modelopt | WANVIDEOMODEL | Optional input for 'model'. | |
| clipopt | WANTEXTENCODER | Optional input for 'clip'. | |
| vaeopt | WANVAE | Optional input for 'vae'. | |
| text_embedsopt | WANVIDEOTEXTEMBEDS | Optional input for 'text_embeds'. | |
| image_embedsopt | WANVIDIMAGE_EMBEDS | Optional input for 'image_embeds'. | |
| images_inputopt | IMAGE | Optional input for 'images_input'. | |
| images_ref_startopt | IMAGE | Optional input for 'images_ref_start'. | |
| images_ref_newopt | IMAGE | Optional input for 'images_ref_new'. | |
| images_ref_endopt | IMAGE | Optional input for 'images_ref_end'. | |
| images_1stopt | IMAGE | Optional input for 'images_1st'. | |
| images_loopopt | IMAGE | Optional input for 'images_loop'. | |
| images_pp1opt | IMAGE | Optional input for 'images_pp1'. | |
| images_pp2opt | IMAGE | Optional input for 'images_pp2'. | |
| images_pp3opt | IMAGE | Optional input for 'images_pp3'. | |
| images_outputopt | IMAGE | Optional input for 'images_output'. | |
| mask_1opt | MASK | Optional input for 'mask_1'. | |
| mask_2opt | MASK | Optional input for 'mask_2'. | |
| mask_3opt | MASK | Optional input for 'mask_3'. | |
| stepsopt | INT | Optional input for 'steps'. | |
| cfgopt | FLOAT | Optional input for 'cfg'. | |
| sampler_nameopt | * | Optional input for 'sampler_name'. | |
| scheduleropt | * | Optional input for 'scheduler'. | |
| denoiseopt | FLOAT | Optional input for 'denoise'. | |
| seedopt | INT | Optional input for 'seed'. | |
| widthopt | INT | Optional input for 'width'. | |
| heightopt | INT | Optional input for 'height'. | |
| text_posopt | STRING | Optional input for 'text_pos'. | |
| text_i2popt | STRING | Optional input for 'text_i2p'. | |
| text_negopt | STRING | Optional input for 'text_neg'. | |
| frame_rateopt | FLOAT | Optional input for 'frame_rate'. | |
| frame_load_capopt | INT | Optional input for 'frame_load_cap'. | |
| context_lengthopt | INT | Optional input for 'context_length'. | |
| overlapopt | INT | Optional input for 'overlap'. | |
| skip_first_framesopt | INT | Optional input for 'skip_first_frames'. | |
| select_every_nthopt | INT | Optional input for 'select_every_nth'. | |
| loop_idxopt | INT | Optional input for 'loop_idx'. | |
| audioopt | AUDIO | Optional input for 'audio'. | |
| any_1opt | * | Optional input for 'any_1'. | |
| any_2opt | * | Optional input for 'any_2'. | |
| pathopt | STRING | Optional input for 'path'. | |
| purgeopt | BOOLEAN | Optional input for 'purge'. |
Outputs (46)
| Name | Type | Description |
|---|---|---|
| context | PIPE | β |
| torch_compile_args | WANCOMPILEARGS | β |
| block_swap_args | BLOCKSWAPARGS | β |
| vram_management_args | VRAM_MANAGEMENTARGS | β |
| loras | WANVIDLORA | β |
| model | WANVIDEOMODEL | β |
| clip | WANTEXTENCODER | β |
| vae | WANVAE | β |
| text_embeds | WANVIDEOTEXTEMBEDS | β |
| image_embeds | WANVIDIMAGE_EMBEDS | β |
| images_input | IMAGE | β |
| images_ref_start | IMAGE | β |
| images_ref_new | IMAGE | β |
| images_ref_end | IMAGE | β |
| images_1st | IMAGE | β |
| images_loop | IMAGE | β |
| images_pp1 | IMAGE | β |
| images_pp2 | IMAGE | β |
| images_pp3 | IMAGE | β |
| images_output | IMAGE | β |
| mask_1 | MASK | β |
| mask_2 | MASK | β |
| mask_3 | MASK | β |
| steps | INT | β |
| cfg | FLOAT | β |
| sampler_name | * | β |
| scheduler | * | β |
| denoise | FLOAT | β |
| seed | INT | β |
| width | INT | β |
| height | INT | β |
| text_pos | STRING | β |
| text_i2p | STRING | β |
| text_neg | STRING | β |
| frame_rate | FLOAT | β |
| frame_load_cap | INT | β |
| context_length | INT | β |
| overlap | INT | β |
| skip_first_frames | INT | β |
| select_every_nth | INT | β |
| loop_idx | INT | β |
| audio | AUDIO | β |
| any_1 | * | β |
| any_2 | * | β |
| path | STRING | β |
| purge | BOOLEAN | β |