MetaHub Input
Continue an existing image in your own ComfyUI workflow
- image
- mask
- metadata_json
- denoise
- intent
- source_path
- session_id
- width
- height
Most of this pack is about writing metadata onto images. MetaHub Input goes the other way: it's the bridge that pulls a prepared image back out of the Image MetaHub desktop app and into your own ComfyUI graph. If you use Image MetaHub to browse your library and decide "this one needs an inpaint pass," this node is how that image - plus the mask you painted on it - becomes a normal IMAGE and MASK tensor in your workflow. It's the "continue where I left off" path for img2img, inpaint, and outpaint work.
The mechanism is gloriously simple and worth knowing, because it tells you exactly how to debug it: the node reads three files off disk. Image MetaHub's "Send to ComfyUI Bridge" action writes them into a folder, and MetaHub Input just loads them.
~/ImageMetaHub/comfyui_bridge/latest/
image.png
mask.png
metadata.json
No API, no sockets, no server. It's a filesystem handoff, which is exactly the kind of thing that either works instantly or fails loudly.
The two inputs
bridge_dir- leave blank to use the default~/ImageMetaHub/comfyui_bridge, or paste the bridge folder shown in Image MetaHub's settings if you relocated your data directory.session_id-latest(default) grabs the newest payload; any other value looks inbridge_dir/sessions/<name>for a specific prepared payload.
That's it. There are no other inputs.
The outputs and what to do with them
imageandmask- the actual payload. Wireimageinto whatever your workflow expects (Load Image → img2img, for example) andmaskinto an inpainting setup.denoiseandintent- read from the metadata, e.g. whether this was an inpaint or outpaint session. Feeddenoisestraight into your KSampler if you trust the app's recommendation.metadata_json,source_path,session_id,width,height- context about where the image came from, handy for chaining into save/annotation nodes.
One behavior worth knowing: if Image MetaHub didn't send a mask, the node returns an all-black mask matching the image dimensions rather than erroring. That's a deliberate courtesy so a non-inpainting bridge payload doesn't break your graph - though it does mean you should check whether a mask actually exists before assuming you're doing real inpainting.
Install and gotchas
Same pack as the rest - ComfyUI Manager, search ImageMetaHub Save, or:
cd ComfyUI/custom_nodes
git clone https://github.com/LuqP2/ImageMetaHub-ComfyUI-Save.git
Restart and you're done. No dependencies beyond what ComfyUI ships.
The failure you'll actually hit: a FileNotFoundError pointing at metadata.json. That means you sent the image through the app's bridge flow, or the payload lives somewhere else. Two fixes - run "Send to ComfyUI Bridge" in Image MetaHub first, or set bridge_dir to the folder Image MetaHub actually shows you in its settings. Also note session_id deliberately rejects path separators, so don't try to smuggle a path into it; that guard is there to keep you from pointing the loader anywhere weird.
One caveat to set expectations: this node is the custom-workflow bridge. Image MetaHub may also offer a quick generated workflow as a fallback for simple runs, but it doesn't rewrite arbitrary ComfyUI graphs. If you want the full control of your own graph, this node is the intended route - and it's the only one of the pack's nodes that's a loader rather than a saver.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| bridge_dir | STRING | Image MetaHub bridge directory. Blank uses ~/ImageMetaHub/comfyui_bridge. | |
| session_id | STRING | latest | Use latest, or a session id from bridge/sessions. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| metadata_json | STRING | — |
| denoise | FLOAT | — |
| intent | STRING | — |
| source_path | STRING | — |
| session_id | STRING | — |
| width | INT | — |
| height | INT | — |