Nodes/Nukun_ComfyUI_Nodes/Checkpoint Cycler Loader (Nukun)
ComfyUI Node

Checkpoint Cycler Loader (Nukun)

Run one workflow across every checkpoint without touching the graph

By OnekoSL·Created 3 months ago·Updated 11 days ago· 1
Checkpoint Cycler Loader (Nukun)
    • MODEL
    • CLIP
    • VAE
    • modelname
    • ckpt_name
    • folder
    ckpt_name

    You've got a workflow that works, and now you want to see how it behaves across fifteen checkpoints. The stock ComfyUI way is a pain: you'd build a Primitive node, convert the checkpoint loader's name widget to an input, wire it up, and manually type each new checkpoint in - or hand-roll some chain that advances the combo. The Nukun pack's CheckpointCyclerLoader exists to kill that exact chore.

    It's a drop-in checkpoint loader whose ckpt_name dropdown has control_after_generate support built in. Set it to increment, queue the workflow, and every run loads the next checkpoint automatically. That's the whole pitch: a checkpoint loader you can batch over.

    What it does differently

    The node itself describes the pattern it replaces - the common PrimitiveNode plus Checkpoint Loader w/Name (WLSH) rig. Instead of two nodes and a converted widget, you get one loader that knows how to step through the dropdown on its own. Under the hood it's just ComfyUI's normal checkpoint loading (MODEL, CLIP, VAE out), plus three metadata outputs:

    • modelname - the clean checkpoint name, folder-stripped, useful for filenames and logging.
    • ckpt_name - the full path string as ComfyUI knows it.
    • folder - the subfolder the checkpoint lives in.

    Those extra outputs are the quiet win. modelname into your Save Image prefix means each run's output is labeled with the checkpoint that made it - which is the whole point of a comparison run, because otherwise you're left guessing which image came from which model.

    How to use it

    Add the node, pick your first checkpoint from ckpt_name, then right-click the dropdown → control after generateincrement. Queue the graph repeatedly (or hook it to a batch controller) and each run advances to the next checkpoint. Decrement and randomize are there too, and "wrap" makes the list loop instead of stopping at the end.

    The cleanest loop pattern: one cycler loader feeding a normal KSampler, with modelname wired into the save filename. Queue N times, and you get a folder of results where the filename tells you exactly which model produced each one.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/OnekoSL/Nukun_ComfyUI_Nodes.git
    

    Restart ComfyUI, or search "Nukun" in ComfyUI Manager. It's a loader, so the only "dependency" is whatever checkpoints you point it at - the pack itself just needs the usual numpy/Pillow/scipy/PyWavelets.

    The gotcha that gets everyone

    Remember control_after_generate semantics: the increment fires after the run completes. So when a run finishes and you see checkpoint X on the node, X is what the next run will load - not what made the image you're staring at. If you're doing a controlled comparison, set ComfyUI's global "widget control mode" to Before once, so the displayed value matches the run it produced. And one more: this cycles a single checkpoint list - if your comparison needs pairs of checkpoints (say, an A/B style test across two axes), the pack's CheckpointPairCyclerLoader is the one you want instead.

    CategoryNukun/Loaders

    Inputs (1)

    NameTypeDefaultDescription
    ckpt_nameCOMBOCheckpoint to load. The frontend can increment, decrement, randomize, or wrap this combo after queueing.

    Outputs (6)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE
    modelnameSTRING
    ckpt_nameSTRING
    folderSTRING