π Civitai Visual Diffusion Model Loader by LX
The Flux-style loader that shows you the model before you load it
- MODEL
Some ComfyUI workflows don't load one big checkpoint file - they load the diffusion model (the actual UNet / transformer that does the denoising) separately from the text encoder and the VAE. That split is the Flux workflow's signature move, and it means you're staring at a Load Diffusion Model node with yet another cryptic dropdown. This node is that loader, but with the visual browser treatment: a grid of preview thumbnails, search, and Civitai metadata instead of a wall of filenames.
What it actually is
This is the middle child of the VisualBrowserNodes-by-LX pack - the LoRA and checkpoint loaders get the same treatment, this one handles diffusion models specifically. The backend is as plain as it gets: it calls comfy.sd.load_unet on whatever you pick, reading from your unet folder (not checkpoints). That's the whole model side. The visual layer is identical to its siblings: the pack's frontend injects an "Open Visual Diffusion Model Loader" button onto the node, which pops the browser overlay showing your local files as preview images. Pick one, click Load Data from Civitai, and it pulls the model's preview image, base model info, and trigger words via Civitai's public by-hash API endpoint.
The name "Civitai" makes people brace for an API key. There isn't one - no token, no account, no credential anywhere in the pack. It hashes the file (SHA-256, cached with a mtime check so swapping the file triggers a re-hash), asks Civitai's public model-versions lookup, and caches the result in diffusion_cache.json inside the pack folder. If a file isn't on Civitai, the lookup just comes back empty and you keep your local preview.
The inputs and outputs that matter
One input, one output. This is a loader that knows exactly what it is:
- selected_model - a string holding the diffusion file's name, set by clicking a card in the browser rather than typing. Empty selection raises
"No Diffusion Model selected."
Output:
- MODEL - just the model. That's it. No CLIP, no VAE.
That single MODEL output is the whole point and the whole gotcha. In a split workflow you're responsible for supplying the text encoder and VAE from elsewhere - typically a separate CLIP loader (often reading t5 / clip_l files for Flux) and a VAE loader. The node gives you the denoiser; it does not give you the rest of the sandwich.
Installing it
Same story as the rest of the pack - no Python dependencies (pyproject.toml declares dependencies = []), so installation is painless:
# Method 1: ComfyUI Manager
# Open Manager β Custom Nodes Manager β search "Civitai Visual Browser & Loader by LX" β Install β restart
# Method 2: manual
cd ComfyUI/custom_nodes
git clone https://github.com/LX-ComfyUI/VisualBrowserNodes-by-LX
Restart ComfyUI, then find it on the canvas as "π Civitai Visual Diffusion Model Loader by LX".
Where people get burned
- It reads
unet, notcheckpoints. If you've dumped your Flux UNET intomodels/checkpoints, the browser will be empty. Put diffusion files inmodels/unet(or point it there viaextra_model_paths.yaml). - One output only. Beginners wire this up, hit queue, and wonder why there's no CLIP. If you're using this, you already need the split-workflow CLIP and VAE wired in separately.
- First metadata load is manual, like the rest of the pack: click Load Data from Civitai once per model, and it caches. And again, renamed or private files won't match Civitai's hash lookup.
The honest take: if you only load full checkpoints, this node is not for you - you want the pack's checkpoint loader instead. If you live in Flux-style split workflows, this is the rare visual loader built for exactly your setup, and given how few alternatives exist for browsing unet folders visually, it earns its place.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| selected_model | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |