Nodes/ComfyUI-Anima-LLLite/Apply Anima ControlNet-LLLite
ComfyUI Node

Apply Anima ControlNet-LLLite

The closest thing Anima has to a ControlNet

By kohya-ss·Created 4 months ago·Updated 9 days ago· 176
Apply Anima ControlNet-LLLite
  • model
  • image
  • mask
  • MODEL
lllite_name
strength1.00
start_percent0.000
end_percent1.000
preserve_wrappertrue

Here's the context you actually need before wiring this up: Anima, the 2B anime DiT from Circlestone Labs that's been eating Illustrious's lunch on prompt comprehension, shipped with one glaring hole - no ControlNet. No pose, no depth, no canny. If your workflow leans on structure conditioning, that gap is the single biggest reason people stayed on SDXL. AnimaLLLiteApply is the patch for that hole. It takes a ControlNet-LLLite weight file, straps it onto your Anima model, and gives you back a patched model that follows a control image.

Manage your expectations going in, though, because the KB and the community are unanimous here. kohya-ss shipped these as sample weights and says so plainly - the repo's own warning is that the feature is experimental and the hyperparameters are unknown. Users report it barely moving the image at full strength on the 1.0 base, and the pose model in particular is deliberately weak. So this is a real tool for a real gap, not a drop-in replacement for a mature SDXL ControlNet. Reach for it to nudge composition, lineart, or grayscale conditioning; don't expect it to hold a pose like Illustrious does.

How it works

LLLite is kohya's lightweight, LoRA-shaped take on ControlNet. Instead of duplicating a whole encoder the way classic ControlNet does, it injects a small low-rank correction directly into the DiT's attention and MLP projections. This node loads weights trained with kohya's sd-scripts and applies them to Anima at inference: it embeds your control image into a per-token feature map, then on each sampling step it monkey-patches the target Linear layers with the LLLite forward, runs the model, and restores the originals. The patch never leaks across model clones, which is why you can chain several of these safely.

The inputs that matter

You'll wire four things and mostly ignore the rest:

  • model - your Anima checkpoint. The output is a patched MODEL, so this node sits between your loader and your KSampler.
  • lllite_name - the weight file, picked from a dropdown. This reads from ComfyUI/models/controlnet/, so if the list is empty you haven't put any weights there yet.
  • image - the control image (lineart, scribble, depth map, whatever the weight expects). Any resolution; it gets auto-resized internally.
  • strength - the multiplier, default 1.0. Given how gentle these weights are, you'll often run it at or near max rather than dialing it down.

start_percent and end_percent bound the sampling window the control is active in - handy if you want structure early and freedom late. preserve_wrapper (default on) is the thing that lets you stack multiple LLLite nodes without the second one silently clobbering the first; leave it on unless you know you want to replace an upstream wrapper. And the optional mask input only applies to 4-channel inpainting weights - white is the fill region, black is keep.

Installing it

Nothing exotic. In ComfyUI Manager, search the pack title ComfyUI-Anima-LLLite and install, or clone it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/kohya-ss/ComfyUI-Anima-LLLite

Then restart ComfyUI. There are no heavy pip dependencies - it's a minimal reference implementation. The part people miss is the weights: download the LLLite .safetensors from kohya-ss/Anima-LLLite on Hugging Face and drop them in ComfyUI/models/controlnet/ (not models/loras/). Only two were retrained for Anima-Base v1.0 - a 4-channel inpainting model and a mixed lineart/scribble/grayscale model. The lineart, depth, pose, and scribble weights are Preview 3-era and work on v1.0 with reduced quality.

Where people get burned

The empty lllite_name dropdown is almost always the first snag - no weights in models/controlnet/ means nothing to select. Beyond that: a 4-channel inpaint weight with no mask connected raises a ValueError (it won't quietly guess), while feeding a mask to a 3-channel weight just logs a warning and ignores it. Old pre-v2 weight files are rejected on load - retrain against current sd-scripts. And the big one, straight from the community: if the effect feels near-inert even at full strength, that's expected, not a bug. Several people found that for reliable pose or depth on Anima you're better off training a control LoRA instead, or staying on Illustrious. What LLLite is genuinely good for on this model is the softer jobs - lineart and grayscale conditioning, plus the community-trained regional and tile-repair LLLites built on the same node.

Categoryloaders

Inputs (8)

NameTypeDefaultDescription
modelMODEL
lllite_nameCOMBO0 options:
imageIMAGE
strengthFLOAT1.00-10–10
start_percentFLOAT0.0000–1
end_percentFLOAT1.0000–1
preserve_wrapperBOOLEANtrue
maskoptMASK

Outputs (1)

NameTypeDescription
MODELMODEL