Nodes/External LoRA Loader/External LoRA Loader
ComfyUI Node

External LoRA Loader

Your LoRA library doesn't live in models/lora — load it from anywhere

By comfyuiattic-989·Created 5 months ago·Updated 5 months ago· 6
External LoRA Loader
  • model
  • clip
  • MODEL
  • CLIP
drive
sub_path
lora_namenone
model_strength1.00
clip_strength1.00
max_cache_mb2048

Every ComfyUI user eventually hits the wall the built-in Load LoRA node builds for you: your LoRAs have to sit inside ComfyUI/models/lora/. If your collection lives on a NAS, an external hard drive, or a second internal disk, your options used to be symlinks, copy-paste, or editing config files and restarting the server every time you switch locations. External LoRA Loader is the drop-in replacement that fixes that one thing - and does it well.

It slots into your graph exactly where Load LoRA goes: checkpoint loader in, patched MODEL and CLIP out, same model_strength / clip_strength sliders. The difference is the Browse… button. Instead of a dropdown of whatever happens to be in the lora folder, you get a tree-style file browser over every mounted drive. Expand folders, filter by extension (safetensors, all LoRA types, PyTorch, or everything), single-click a .safetensors to pop a metadata panel showing base model, rank/alpha, training stats, and trigger tags - read without loading the model into memory - then hit Select. The path you pick is stored in hidden drive and sub_path fields behind the scenes, so the workflow JSON stays portable and the node keeps working on a different machine.

Mechanically, the node is thin, which is a compliment. From the source: it joins drive + sub_path + lora_name into a full path, and if lora_name is "none" it passes model and clip straight through untouched. Otherwise it hands the tensors to the exact same comfy.sd.load_lora_for_models call the native node uses - so the patching behavior is identical, it's just sourced from wherever the file actually lives. What the pack adds on top is a thread-safe LRU cache in system RAM (2 GB by default) so a LoRA only touches disk once per ComfyUI session, and drive auto-detection via psutil at startup: Windows drives, macOS /Volumes/, Linux /mnt/ and /media/.

The inputs that matter: model and clip from Load Checkpoint, model_strength and clip_strength (default 1.0, range −10 to 10, same as native - style LoRAs often like 0.5–0.8, and anime LoRAs frequently need a clip-strength or CLIP-skip nudge), and max_cache_mb. The lora_name, drive, and sub_path fields are handled by the browser and mostly stay hidden. Outputs are MODEL and CLIP, wired to your sampler and CLIP Text Encode like any other loader.

The cache is a real trade-off, not a free win. If you're cycling through a handful of LoRAs, it's free speed - the first run reads disk, every run after skips it. If you're queueing huge batches of many LoRAs on a RAM-light machine, drop max_cache_mb; eviction keeps things bounded, and any single LoRA bigger than the cap still loads and runs, it just isn't cached (you'll get a console warning). The Clear Cache button flushes everything and reports how much it freed.

Install is trivial. ComfyUI Manager → Install Custom Nodes → search External LoRA Loader, or:

cd ComfyUI/custom_nodes
git clone https://github.com/comfyuiattic-989/ComfyUI-External-Lora-Loader
pip install -r ComfyUI-External-Lora-Loader/requirements.txt

psutil is the only dependency, and Manager installs it for you. Restart ComfyUI and the node appears under Add Node → loaders → External LoRA Loader.

Where people get burned:

  • Node doesn't appear - psutil isn't in your environment. pip install psutil and check the startup console for import errors.
  • A drive shows as greyed out - it's detected but not listable; make sure it's mounted and accessible to whatever user runs ComfyUI.
  • Drive mounted after you started ComfyUI won't show until you restart - detection runs exactly once at startup.
  • LoRA loads but nothing changes - raise the strengths, but first remember LoRAs are architecture-bound: an SDXL LoRA silently does nothing on Flux, and this node doesn't warn you any more than the native one does.

If all your LoRAs already live in the default folder, honestly skip this - one less custom node is one less thing to break, and the ecosystem's dependency overhead is real. But if you keep a NAS library, an external archive drive, or you share workflows across machines, this is the loader to reach for. The author (ComfyUI-Attic, behind the Video Frame Extractor) launched it in r/comfyui to a warm reception, and the comments nail the actual use case: "there's lots of times I have loras on my network archive… but don't wanna copy them over to the main folder." That's the whole pitch, and it delivers.

Categoryloaders

Inputs (8)

NameTypeDefaultDescription
modelMODEL
clipCLIP
driveCOMBO1 options: /
sub_pathSTRING
lora_nameSTRINGnone
model_strengthFLOAT1.00-10–10
clip_strengthFLOAT1.00-10–10
max_cache_mbINT2048128–32768

Outputs (2)

NameTypeDescription
MODELMODEL
CLIPCLIP