String Checkpoint Loader
Feed a checkpoint by name instead of fighting a dropdown
- MODEL
- CLIP
- VAE
String Checkpoint Loader does exactly one thing differently from ComfyUI's built-in checkpoint loader: the filename comes from a text input instead of a dropdown. You type realisticVisionV60B1_v51VAE.safetensors (or wire that string from another node), and it loads the checkpoint the same way the dropdown loader does - MODEL, CLIP, and VAE come out, ready for your KSampler. That's it. No credentials involved, nothing exotic. It's not an S3 node at all; it just lives in this pack.
So why would you want a loader whose filename is a string? Because a string is a wire, and wires can come from anywhere. The built-in loader's dropdown is baked into the node - you can't feed it a value from a text file, a frontend text box, an API request, or a loop. Once you convert the filename to a string input, you can:
- drive it from a text node or a
PrimitiveString, so the model name is defined once and reused across a batch; - iterate over a list of filenames in a loop and render the same workflow with several checkpoints without touching the graph;
- set the filename from an incoming API payload when you're serving ComfyUI as a service.
If you never automate, batch, or serve your workflows, this node is pointless for you - the dropdown is faster to use by hand. The moment you do any of those things, a string-driven loader becomes the difference between "works" and "not possible."
How it works
Under the hood it calls the exact same loading path ComfyUI's own checkpoint loader uses. It takes your ckpt_filename, resolves it against your ComfyUI checkpoints folder via folder_paths, and hands it to comfy.sd.load_checkpoint_guess_config - the same function that powers the built-in loader. So you get proper MODEL, CLIP, and VAE outputs, and it handles architecture detection automatically. Nothing is downloaded; the file must already exist in your checkpoints directory.
Inputs and outputs
One input that matters: ckpt_filename - just the filename, e.g. model.safetensors or checkpoint.ckpt. Subfolders work if you include the path. Outputs are the standard triple: MODEL, CLIP, VAE, wired to your sampler, text encoder, and VAE decode respectively.
Install
Same as the whole pack - Manager (search s3_serverless_inline_storage_utils) or:
cd ComfyUI/custom_nodes
git clone https://github.com/udayjain26/s3_serverless_inline_storage_utils
Restart, find it under S3 Serverless Storage. No models to download; this node has zero extra dependencies beyond what ComfyUI already ships.
Troubleshooting
The two failure modes are both filename problems. FileNotFoundError means the filename doesn't match anything in your checkpoints folder - check for typos, missing .safetensors extension, or a subfolder path that's wrong. An empty string raises too, so if you're wiring the name from another node, make sure it actually produces a value before it hits this loader. Everything else is ComfyUI-standard: if the checkpoint loads in the built-in loader, it loads here. One small thing to know: because the filename is a widget, it's baked into your workflow - which is exactly why you convert it to an input the moment you want it to change between runs.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_filename | STRING | Filename of the checkpoint to load (e.g., 'model.safetensors') |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | The model used for denoising latents. |
| CLIP | CLIP | The CLIP model used for encoding text prompts. |
| VAE | VAE | The VAE model used for encoding and decoding images to and from latent space. |