Chomfy Forensic Saver
The save button that also writes the receipt
- images
- model_opt
- vae_opt
- latent_opt
You know the moment. Three weeks later you're staring at a great image and have absolutely no idea which checkpoint, which LoRAs, and which GPU made it. Chomfy Forensic Saver is the output node that makes that moment impossible: it saves the PNG like a normal saver, and next to it writes a sidecar JSON that records exactly how the image was produced.
It's for archival and reproducibility more than daily use. When you're batch-running hundreds of images and want to prove (to yourself or whoever you're sharing with) what each one came from, the plain SaveImage just isn't enough - it embeds the prompt in PNG metadata, but not a readable rundown of your hardware, model files, and latent geometry. This node writes both.
How it works
The node saves into ComfyUI-ChomfyNodes/outputs/ (it creates the folder for you). Two artifacts per image, same filename stem:
- The PNG itself, with the full prompt and workflow metadata embedded, so dragging it back into ComfyUI restores the node graph. That's the drag-and-drop trick you know from normal ComfyUI saves.
- A
.jsonsidecar with three sections: system info (OS, GPU name, Python and torch versions, timestamp), a workflow analysis (total node count, plus checkpoints and LoRAs it found by scanning the graph), and the full prompt in ComfyUI's API format.
The forensic detail comes from walking the workflow. Any node whose class name contains CheckpointLoader gets logged as a checkpoint; any LoraLoader gets logged as a LoRA. Pass a latent into latent_opt and it also records the latent's shape, which is handy when you're debugging dimension mismatches across models.
The inputs that matter
Required: images (the IMAGE you want saved) and filename_prefix (default Chomfy_Log) - prefix gets a timestamp appended, so you'll never overwrite.
Optional: model_opt, vae_opt, and latent_opt. Honest note on these: in the shipped code the model and VAE plugs are declared but the meat of the log comes from the graph scan and the latent shape. So do wire in latent_opt if you want dimensions recorded; the other two are mostly future-proofing. It's an output node - no outputs, it just saves.
Installing it
Same pack as everything else here. ComfyUI Manager → search ComfyUI-ChomfyNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/chchchadzilla/ComfyUI-ChomfyNodes.git
Restart, and it's under the ChomfyNodes menu. No extra dependencies.
Where people get burned
The number one panic is "it didn't save anything." It did - just not where you looked. This node writes to inside the pack folder (ComfyUI-ChomfyNodes/outputs/), not ComfyUI's usual output/ directory. Check there first.
Second gotcha, straight from the source: checkpoint detection keys on the literal string "CheckpointLoader". If you load your model with UNETLoader - which is how you load GGUF and many Flux setups - it won't show up as a checkpoint in the JSON. The log is only as complete as the node's naming heuristics. LoRAs also need a node literally named LoraLoader; newer LoRA loader packs won't be caught. Worth knowing before you trust the JSON as gospel for provenance.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | Chomfy_Log | — |
| model_optopt | MODEL | — | |
| vae_optopt | VAE | — | |
| latent_optopt | LATENT | — |
Outputs (0)
No outputs