Nodes/Comfyui-calbenodes/Charactermanager
ComfyUI Node

Charactermanager

Character Manager does the LoRA-swapping grunt work

By caleboleary·Created 2 years ago·Updated 2 years ago· 1
Charactermanager
  • model
  • clip
  • model
  • clip
  • lora_activation
  • description
  • negative_prompt
  • preferred_face
  • random_face
  • face_grid
  • character_name
  • seed
character
lora_strength1.00
seed0
new_name
lora_path
face_images_dir
preferred_face_image
activation_text
description
negative_prompt

Character Manager is a library for your recurring characters. Instead of rebuilding the same chain every time - swap the LoRA loader, retype the activation trigger, dig up the face reference - you pick a name from a dropdown and the node applies that character's whole config: its LoRA, its activation text, its negative prompt, and its face images. It's a workflow-organizer, not a magic consistency fix.

That distinction matters. Character consistency across generations is still the community's most-cited unsolved problem, and the reliable path when you'll reuse a character is a dedicated LoRA (the gold standard every guide points to). What this node does is make that LoRA easy to actually use: once a character's LoRA exists, it lives here alongside everything else that character needs, and switching between characters is one click instead of five.

How it works

Characters live in a characters.json file saved at your ComfyUI base directory. Pick "New Character" from the dropdown, fill in the optional fields - new_name, lora_path, face_images_dir, activation_text, description, negative_prompt - and the node writes the character to that file. Next time, the name appears in the dropdown and selecting it loads the saved config.

Mechanically, it's thin but solid: it applies the character's LoRA through the same code path as ComfyUI's built-in LoraLoader (both model and CLIP strengths = lora_strength), then reads your face images from the directory - a preferred one, a random pick, and a contact-sheet grid, all resized for reference use.

The inputs and outputs that matter

The required trio is model, clip, and character (the dropdown of saved names, plus "Random" and "New Character"). lora_strength defaults to 1.0 and goes from −10 to 10 - negative values are the LoraLoader way of pushing away from a character. seed feeds the random face picker so it's reproducible.

The outputs are where it earns its keep:

  • model and clip - your pipeline, now with the character's LoRA applied. Wire into your sampler.
  • lora_activation, description, negative_prompt - STRING outputs carrying the character's prompt data. Feed them into whatever text node you use for prompt assembly (a text-concat node, rgthree-style text, etc.), since vanilla CLIPTextEncode won't take a wire.
  • preferred_face, random_face, face_grid - IMAGE tensors of the character's face(s), for a preview or as a reference input for an IPAdapter-style setup.
  • character_name and seed - handy for logging or workflow bookkeeping.

The sharp edges

The dropdown list is built when the node is created. Create a new character and the saved JSON updates immediately - but the dropdown won't show the new name until you recreate the node or reload ComfyUI. Cheap to hit, annoying the first time.

"Random" picks from your saved characters - if characters.json doesn't exist or is empty, random.choice on an empty list raises an error. Save at least one character before you gamble.

Everything is stored globally in that one characters.json at the ComfyUI root, not per-workflow. And the lora_path is used as-is, so rename or move the LoRA file and the character silently breaks. Keep paths stable.

One genuinely nice thing: if a character has no face directory, random_face and face_grid return black tensors instead of erroring, so the workflow keeps running - you just get no useful reference.

Installing it

Same install as the whole pack - it ships in Comfyui-calbenodes, and needs nothing ComfyUI doesn't already have:

cd ComfyUI/custom_nodes
git clone https://github.com/caleboleary/Comfyui-calbenodes

restart, and the nodes appear under the calbenodes menu. ComfyUI Manager users can just search "Comfyui-calbenodes" and hit install.

The honest take

This is a personal-use convenience node, and it shows - zero community footprint, a few rough edges, and a dropdown that needs a refresh to catch up. But the core idea is sound, and if you generate a small cast of characters regularly, it genuinely collapses the busywork of swapping LoRAs and prompts by hand. Treat characters.json as your source of truth, back it up with your workflows, and it's a tidy little rolodex.

Categorycalbenodes

Inputs (12)

NameTypeDefaultDescription
modelMODEL
clipCLIP
characterCOMBO2 options: Random, New Character
lora_strengthFLOAT1.00-10–10
seedINT00–18446744073709550000
new_nameoptSTRING
lora_pathoptSTRING
face_images_diroptSTRING
preferred_face_imageoptSTRING
activation_textoptSTRING
descriptionoptSTRING
negative_promptoptSTRING

Outputs (10)

NameTypeDescription
modelMODEL
clipCLIP
lora_activationSTRING
descriptionSTRING
negative_promptSTRING
preferred_faceIMAGE
random_faceIMAGE
face_gridIMAGE
character_nameSTRING
seedINT