ComfyUI Node

MetaHub Input

Continue an existing image in your own ComfyUI workflow

By LuqP2·Created 9 months ago·Updated about 16 hours ago· 15
MetaHub Input
    • image
    • mask
    • metadata_json
    • denoise
    • intent
    • source_path
    • session_id
    • width
    • height
    bridge_dir
    session_idlatest

    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 in bridge_dir/sessions/<name> for a specific prepared payload.

    That's it. There are no other inputs.

    The outputs and what to do with them

    • image and mask - the actual payload. Wire image into whatever your workflow expects (Load Image → img2img, for example) and mask into an inpainting setup.
    • denoise and intent - read from the metadata, e.g. whether this was an inpaint or outpaint session. Feed denoise straight 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.

    Categoryimage/load

    Inputs (2)

    NameTypeDefaultDescription
    bridge_dirSTRINGImage MetaHub bridge directory. Blank uses ~/ImageMetaHub/comfyui_bridge.
    session_idSTRINGlatestUse latest, or a session id from bridge/sessions.

    Outputs (9)

    NameTypeDescription
    imageIMAGE
    maskMASK
    metadata_jsonSTRING
    denoiseFLOAT
    intentSTRING
    source_pathSTRING
    session_idSTRING
    widthINT
    heightINT