Kandinsky 6 Remove I2VA Reference
The One-Widget Node That Saves You From a Duplicated First Frame
- joint_latent
- joint_latent
There is no shame in the confusion this node causes. It takes one latent and returns one latent, with no widgets to touch, and if you skip it nothing fails - you just get a video whose first frame is your input image sitting there twice before the motion starts.
That's because of how image-to-video works in Kandinsky 6. Kandinsky 6 Image to Video+Audio appends your encoded reference frame onto the end of the video stream and masks it so it stays clean through denoising. When sampling finishes, that extra frame is still in there. It did its job. Now it needs to leave.
How it works
The node pulls the two streams out of the joint latent, reads the k6_generated_video_latent_frames count the I2VA node stamped on it, and slices the video stream back to exactly the frames you actually generated. The audio stream passes through untouched - only the video stream ever had a reference frame in it.
It cleans up after itself, too: noise_mask, the k6_reference_tail flag and the frame-count metadata all get dropped from the returned latent, so nothing downstream is looking at a mask for a frame that no longer exists. Then it re-validates the whole latent - video 5D with 16 channels, audio 3D with 40 - before handing it back.
The important design decision is that it refuses to run on a latent with no reference metadata. Feed it a text-to-video latent by mistake and you get: "Kandinsky 6 reference-tail metadata is missing. Connect the output of Kandinsky6 Image to Video+Audio through KSampler first." That message is the best documentation in the pack, because it says both what's wrong and what the correct wiring looks like.
Input and output
joint_latent in, joint_latent out. That's the whole node - no widgets, no settings.
It goes between the sampler and the decoders:
Kandinsky 6 Empty Latent ──┐
Kandinsky 6 Text Encode ───┼─► Kandinsky 6 Image to Video+Audio
VAEEncode (your image) ────┘ │
▼
KSampler / Kandinsky 6 Sampler
│
▼
Kandinsky 6 Remove I2VA Reference
│ │
▼ ▼
VAEDecode Kandinsky 6 Audio VAE Decode
(Hunyuan video VAE) (audio VAE)
Both decoders need this node's output, not the sampler's. The video one for obvious reasons; the audio one because the joint latent it expects is still the nested pair, and this node hands it back intact with only the video stream shortened. Wire the sampler straight into Kandinsky 6 Audio VAE Decode and you'll get more audio samples than the video has frames. Which the decoder will detect and complain about - but it's a confusing complaint when you're looking at a video problem.
T2VA workflows don't need this node at all. There's no reference tail to remove.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Kandinsky-T8.git
cd Comfyui-Kandinsky-T8
python -m pip install -r requirements.txt
ComfyUI Manager users: search Kandinsky T8 (publisher t8star) instead. Run the pip step with ComfyUI's own Python environment, restart, and disable the official Kandinsky 6 extension if you have it - both packs register identical node names. ComfyUI 0.39.0+ and an INT8-tensor-core NVIDIA GPU are the actual floors.
Where it goes wrong
"Reference-tail metadata is missing." You're feeding it something that never went through the I2VA node and the sampler - most often the empty latent, or a latent from a different branch. Rewire from the sampler's output. Also worth knowing: the metadata doesn't survive a save/reload round trip, so an image-to-video workflow resumed from a cached latent won't have it.
"Unexpected temporal shape." The frame count in the metadata doesn't match the actual video stream. In practice that means something rewrote the latent in between - a manual latent node, an inpainting pass that resized the temporal axis. Rebuild the chain rather than patching it.
You skipped it and the clip looks fine for two seconds. That's the failure mode: your reference image is frame zero and frame one, so motion appears to start late. If I2VA output ever feels like it has a stutter at the head, check this node is in the graph before you start tuning the sampler.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| joint_latent | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| joint_latent | LATENT | — |