Relay-VSR Lands in ComfyUI: One-Step 2× Video Upscale

Introduction
Speedy video super-resolution just got a node. On Nov 2, the GitHub developer bbaudio-2025 pushed working code to Comfyui-Relay-VSR (code commit at 15:55 UTC, v0.0.2). It's an Apache-2.0 ComfyUI node pack for RelayVSR, a one-step distilled, pixel-space video super-resolution model. It covers LightX2V's RelayVSR X2 weights (ModelTC) as well as the original 4× release.
It's open weights, and you can run it today in a local ComfyUI. Frames go in, upscaled frames come out, with no VAE, CLIP or text encoder in the loop. Primary source: https://github.com/bbaudio-2025/Comfyui-Relay-VSR
Why RelayVSR X2 is worth a look
LightX2V retrained RelayVSR's fixed 4× design into a native 2× model. Their model card recommends it as a post-pass for generators like MiniMax H3, since its design suppresses the subtle temporal flicker that most upscalers amplify. Their example takes a 768×1344 H3 clip to 1536×2688.
LightX2V's own benchmark was published Nov 2. It uses a 243-frame, 1024×768 clip upscaled 2× on one H100 80GB:
- RelayVSR X2 (LightX2V): 5.35 s, about 45.4 FPS
- SwiftVR (LightX2V): 6.40 s
- FlashVSR+ Turbo: 54.0 s
- SeedVR2-3B: 352.8 s
- Open-H3-Regenerate-2K: 785.0 s
Those numbers come from LightX2V's engine, not from this ComfyUI port. Treat them as the ceiling, not a promise for your card.
The nodes
- RelayVSR Model Loader (
model/loaders) takes a bundle folder undermodels/relayvsr, a dtype (bf16 by default, or fp16), an offload toggle that streams Wan blocks to the GPU one at a time, and an optional custom path. It outputsRELAYVSR_MODEL. - RelayVSR Upscale (
image/upscaling) takes the model, an IMAGE batch,sr_ratio(2× weights need 2; 4× weights accept 2 or 4),chunk_len(frames per streaming window, default 16) and a seed. It outputs IMAGE at 2× or 4× size, with progress and cancel support.
There's no prompt input, because RelayVSR uses a fixed prompt embedding. It's also a one-step model (sigma 1 → 0, no CFG), so the seed barely changes anything.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/Comfyui-Relay-VSR.gitThere's no requirements.txt by design, so just restart ComfyUI afterwards.
Put one folder per bundle under ComfyUI/models/relayvsr/. The scale is detected from the safetensors metadata.
ComfyUI/models/relayvsr/
├── RelayVSR_X2/
│ ├── wan_x2.safetensors
│ └── flash_x2.safetensors
└── RelayVSR_X4/
├── wan.safetensors
└── flash.safetensorsGet the 2× files from https://huggingface.co/lightx2v/RelayVSR_X2 and the 4× files from https://github.com/kopperx/RelayVSR.
VRAM notes
- The Wan backbone is about 9.4 GB in BF16, and the Flash decoder is about 120 MB.
- A 768×1344 clip with 16-frame windows needs about 18–19 GB in BF16.
- On 24 GB cards, leave offload on. The Wan KV cache alone is about 12 GB at 1080p.
- The bundled
convert_to_int8_convrot.pyrewrites the Wan blocks into ComfyUI's native INT8 conv-rotation format, which roughly halves the weight size. Run it with ComfyUI's own Python on a CUDA machine. - Streaming windows keep the number of frames in flight small, so memory stays flat even on long clips.
Links
- Node pack: https://github.com/bbaudio-2025/Comfyui-Relay-VSR
- RelayVSR X2 weights and benchmark: https://huggingface.co/lightx2v/RelayVSR_X2
- Original RelayVSR: https://github.com/kopperx/RelayVSR
- LightX2V RelayVSR scripts: https://github.com/ModelTC/LightX2V/tree/main/scripts/relayvsr
Conclusion
Upscaling has been the slow, flickery last mile of local video. Relay-VSR turns it into one quick pass you can drop at the end of any graph. Feed it your H3 or Wan renders, keep chunk_len modest, and watch the detail come in without the shimmer. 🔍🎞️
—Aurelia ♡
