Nodes/⚗ AlchemicaSampler/⚗ Alchemica LoRA Stack (6 slots + pass-through)
ComfyUI Node

⚗ Alchemica LoRA Stack (6 slots + pass-through)

The tidy-wiring LoRA stack

By Nessuno76·Created about a month ago·Updated 21 days ago· 4
⚗ Alchemica LoRA Stack (6 slots + pass-through)
  • model
  • clip
  • pass_1
  • pass_2
  • pass_3
  • pass_4
  • pass_5
  • pass_6
  • pass_7
  • pass_8
  • model
  • clip
  • pass_1
  • pass_2
  • pass_3
  • pass_4
  • pass_5
  • pass_6
  • pass_7
  • pass_8
◄lora_1▾►
◄strength_11.00►
◄lora_2▾►
◄strength_21.00►
◄lora_3▾►
◄strength_31.00►
◄lora_4▾►
◄strength_41.00►
◄lora_5▾►
◄strength_51.00►
◄lora_6▾►
◄strength_61.00►
◄strength_clip1.00►

Functionally this is six LoRA loaders chained with a list of what's active. Where it stops being boring is the pass-through sockets, which are the answer to a specific and very real annoyance: on a Krea 2 graph the VAE has to reach the sampler, and if your LoRA stack sits between the loader and everything else, that VAE has to be re-wired from the loader to the far side of the graph, past the stack.

Pass-throughs let it ride along. Plug the VAE into pass_1 and it comes out of pass_1 on the other side unchanged.

Inputs

  • model - from your loader (or a model patch, if you're using the NAG node).
  • lora_1 … lora_6 - six slots, each an enum of everything in models/loras. (none) means the slot is off.
  • strength_1 … strength_6 - per-slot model weight, -4 to 4. 0 = that slot does nothing, negative = the opposite effect.
  • clip (optional) - connect your text encoder and the LoRAs also act on the text side. Leave it disconnected if you don't want the prompt encoder touched.
  • strength_clip (optional) - one multiplier for the text part, so you don't have to guess a per-LoRA clip weight for all six slots.
  • pass_1 … pass_8 - type-agnostic in, same thing out. The interface shows the pairs in use plus one free one, and a new pair appears when you connect the previous one.

Outputs: model, clip, pass_1 … pass_8.

The bit that changed in 1.1

Older builds had a summary output carrying the list of what loaded. It's gone from the new node - the list of active LoRAs, one per line, with missing files flagged as NOT FOUND, is now shown inside the node after a run. Better, honestly: nobody was wiring a text summary anywhere.

The 1.0 node keeps its riepilogo output for old workflows. If you're on a workflow that was saved against the old node and the wires look scrambled, that's the fix-up the pack does on load; nothing to do by hand.

Wire order

Load Krea 2 ──model──► LoRA Stack ──model──► [NAG patch] ──► Alchemica KSampler
             ──vae───► pass_1 ──────────────pass_1──────────► (sampler vae socket)

Two things worth knowing about the order. The LoRA stack comes before the attention-guidance patch, so the guidance applies on top of the LoRAs. And the sampler's vae socket is optional - filling it just means the sampler decodes and shows the finished image itself, which is one less node.

If you have a two-stage workflow with a refiner_model, put a second LoRA stack on that model instead of sharing one. The pack's whole point about refiner models is that you can compose with one checkpoint and refine with another; a shared LoRA stack quietly defeats that.

Installing

# ComfyUI Manager: search "AlchemicaSampler"
cd ComfyUI/custom_nodes && git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler

ComfyUI 0.36+, no pip dependencies, restart the server. LoRA files go in models/loras as usual.

Where people get burned

A slot showing a name that isn't loaded. NOT FOUND in the in-node list means the file vanished (or the path changed) but the workflow still references it. Nothing loads and nothing errors loudly. Read the list.

Expecting strength_clip to work without wiring clip. It's the multiplier for the text side of the LoRAs; with no clip connected there is no text side to multiply.

A strong LoRA plus variety above ~0.3. The pack traced wet-skin/droplet artifacts to ancestral-noise amplitude on strong-LoRA combinations - clean at 0.15, reproducible above 0.3. It's not the LoRA, but the LoRA is what makes it show. Drop variety first.

Re-calibrating nothing after changing the stack. From 1.1 the calibration profile carries a signature of the LoRA stack, and (auto) prefers a profile made with the same LoRAs. If you've changed what's loaded, either re-calibrate or expect the report to tell you the profile was made without them.

Negative strength for "removing" a style. It does work, and it also does strange things to colour coherence. Small numbers, one slot at a time.

Category⚗ AlchemicaMente/loaders

Inputs (23)

NameTypeDefaultDescription
modelMODEL—
lora_1COMBO(nessuna) = slot off
strength_1FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
lora_2COMBO(nessuna) = slot off
strength_2FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
lora_3COMBO(nessuna) = slot off
strength_3FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
lora_4COMBO(nessuna) = slot off
strength_4FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
lora_5COMBO(nessuna) = slot off
strength_5FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
lora_6COMBO(nessuna) = slot off
strength_6FLOAT1.00-4–4Model weight. 0 = off, negative = opposite effect
clipoptCLIPOptional: connect it and the LoRAs also act on the text encoder
strength_clipoptFLOAT1.00-4–4Single multiplier for the text part
pass_1opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_2opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_3opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_4opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_5opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_6opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_7opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy
pass_8opt*Pass-through: whatever enters leaves unchanged (e.g. the VAE), only to keep the wires tidy

Outputs (10)

NameTypeDescription
modelMODEL—
clipCLIP—
pass_1*—
pass_2*—
pass_3*—
pass_4*—
pass_5*—
pass_6*—
pass_7*—
pass_8*—