PixlStash Adapter (LoRA) Loader
The PixlStash Adapter Loader
- model
- clip
- pixlstash_set
- pixlstash_character
- model
- clip
- trigger_words
First, the honest preamble: this node is only useful if you run PixlStash, a self-hosted image manager for AI creators by the same author, Pikselkroken. It's not a standalone LoRA loader. If you don't have a PixlStash vault with a model shelf, this does nothing - use ComfyUI's built-in LoraLoader and move on. If you do, this is the LoRA loader you'll actually enjoy using, because it replaces the "scroll through 500 filenames in a dropdown" ritual with a thumbnail grid you can browse by looking at pictures.
What it is
The PixlStash Adapter (LoRA) Loader is a drop-in for ComfyUI's built-in LoraLoader. Same model and clip inputs, same strength_model / strength_clip weights, same model / clip outputs - you can chain several in a row exactly like you already do. The one difference is where the file comes from. Instead of a lora_name dropdown it has a Browse adapters… button that opens a grid of the adapters on your PixlStash shelf. And it doesn't just handle LoRA: LoKr, LoHa, OFT and DoRA files all work here too, which is why the shelf calls them "adapters."
The grid is the whole point. Each card shows the adapter's name, base model and a picture. Almost no adapter carries its own icon, so the node falls back to the thumbnail of the character or set the adapter is attached to - a LoRA of a person is a lot easier to spot by their face than by two letters. A multi-epoch training run shows up as one card (the file the shelf would actually load), not one card per file.
The inputs that matter
You will not type in the interesting one:
adapter_sha256- written by the Browse button when you pick an adapter. Leave it alone.adapter_kindandbase_model- narrow the Browse grid only. They don't change what loads, so flipping them won't disturb a selection you already made.clip- optional. For a model-only adapter, leave it unwired - but then leave theclipoutput unwired too, since it has nothing to carry.strength_model/strength_clip- the usual LoRA weights, default 1.0, can go negative.
Wire a Set Loader or Character Loader into the node and the grid shows only that set's or character's adapters. If you wire both, the character wins.
There's also a third output the built-in doesn't have: trigger_words, a STRING carrying whatever the shelf recorded for the adapter, comma-separated. Wire it straight into a text encode. Handy when you train your own and can never remember the trigger.
Where the file comes from
If ComfyUI runs on the same machine as PixlStash (or shares its filesystem), the adapter is used where it lies - after a deliberately strict check that the path, size and .safetensors extension all match the shelf record. Anything unverifiable gets fetched from the shelf once, verified against its SHA-256 before anything is written, and cached at <your first loras directory>/pixlstash/<sha256>.safetensors. Heads-up: fetched adapters also show up in ComfyUI's stock LoRA dropdown as 64-character hex names, and nothing ever evicts them.
Install and setup
cd ComfyUI/custom_nodes
git clone https://github.com/Pikselkroken/ComfyUI-PixlStash.git
Or search ComfyUI-PixlStash in ComfyUI Manager. Dependencies are just requests and Pillow, both already in any ComfyUI install - no model downloads. Restart, then set your vault URL and API token under Settings > PixlStash.
Where people get burned
- Fetching needs PixlStash v1.10+ (the release that introduced the model shelf). On an older server the node only works if both share a filesystem.
- Shelf routes need an owner token. The routes here are
OWNER_ONLY, stricter than the Picture Loader's. A resource-scoped share token that works elsewhere gets a 403 here - the node says so in as many words when you queue it. Also note fetching islocal_owner_only: an owner token from loopback, your LAN or Tailscale works, but not ComfyUI reaching PixlStash across the open internet. - Multi-user ComfyUI isn't supported - run a separate single-user instance per PixlStash user.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The diffusion model the adapter is applied to. | |
| adapter_kind | COMBO | — Any — | Narrows the Browse grid to one adapter algorithm. Affects the grid only, not what is loaded. |
| base_model | COMBO | Narrows the Browse grid to adapters trained against one base model. Populated live from your shelf; affects the grid only, not what is loaded. | |
| adapter_sha256 | STRING | SHA-256 of the chosen adapter. Written by the Browse button — you don't normally type here. | |
| clipopt | CLIP | Optional. Leave unwired for a model-only adapter — but then leave the CLIP output unwired too, as it has nothing to carry. | |
| strength_modelopt | FLOAT | 1.00-100–100 | How strongly to patch the model. Can be negative. |
| strength_clipopt | FLOAT | 1.00-100–100 | How strongly to patch CLIP. Ignored with no clip wired. Can be negative. |
| pixlstash_setopt | PIXLSTASH_SET | Wire from a Set Loader to list only that set's adapters. | |
| pixlstash_characteropt | PIXLSTASH_CHARACTER | Wire from a Character Loader to list only that character's adapters. Takes precedence over a set. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | The model with the adapter applied. Chain into another of these for a second adapter. |
| clip | CLIP | The CLIP with the adapter applied — carries nothing if you left the clip input unwired, so leave this unwired too in that case. |
| trigger_words | STRING | The trigger words recorded on the shelf, comma-separated. Wire into a text encode. Empty when the shelf has none for this adapter. |