Load Pre Checkpoint Model
'Did my model actually load?' — the pack's checkpoint sanity check
- MODEL
- CLIP
- VAE
- STRING
Before we go anywhere, here's the honest version: LoadPreCheckpointModel does not load a checkpoint. Despite the name (display name "Load Pre Checkpoint Model"), it does not call a loader, does not touch your disk, and does not emit the model anywhere. What it actually does is take a model that has already been loaded by your normal Load Checkpoint node - as MODEL, CLIP, and VAE inputs - check that the MODEL object isn't empty, and return a STRING that says "CheckPoint Model loaded successfully." It's a validation node with a pass-through confidence check, not a loader. The word "Pre" in the category (ComfyForEach/PreLoad) means "run this before the rest of the pipeline to confirm your foundation is in place," and that's the whole job.
Where that earns its place: long, unattended batch runs. If a checkpoint file is corrupt or a path is wrong, ComfyUI usually fails somewhere in the middle of sampling - hours in, on worker three of ten, with an error that says nothing about which model was the problem. This node fails fast and labels the failure: it raises ValueError the moment it sees an empty model, so you learn about the bad checkpoint before the batch even starts. In a fleet of EC2 workers, that's the difference between a 2am red alert and a quiet morning.
How it works
It takes MODEL, CLIP, and VAE - wire these from your Load Checkpoint node's three outputs, and note the pack's source types the CLIP input with ComfyUI's own IO.CLIP constant. The check is just if MODEL is None: raise. If it passes, it returns the string CheckPoint Model loaded successfully. On exception it returns an [Error] ... string instead of raising, which is a deliberate design choice: the node reports failure as a value, so a workflow can carry on and show you the string at the end rather than aborting the whole graph. That's the actual mechanism, and it's the entire mechanism.
Worth being precise about: it checks MODEL only. CLIP and VAE are accepted and checked for being wired, but the emptiness guard is on the model object alone. If your CLIP is the thing that's broken, this node won't catch it.
Inputs and output
MODEL- fromLoad Checkpoint→ MODEL.CLIP- fromLoad Checkpoint→ CLIP.VAE- fromLoad Checkpoint→ VAE.
Output: a single STRING - the success or error message. It's informational; the node deliberately does not re-emit the model, so your actual sampling chain is untouched.
Install
Pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/pupba/Comfy_ForEach
cd Comfy_ForEach
pip install -r requirements.txt
Or Manager → ComfyForEach → install, restart. Dependencies: pillow, boto3, opencv-python-headless, numpy, torch. No model downloads - nothing extra to fetch beyond the checkpoint you'd load anyway.
Where people get burned
- Expecting it to load the model. It doesn't. If you drag this in alone thinking it replaces
Load Checkpoint, you'll stare at a red wire and wonder what's wrong. - CLIP/VAE aren't validated. It only guards MODEL. A broken VAE slips straight past.
- The string output is easy to ignore. On a GUI run you can wire it to a text viewer and see "loaded successfully" - nice confirmation. Headless, you'd want to log it. Either way, remember the point of the node is the error, not the success message.
Verdict: this is a small insurance policy for unattended batch jobs, not a feature node. If you run long automated pipelines - especially on AWS, which is this pack's home turf - a fast "checkpoint didn't load" beats a mysterious mid-batch failure every time. If you're doing interactive one-offs, you can skip it without missing much.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| MODEL | MODEL | — | |
| CLIP | CLIP | — | |
| VAE | VAE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |