Nodes/ComfyLiterals/Checkpoint
ComfyUI Node

Checkpoint

Turn your whole models folder into a list, then pick a few for a grid

By M1kep·Created 3 years ago·Updated 2 years ago· 118
Checkpoint
    • Selected Checkpoints
    literal

    You've got forty checkpoints sitting in your models/checkpoints folder and you want to see what three of them do with the same prompt and seed. Normally that means either rebuilding the graph three times or wiring up some batch machinery by hand. This node is the shortcut: it dumps every checkpoint filename into a text box, you keep the lines you want, and it hands you a clean list of names to feed downstream.

    How it works. When you add the node, ComfyUI reads folder_paths.get_filename_list("checkpoints") - that's the same internal list the standard Load Checkpoint node's dropdown uses - and pre-fills the literal box with one filename per line. Click into it and you'll see your entire checkpoints folder staring back at you. On execution, parse_literal splits the text on newlines and drops any empty lines, so whatever you leave in the box becomes the output. That's the whole mechanism: names in, names out, nothing loaded.

    The important trap - read this before running. The default text box contains every checkpoint you own. Not a placeholder, not an empty box - all of them, one per line. If you hit run without trimming, you're telling whatever you wired it to that you want forty checkpoints. In a grid-style workflow that's forty renders. Delete the lines you don't want; keep only the ones for this comparison.

    Inputs and outputs. One input: literal, a multiline text box pre-filled with your checkpoint list. One output: Selected Checkpoints, typed * (ComfyUI's wildcard/any-type) and flagged as a list. Two consequences follow from that * type. First, it can plug into just about anything that accepts a list of checkpoint names, which is why it rides along in 2023–2024-era grid and batch workflows. Second, and this is the sneaky part, ComfyUI won't type-check it - you can wire it into a plain Load Checkpoint node that expects a single name and it'll silently misbehave instead of refusing. The names it emits are exactly what Load Checkpoint's dropdown shows, including subfolder prefixes like characters/myModel.safetensors, and they are strings - you still need a loader (or a loop/batch wrapper) to actually get models out of them.

    Installing it. Standard pack install, and one of the lightest in the ecosystem: no requirements.txt, no Python deps, no model downloads.

    # via ComfyUI Manager: search "ComfyLiterals", install, restart ComfyUI
    
    # or manually
    cd ComfyUI/custom_nodes
    git clone https://github.com/M1kep/ComfyLiterals
    

    then restart. On startup the pack symlinks a small js/ folder into web/extensions/ComfyLiterals for its Operation node's UI; if the symlink fails on Windows the console prints a manual-copy instruction, and this node still works either way since it's pure Python.

    Troubleshooting. The usual "missing node: Checkpoint" error when loading someone's workflow without the pack is fixed by installing ComfyLiterals and restarting. Beyond that, the two real gotchas are the all-checkpoints default (trim your list!) and expecting the output to be loaded models when it's just names. If you want this exact behavior in a more actively maintained wrapper, packs like kj-nodes and Comfyroll ship comparable list/batch utilities - but for a quick "render this prompt across these three models" comparison, this node is the straightforward option.

    CategoryList Stuff

    Inputs (1)

    NameTypeDefaultDescription
    literalSTRING

    Outputs (1)

    NameTypeDescription
    Selected Checkpoints*