OpenAssetIO Resolve Image
Load Image that understands 'latest'
- IMAGE
- MASK
If your ComfyUI life is dragging images from a Downloads folder into Load Image, stop reading - this is Load Image with a college degree. But if you're wiring ComfyUI into a studio pipeline, OpenAssetIO Resolve Image is the input half of a genuinely nice trick: point it at an entity reference that means "the latest version of this shot's plate," and when the plate is updated by someone else, re-running the workflow silently pulls the new file. No editing paths, no copying files around, no "wait, which folder did they say?"
It's the read-side of the OpenAssetIO-ComfyUI pack, a small Apache-2.0 plugin from The Foundry and the OpenAssetIO project (the ASWF-standard API for talking to asset managers). It drops into any workflow that currently starts with a Load Image node, because that's exactly what it is under the hood - a Load Image clone whose file path comes from an asset manager instead of a text box.
How it works
You type an entity_reference - an opaque string like shotgrid://prod/shot/240/plate - and the node asks the configured manager to resolve it. OpenAssetIO resolves via a locatable-content trait, which hands back a file:// URL; the manager may sync, download, or otherwise materialize the file locally first. Then the node runs the actual built-in Load Image code - the source says so, right down to the EXIF transpose, alpha-channel handling, and multi-frame GIF/APNG support. Same contract, same outputs: an IMAGE tensor and a MASK (a 64×64 zero tensor when the source has no alpha, exactly like core). Wire them into your existing graph and nothing else changes.
Two details make it behave like a pipeline citizen rather than a one-shot load. IS_CHANGED hashes the resolved file's contents, so ComfyUI re-executes the node (and everything downstream of it) when the underlying asset changes - that's what makes "latest" updates actually propagate through a cached workflow. And VALIDATE_INPUTS checks your string against the manager's entity-reference syntax as you type, so garbage gets a red input instead of a confusing crash at run time. If your asset system supports a meta-version like "latest," this is where the whole value proposition lives: update the asset, not the workflow.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/OpenAssetIO/OpenAssetIO-ComfyUI
cd OpenAssetIO-ComfyUI
pip install -r requirements.txt
Restart ComfyUI after. ComfyUI Manager can grab the repo (search "OpenAssetIO"), but it installs the repo - it does not install the Python dependencies (openassetio and openassetio-mediacreation) or set your config. The non-negotiable piece is the OPENASSETIO_DEFAULT_CONFIG environment variable, which must point to a valid OpenAssetIO config file and must be visible to whatever process launches ComfyUI. No models to download; the "model" here is the manager plugin for your asset system. The pack is tested against Python 3.11 and ComfyUI 0.3.57.
Where people get burned
The one real failure mode: the node throws "Could not create an OpenAssetIO manager instance" the first time it runs, and it means your config is missing, wrong, or not actually in ComfyUI's environment. Fix that before anything else - no manager, no resolve, and this node is just a Load Image that can't load. One more thing to know: there's no file browser. You type a string and trust the manager. If your asset system's syntax isn't obvious, keep a few real entity references handy to paste in while you're learning.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| entity_reference | STRING | The entity to resolve |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |