VRGDG RefMod Metadata
Read what's inside a RefMod without loading a single tensor
- mods
- metadata
- trigger_text
RefMod files are .safetensors, which means the interesting part - a JSON header describing what's in the file - sits at the front, before any weights. You don't have to load gigabytes to find out what a mod is. You just have to read the first few kilobytes.
That's all this node does, and it's quietly one of the more useful things in the pack. Point it at a saved RefMod and it hands you back a report and a prompt-ready trigger string, having read only the file header.
The dropdown for mod_name is built by walking the RefMod folders the pack knows about: any registered refmods folder path, then ComfyUI/models/refmods, then the pack's own ComfyUI-MiniMaxH3Mod/mods directory. Files are listed by relative path minus the extension, so you get something like characters/aria_v3 rather than a bare filename. It skips graph_presets, .git and __pycache__ on the way down.
If you'd rather inspect a mod that's already wired into the graph, connect it to the optional mods input and the dropdown is ignored entirely. That's the right move when you're mid-render and want to know what the thing currently plugged into your encoder actually is.
The two outputs
metadata is a plain-text report: name, file path, kind, concept type, description, tags, mode, source and its shape, pool, refinement step count, and the tensor shapes pulled straight out of the header. If the mod carries a saved config, that gets printed too. It's meant for reading, not parsing - hence the aligned key: value layout.
trigger_text is the machine-friendly one. It's built as concept_type: description followed by the tags, semicolon-joined - so identity: a tall woman with cropped red hair and a scar through her left eyebrow; fullbody, turnaround. Drop it into a prompt and you've described the reference to the text encoder as well as handing over the weights. The node is flagged as an output node, so this text shows up in the UI when you queue, without needing a preview wired to it.
Worth knowing before you rely on it: RefMods don't have trigger words the way LoRAs do. The node's own source says so in as many words - when a file has no description and no tags it tells you to put the character's description in your prompt instead. A LoRA needs its activation token; a RefMod needs you to actually describe what you're referring to, and trigger_text is just a convenience for that, assembled from whatever the author stored.
If the file has no RefMod metadata at all, the node raises rather than quietly returning an empty report. That includes ordinary .safetensors LoRAs that happen to live in a refmods folder, and any RefMod saved by an older tool that didn't write the refmod_meta (or audio_refmod_meta, for audio mods) header key.
Install
ComfyUI Manager → search vrgamedev, or:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
Restart and hard-refresh the browser. No models, no pip packages - it's struct and json over a file handle. You can skip the pack's requirements.txt unless you want its Builder, audio tooling or training helpers; those are where demucs, stable-ts, torchcodec and llama-cpp-python come from.
Why bother
Three situations, all of which happen.
You inherited a mod library. Someone shared a folder of RefMods, or you made them months apart, and the filenames stopped meaning anything. This node turns "which one was the redhead" into a two-second answer instead of loading each into a graph and rendering a test frame.
You're building a workflow that branches. Descriptions are stored, so you can read a mod's description and decide whether the character already has what you need - before committing VRAM to a render.
Something's off and you suspect the mod. Reading the stored concept type is often the answer. A mod built with clothing describes an outfit and was trained on the garments; using it as an identity reference and wondering why the face won't settle is a mistake the header would have caught immediately.
It's also a genuinely nice debugging pattern for the pack as a whole: header reading is cheap and safe, so there's no reason to guess. If you're the sort of person who greps their own ComfyUI log, you'll like this node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| mod_name | COMBO | A saved RefMod to read from disk. Ignored when the mods input is connected. | |
| modsopt | H3_REF_MODS | Optional: the bundle from Create H3 RefMod or Load H3 RefMods. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| metadata | STRING | — |
| trigger_text | STRING | — |