Comfy EverAnimate
EverAnimate identity anchors, wired straight into native WanAnimate
- positive
- negative
- vae
- clip_vision_output
- reference_image
- face_video
- pose_video
- background_video
- character_mask
- continue_motion
- prev_samples
- video_anchor_latent
- positive
- negative
- latent
- trim_latent
- trim_image
- video_frame_offset
If you've ever chained WanAnimate clips by hand - sampling 81 frames, decoding, copying the last frames, bumping the offset, re-encoding - you know the drill is half the battle. Comfy EverAnimate is the node that exists to retire that routine. It's a conditioning node that sits exactly where the native WanAnimate one would, but it adds EverAnimate's identity-anchor trick: a stack of reference-image latents that get prepended to every chunk so the character doesn't slowly morph into someone else as your video gets longer.
The pack is named after the vita-epfl/EverAnimate research project from spring 2026, which proposed anchoring each chunk with N identity latent slots. This node takes that idea and bolts it onto ComfyUI's native WanAnimate conditioning interface - no WanVideoWrapper, no API, no extra weights. If you already have native WanAnimate running, this is the same stack with one extra conditioning node in front of the KSampler.
How it works
Wan's VAE squashes time by ~4x, so an 81-frame chunk is a 21-latent window. EverAnimate's trick is to glue N anchor latents in front of that window via concat_latent_image and concat_mask - the exact conditioning keys native WanAnimate already understands. Your reference image gets VAE-encoded and repeated N times; the sampler sees "here's who this person is" before it ever denoises a frame.
Then there's the motion memory half. prev_samples (your previous chunk's KSampler output) gets sliced down to its last M latents and written over the front of the new window, weighted by motion_handoff_strength. At 1.0 that's the original hard handoff; the tooltip quietly recommends 0.6–0.8 if you're running low-step distilled checkpoints, where a hard lock tends to cause visible pops. Or skip latents entirely and feed continue_motion - the previous chunk's decoded frames - which triggers native WanAnimate-style image carry-over and takes priority over prev_samples.
The inputs that actually matter
You'll wire the guides, and the rest can mostly stay defaulted:
- reference_image - the character. This is what becomes the identity anchors.
- pose_video / face_video - the driving motion.
pose_strengthandface_strengthmultiply their influence;0disables each cleanly. - num_video_anchor_latents (
N, default 4) and num_motion_latents (M, default 1) - the two knobs this whole node exists for. More anchors = more identity lock, slightly more VRAM. - video_frame_offset - connect the previous node's
video_frame_offsetoutput here so pose/face/background guides stay aligned after carry frames get backtracked.
The outputs
positive and negative conditioning plus a blank latent go into your KSampler. The two INTs, trim_latent and trim_image, tell you how much to shave off the front of the chunk - that's the anchors and the carried frames - and video_frame_offset feeds the next chunk. The README's intended graph is Comfy EverAnimate -> KSampler -> TrimVideoLatent -> VAEDecode -> Video Combine, which is basically a native WanAnimate graph with this node swapped in.
Install
ComfyUI Manager (search "Comfy EverAnimate") or:
cd ComfyUI/custom_nodes
git clone https://github.com/younestft/Comfy_EverAnimate.git Comfy-EverAnimate
Restart ComfyUI. No requirements.txt, no models shipped, nothing heavy - but you do need the native WanAnimate stack already present: an Animate 14B checkpoint (the bundled example loads a KJ fp8 build of Wan 2.2 Animate 14B), the umt5_xxl text encoder, and the Wan 2.1 VAE.
Common issues
- The pack targets the newer
comfy_apinode API. If nodes fail to register, update ComfyUI before debugging anything else. - Keep the seed fixed across chunks. The README says it plainly: shared seed, stable boundaries.
- If you wired
background_videoandcharacter_maskand nothing changed, check the Master'sref image backgroundtoggle - when it's on, those inputs are ignored by design. - The whole pack is weeks old. Expect sharp edges and fast iteration; treat it as a tool for experimentation, not a settled pipeline.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–16384 | — |
| height | INT | 48016–16384 | — |
| length | INT | 771–16384 | — |
| batch_size | INT | 11–4096 | — |
| num_video_anchor_latents | INT | 41–16 | EverAnimate N. The paper/LoRA default is 4 identity anchor latent slots. |
| num_motion_latents | INT | 10–16 | EverAnimate M. Number of previous sampler latents to carry into the next chunk. |
| video_frame_offset | INT | 00–16384 | Connect this from the previous Comfy EverAnimate video_frame_offset output. |
| pose_strength | FLOAT | 1.0000–10 | Multiplier for native WanAnimate pose latents. 0 disables pose influence. |
| face_strength | FLOAT | 1.0000–10 | Strength for native WanAnimate face guide. 0 sends a neutral face guide. |
| motion_handoff_strength | FLOAT | 1.000–1 | How strongly the previous chunk's motion latents are locked into the next chunk. 1.0 is the original hard handoff; 0.6-0.8 is usually smoother for low-step distill runs. |
| continue_motion_max_frames | INT | 51–16384 | When continue_motion images are connected, carry this many final RGB frames into the next chunk. This matches native WanAnimate's image carry-over behavior. |
| clip_vision_outputopt | CLIP_VISION_OUTPUT | — | |
| reference_imageopt | IMAGE | — | |
| face_videoopt | IMAGE | — | |
| pose_videoopt | IMAGE | — | |
| background_videoopt | IMAGE | — | |
| character_maskopt | MASK | — | |
| continue_motionopt | IMAGE | Native-style image carry-over. Connect the previous chunk's final decoded images here. When connected, this takes priority over prev_samples. | |
| prev_samplesopt | LATENT | Previous native Wan sampler output. The node takes the last M latents as motion memory. | |
| video_anchor_latentopt | LATENT | Advanced: prebuilt N anchor latents. Leave empty to repeat the reference image latent. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| trim_latent | INT | — |
| trim_image | INT | — |
| video_frame_offset | INT | — |