Character Vault (Creepybits)
The Write-Side of Your Character Database
- text
Character Vault is the save button for your character database. It takes a character description, stores it under a name in a local JSON file, and hands the text back to you. It's the write-side companion to Character Select (also in this pack), which reads that same database and lets you pull a character out of a dropdown with per-scene outfit swaps. By themselves neither node is much; together they're a tidy "persistent character library" for prompt-based workflows.
What you actually set
Three inputs, and only two really matter:
text- the character description you want to save. It comes pre-filled with a sensible template: ethnicity, face structure, face shape, hair, eyes, mouth, body type. Fill it in or replace it wholesale.character_name- the key you're saving under. This is what shows up in Character Select's dropdown.save_to_db- the safety switch. Set this totruefor the node to write to disk. Leave it false and the node is just a passthrough.
Output is text - the same description you put in, so you can chain this node into a prompt pipeline even while it archives.
How it works
When save_to_db is true, the node loads assets/scripts/characters.json from inside the pack folder, adds your entry, and writes it back. The file is created on first save, and crucially the data lives on disk - not in node memory - so it survives ComfyUI restarts, which is the whole point of a database node.
Two rules baked into the code are worth knowing:
- Names must be unique. If a character with your
character_namealready exists, the node refuses to overwrite it and prints an error to the console. You can't update an entry in place - save under a new name (or edit the JSON by hand). - Empty names are rejected. It checks before writing, so no blank keys cluttering the file.
Gotchas
Because characters.json doesn't ship with the pack, your first save creates it - but if you've already opened a workflow with Character Select, its dropdown was built at load time from a file that didn't exist. If a newly saved character doesn't show up in the dropdown, restart ComfyUI so the node re-scans the database on init.
Also keep in mind the honest limit: this stores descriptions. Feeding the same prose to the sampler every time keeps the prompt identical, but a stable prompt is not a stable face - true identity consistency across generations still needs a character LoRA or an editing model. Character Vault is the "don't retype the description" layer, and it's good at that.
Installing it
It ships with the whole Creepybits pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Creepybits/ComfyUI-Creepy_nodes.git
Restart ComfyUI, or install via ComfyUI Manager by searching "Creepy". The pack's requirements install on first launch; no model downloads are involved. If saves aren't appearing, confirm the write path printed in the console (.../assets/scripts/characters.json) and that the pack folder isn't read-only.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | **Ethnicity:** **Face structure:** **Face shape:** **Hair:** **Eyes:** **Mouth:** **Body type:** | — |
| character_name | STRING | — | |
| save_to_db | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |