Model Save (No Workflow) (DEPRECATED)
Export a checkpoint without the metadata baggage
- model
Stock ComfyUI's checkpoint-save nodes embed the full workflow - prompt and all - into the saved file's metadata. Sometimes that's a feature ("workflow included" is culture), and sometimes it's a liability: you're sharing a merge, you don't want your entire graph embedded in it, or you want a clean file. DonutModelSave is the pack's answer: it mirrors ComfyUI's stock ModelSave behavior but strips the embedded workflow (prompt / extra_pnginfo) from the metadata, and adds a one-click dtype conversion so you can export fp8/fp16/bf16/fp32 straight from the graph. The "(No Workflow)" in the display name is the whole pitch.
It's DEPRECATED - the current version is DonutSave, which adds optional CLIP and VAE inputs so you can bake a full checkpoint, not just the model. DonutModelSave is the model-only variant kept alive for saved workflows.
How it works
The state-dict construction path is the same as comfy.sd.save_checkpoint: it loads the patched model to GPU, walks ModelPatcher.state_dict_for_saving(), and routes through ComfyUI's lazy-casting machinery - which is the canonical way patches (LoRAs, merges) get baked into a saved checkpoint. So when you save a model that's had a DonutLoRAStack apply or a merge run through it, you get the baked result, not the base weights. Then it rebuilds the modelspec metadata block minus the workflow fields, converts dtypes if you asked, and writes the file.
The inputs
- model - the patched/merged MODEL you want to persist.
- filename_prefix (default
diffusion_models/ComfyUI) - output path relative to your output folder. "No Workflow" also means no automatic counter gymnastics beyond the stock behavior, so pick something memorable. - dtype -
original(keep what's in memory), or one offp8_e4m3fn,fp8_e5m2,fp16,bf16,fp32.
The dtype knob is the sleeper feature. Saving an fp16 export of an fp8-in-memory model, or a bf16 checkpoint for a different target, is a genuinely useful move when you're preparing files for a specific runtime. fp8 files are roughly half the size of fp16 and are the pragmatic choice for sharing.
No outputs - it's a terminal save node.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/DonutsDelivery/ComfyUI-DonutNodes.git donutnodes
cd donutnodes
python -m pip install -r requirements.txt
or ComfyUI Manager → "DonutNodes," restart.
Where people get burned
Two gotchas. First, converting dtype on a merge you intend to keep working with is fine; converting for sharing is fine; but original does not mean "what I loaded" - it means "whatever dtype it is in memory," which after ComfyUI's lazy casting can surprise you. Second, stripped metadata is a double-edged sword: the file won't carry the workflow, so you can't drag it back into ComfyUI to reconstruct the graph later either. If you want the workflow for yourself but not for the world, keep a separate copy. And as always with redistributing models, check the license on what you're exporting before you share.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| filename_prefix | STRING | diffusion_models/ComfyUI | Saved under ComfyUI/output by default; existing symlinks beneath output are supported for model storage. |
| dtype | COMBO | bf16 | Saved weight dtype. BF16 is the default to avoid accidentally preserving an fp8-loaded model. 'original' keeps the currently loaded dtype. |
Outputs (0)
No outputs