Nodes/ComfyUI-FunPack/FunPack Checkpoint Loader
ComfyUI Node

FunPack Checkpoint Loader

One .safetensors, three sockets, and a status line that tells the truth

By digital-garbage·Created about a year ago·Updated about 13 hours ago· 20
FunPack Checkpoint Loader
    • model
    • clip
    • vae
    • status
    ◄ckpt_name▾►

    A checkpoint loader sounds like the least interesting node in ComfyUI, right up until you understand why this pack needed to write one. FunPack's pipelines are built for video models - MiniMax H3 and LTX ship the diffusion model, the text encoder and the VAE as three separate files, and pairing them is your job. The SD family doesn't work that way: one .safetensors carries all three. Without a node that unpacks a single file into three sockets, you can't load an SD checkpoint into a FunPack pipeline at all. The author says this outright in the module docstring, and adds the bit I like: neither loader is the "real" one, because slots are replaceable.

    That's the honest framing. It's a compatibility adapter, not an upgrade.

    How it works

    Under the hood it's the same call ComfyUI's own loader makes - comfy.sd.load_checkpoint_guess_config with VAE and CLIP output enabled, pointed at your models/embeddings folder. The "guess" is doing real work there: ComfyUI reads the state dict and works out whether it's looking at an SD 1.5 UNet, an SDXL one, a Flux transformer, something else, and builds the matching model class. Then it hands back the model, the text encoder and the VAE if they're in the file.

    Here's the part that earns the node its keep: it checks whether the parts are actually there. A checkpoint can load perfectly happily with no VAE and then blow up three nodes later at VAE Decode, where the error message tells you nothing useful. FunPack warns at load time instead, and names which part is missing. If your SDXL merge came out of a merge tool with the VAE stripped, you find out here, in one line, rather than at the end of a five-minute render.

    The inputs and outputs that matter

    One required input: ckpt_name, a dropdown populated from ComfyUI/models/checkpoints. If your file isn't in the list, it isn't in that folder - the folder path is set by ComfyUI, not by this node, and this node reads nothing else.

    Four outputs: model, clip, vae, and status. Wire the first three the way you'd wire the outputs of ComfyUI's own CheckpointLoaderSimple. status is the string worth a glance: it reports the filename, the model class ComfyUI decided it was, and any missing part - the source builds it as "<name> loaded as <class>" plus (no clip) or (no vae) where applicable.

    Install

    The whole pack installs in one go, so do it once and every FunPack node shows up:

    cd ComfyUI/custom_nodes
    git clone https://github.com/digital-garbage/ComfyUI-FunPack
    cd ComfyUI-FunPack && pip install -r requirements.txt
    

    Restart ComfyUI afterwards. ComfyUI Manager and comfy node install ComfyUI-FunPack install what's published on the Comfy Registry, and the README warns that 5.0 only appears there once it's published - check Settings ▸ About FunPack inside the pack's /funpack/ UI to confirm which version you actually got, since the 4.x branch is a completely different app.

    Dependencies: comfy-kitchen>=0.2.32 and gguf, both pure or compiled-but-pinned; the README is clear that FunPack uses your existing ComfyUI and PyTorch install rather than shipping its own. No model files come with it, obviously - this node's whole job is reading yours.

    Common issues

    Empty clip or vae, and a crash downstream. That's the case the node is designed to shout about. Read status or the console warning. Some diffusion-only uploads genuinely have no encoder; you'll need to pair them with a separate CLIP and VAE loader, which the pack also ships.

    The dropdown is empty. models/checkpoints has nothing in it, or you put the file in models/diffusion_models, which is a different folder and a different loader. H3 and LTX files belong there; SD-style single files belong in checkpoints.

    A .gguf checkpoint doesn't appear or fails. The gguf requirement lets FunPack's own loaders read quantized .gguf containers, but this particular node goes through ComfyUI's checkpoint path. For .gguf diffusion models, the pack's own guidance is that they load without the ComfyUI-GGUF pack as long as you use the right loader - and that they get expanded to full size in memory, which is the opposite of the reason you downloaded a quantized file.

    You're following a 4.x tutorial and nothing matches. FunPack 5 was a rewrite from scratch, not an update. The old app is still installable via git clone -b v4-classic https://github.com/digital-garbage/ComfyUI-FunPack if a workflow depends on it, but don't mix the two in one custom_nodes folder.

    One last thing worth internalising, because it applies to every node in this pack: FunPack registers features as modules, and a module that fails to load is quietly left out while the run continues. If the node is missing entirely rather than misbehaving, the console log at startup is where the reason is.

    CategoryFunPack/Loaders

    Inputs (1)

    NameTypeDefaultDescription
    ckpt_nameCOMBO0 options:

    Outputs (4)

    NameTypeDescription
    modelMODEL—
    clipCLIP—
    vaeVAE—
    statusSTRING—