Nodes/Mutantwork Power Pack/⚗️ Mutant Signature
ComfyUI Node

⚗️ Mutant Signature

The friendliest provenance watermark in ComfyUI — a PNG text chunk, not magic

By brerereton-beep·Created 3 months ago·Updated 3 months ago· 1
⚗️ Mutant Signature
  • image
  • image
  • signature_log
custom_tagOptimized by Prompt Power | mutantwork.com
filename_prefixmutant_signed
output_dir

Mutant Signature bakes an invisible marker into your PNG before you save it. Run an image through it and the file gains a metadata chunk - key Mutantwork, value Optimized by Prompt Power | mutantwork.com - that any tool that lists PNG text can read, and that mutantwork.com/verify will recognize. The pixels are untouched; you'd never know it was there by looking. It's provenance as a sticky note rather than a vault.

That's the honest framing, so let's keep it: this is not tamper-proof verification. Anyone can write a Mutantwork chunk into a PNG with a few lines of Python, so the signature proves your image went through this node only in the sense that the chunk is present - and the real point of the chunk is traceability and attribution (and, plainly, a little marketing for the suite). When the pack's author wants cryptographic provenance, that's what the fourth node, Mutant Content Credentials (C2PA), is for. This one is the lightweight, human-readable cousin.

How it works

It converts the incoming image tensor to PIL, builds a PngImagePlugin.PngInfo, and adds three text chunks before saving:

  • Mutantwork - the tag, default Optimized by Prompt Power | mutantwork.com (or your own via custom_tag)
  • Mutantwork-Timestamp - a UTC timestamp
  • Mutantwork-Manifest - a small JSON blob with the signature, node version, suite name and site

It writes a copy to your output folder (or the folder you specify) and returns the image tensor unchanged so you can keep your normal Save Image downstream. Since it writes files itself it's flagged as an output node, which means it always runs and ComfyUI's cache treats it as a termination point.

Inputs and outputs

  • image (required) - what you're signing.
  • custom_tag - override the metadata value. If you blank it out, it falls back to the default.
  • filename_prefix - prefix for the signed file (mutant_signed by default), with a timestamp suffix so you never overwrite.
  • output_dir - absolute path for where the signed copy lands; blank uses ComfyUI's output folder.

Outputs are image (pass-through, unchanged) and signature_log (STRING - the path of the saved file, the key/value, and a note to verify at mutantwork.com/verify).

Install

Standard for the pack - ComfyUI Manager, search ComfyUI-Mutantwork, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/brerereton-beep/ComfyUI-Mutantwork.git
pip install -r ComfyUI-Mutantwork/requirements.txt

Runtime needs are just numpy and Pillow, both already in any ComfyUI install, so this node is the zero-friction one in the pack.

Where people get burned

The signature lives in the PNG's text chunks, and the KB's metadata doc is blunt about what happens to those: any host that re-encodes - Reddit, most Discord previews, CDNs - strips them, and so does converting to JPEG or taking a screenshot. So the signed copy in your output folder is the trustworthy one; a signature you see in a re-served post is one that survived, not one that was verified. And because it's a copy: if you also run your normal Save Image on the pass-through output, you'll end up with two PNGs (one signed, one plain) per generation. Wire this node to be your save, or remember to retire the old one.

CategoryMutantwork

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
custom_tagoptSTRINGOptimized by Prompt Power | mutantwork.com
filename_prefixoptSTRINGmutant_signed
output_diroptSTRING

Outputs (2)

NameTypeDescription
imageIMAGE
signature_logSTRING