Donut Filler (Model + CLIP)
A fake model and a fake CLIP, for when a merge needs an empty seat
- model
- clip
DonutFiller is a stub. It takes no inputs and outputs two things: a fake model and a fake clip. They're not trained on anything, they contain no weights worth speaking of, and they will produce nothing if you try to sample with them. What they do is fill a socket. The node exists for one reason: this pack's model-merging nodes - the WidenMerge family - have slots for a base model, a "other" model, and several extra model inputs, and sometimes you want to run the merge machinery with a slot deliberately empty.
The output objects carry a marker (_is_filler), and the merge code is written to treat any model or clip with that marker as "not provided" and skip it. So instead of leaving a model_3 input unconnected and hoping the node tolerates None, you wire in a DonutFiller and the merge proceeds as if that seat never existed. It's a plumbing convention, not a feature you'll show off.
When you'd actually use this
The realistic scenario is a scripted or template workflow where a merge node has several optional model inputs and you want the graph to stay fully wired even when you're merging fewer models this run. ComfyUI's unconnected optional inputs already arrive as None, and the pack's merge code filters those too - so a filler is most useful when something upstream forces a non-None connection, or when you're building a workflow that gets reconfigured by a prompt or a preset and you want every socket pre-populated.
The combined DonutFiller emits both model and clip in one node. The separate DonutFillerModel and DonutFillerClip nodes (deprecated, same pack) each emit one. Same stub, one versus two wires.
The honest verdict
This is a genuinely weird node, and that's fine - it's a solution to a problem most people never hit. If you don't merge models with this pack, you will never touch it and should feel good about that. If you do, it's one of those "oh, that's what that's for" moments when you finally build a parameterized merge workflow and a slot refuses to stay empty.
Two things worth knowing. First, it's a stub - do not feed its model output into a sampler and expect an image; the marker only means something to the pack's merge code, and anything else that receives a filler will just break or no-op confusingly. Second, the filler's whole contract is that the merge skips it, so if your merge output looks like it's missing a model's contribution, check which slots have fillers in them - a filler where you meant a real model is a silent "skip me."
Installing
Ships with the pack: ComfyUI Manager → search DonutNodes, or git clone the repo into custom_nodes/ and pip install -r requirements.txt with the same Python that runs ComfyUI. No model downloads - the stub needs nothing. And unlike every patching node in this pack, there's nothing to re-run; it's a constant.
Inputs (0)
No inputs
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |