Blog / Krea 2

October 4, 2026 · 4 min read

One LoRA Stack Per Image, Picked by a Router, Not You

Batch jobs usually get one global LoRA stack applied to every image. A caption-reading router can instead pick a different stack per image, log its reasoning, and let you override only the character.

Most bulk LoRA setups work the same way: you pick one checkpoint, one turbo LoRA, one or two content LoRAs, and run the whole folder through it. That's fine until the folder isn't uniform. A batch that mixes close-up portraits, full-body shots, and clothing swaps doesn't actually want the same stack for every image. It wants a different stack for each one, and nobody wants to sort the folder by hand first.

The fix we landed on is a router that reads the caption on each image and decides the stack itself.

Caption in, stack out

Every image in the folder gets captioned before anything else happens. That caption is the only input the router needs. From it, the router maps to:

The default path, when nothing in the caption pushes it elsewhere, is Krea 2 RAW with the turbo LoRA at 0.6. That's the baseline most images land on. Captions that mention specific body types, outfits, or content categories shift the router toward a different checkpoint or swap in the matching LoRA for that trait.

The important part isn't the mapping logic itself, it's that the decision happens per image, not per batch. Two pictures sitting next to each other in the same folder can come out of two completely different stacks, because their captions described different things.

Strength isn't a guess anymore

The second piece is just as practical: every LoRA fires at the strength its author documented, not at whatever number you typed into a slider because it looked right last time. If you've run large batches before, you know the usual failure mode — one global strength value gets applied across LoRAs that were trained and tested at completely different weights, and some of them end up over- or under-cooked in ways you don't notice until you're reviewing a hundred images later.

Pulling each LoRA's documented strength into the router removes that guesswork. The router doesn't average, doesn't split the difference, doesn't apply "strong enough for most things." It applies the number the LoRA was built for, every time it's selected.

A paper trail per image

None of this is useful if you can't check it after the fact. So every image gets a sidecar .txt file next to it, listing exactly what was picked — checkpoint, content LoRA, body-shape LoRA, clothing LoRA, and the strengths used — and a short note on why, meaning which part of the caption triggered each choice.

There's also a report panel inside ComfyUI that shows the same information while the batch is still running, so you're not waiting until the end to find out the router went somewhere unexpected. If image 340 in a folder of 500 looks off, you open its sidecar file and see the actual decision, not a guess at what might have happened.

This matters more than it sounds like it should. A stack you can't audit is a stack you can't trust at scale, and "trust me, it's fine" doesn't hold up once you're running thousands of images a week.

The character override still sits on top

Routing the content, body, and clothing LoRAs automatically doesn't mean the character is up for grabs too. A manual character LoRA override is always applied after the router finishes its picks, on every image, regardless of what the caption said. The router handles the variable parts of a batch — scene, body shape, outfit — and leaves the one thing that has to stay constant across the whole folder untouched.

That split is deliberate. Caption-driven variation is exactly what you want for backgrounds, poses, and wardrobe. It's the last thing you want for the character's actual identity, which is why that layer stays manual and gets applied on top of whatever the router decided.

Where this actually helps

If your batches are already uniform — same character, same outfit, same checkpoint, just different poses — a global stack is simpler and there's no reason to add routing on top. The router earns its keep when a folder genuinely mixes content types and you'd otherwise be splitting it into sub-batches by hand, running each one separately, and merging the outputs back together afterward.

For a working version of this setup across the four Krea 2 checkpoints, see the dynamic LoRA bulk character workflow. The routing itself is built from standard custom nodes, so if you're assembling something similar from scratch, that's the place to start pulling pieces.

Takeaway: if a batch folder mixes content types, stop forcing one stack on all of it — let the caption pick the stack per image, keep the character override manual, and read the sidecar files before you trust the output.

Every face in our images is generated. No real people.

Keep reading.