Nodes/ComfyUI-Easy-Media/Bernini Model Patch
ComfyUI Node

Bernini Model Patch

One Input, One Output — and It Might Not Even Do Anything

By yolain·Created 3 months ago·Updated about 16 hours ago· 158
Bernini Model Patch
  • model
  • model

It's a compatibility shim, and that's the whole job

Bernini is ByteDance's video editing model, fine-tuned from Wan 2.2 weights - the "maskless V2V editing" model the community crowned the new local king back in mid-2026, the one that lets you restyle or composite a video without a mask or a ControlNet in front of it. It works by appending VAE-encoded in-context latents - your source video, your reference images - as extra tokens the model reads alongside the prompt.

The catch: Bernini support in ComfyUI is a moving target. Modern builds ship it natively in comfy_extras. Older builds don't. This node is Easy-Media's answer: it makes sure a Wan model understands Bernini in-context latents no matter which build you're on.

How it actually works

Read the source and it's refreshingly honest:

try:
    from comfy_extras.nodes_bernini import BerniniConditioning as CoreBerniniConditioning
    return io.NodeOutput(model)   # pass-through, do nothing
except ImportError:
    # clone model, bind bernini conds, add a diffusion_model wrapper

So on any recent ComfyUI that already ships nodes_bernini, the node is literally a no-op - your model goes in and comes right back out. On an older build it clones the model, binds Bernini's conditioning helper, and installs a bernini_forward_wrapper on the diffusion model so the context tokens actually get consumed during sampling. You get identical behavior either way; the node just guarantees it.

That's worth knowing before you blame it for your results. It is not a LoRA, it does not change output quality, and it won't make a model do Bernini editing by itself - it's the socket that lets the conditioning nodes plug in.

Inputs and outputs

There's exactly one of each:

  • model in - your Wan model, typically the Wan 2.2 A14B checkpoint Bernini is fine-tuned from. Wire in the model load.
  • model out - the same model, now (or still) Bernini-aware. Feed it to your sampler, and pair it with a conditioning node from the same pack, like Easy Bernini S2V Conditioning or the core Bernini Conditioning, which is where the source video and references actually get attached.

That's the whole surface. No widgets to fiddle with, nothing to forget.

Installation and gotchas

It installs with the rest of the pack - clone Easy-Media into custom_nodes, or grab it via ComfyUI Manager under ComfyUI-Easy-Media, then restart. No extra Python deps for this node; it leans on whatever comfy_extras your ComfyUI ships.

Where people get burned:

  • Expecting it to change something. On a current ComfyUI it's a pass-through. If you upgraded ComfyUI and "nothing happened," that's correct behavior, not a bug.
  • Using it without Bernini conditioning. The patch alone does nothing. You need a conditioning node that sets context_latents - otherwise there's nothing for the wrapper to consume.
  • Being on an ancient ComfyUI. If you're stuck on a build that predates Bernini support and the wrapper path misbehaves, the fix is usually just updating ComfyUI rather than debugging the patch.

It's the rare node where the right instinct is to trust it and look elsewhere when something's wrong. Slot it in, forget it, and spend your debugging energy on the actual Bernini pipeline.

Categorymodel_patches/video_models

Inputs (1)

NameTypeDefaultDescription
modelMODEL

Outputs (1)

NameTypeDescription
modelMODEL