🦾 Compositor V3
The canvas you always wanted inside ComfyUI
- config
- extendedConfig
- transforms
- image
- layer_outputs
Compositor V3 is the node that made this pack worth installing: an actual interactive canvas inside ComfyUI where you drag, scale, rotate, flip, and layer up to eight images before they ever touch a sampler. Instead of guessing pixel coordinates, you place a subject where you want it, hit continue, and the graph renders your scene.
The community use case that keeps coming up is "put this person into that scene." A classic r/comfyui answer to "how do I insert faces into a specific scene?" is literally: use the Compositor node, cut your subjects out first, place them, then run the composite through an img2img pass to blend. That's the workflow this node exists for. It's the Photoshop-lite layer you can't get from the core node set.
How it works
V3 is the classic-API compositor. You feed it a config object (from the pack's Compositor Config V3 node, which holds your up-to-eight images, canvas size, and settings), and it opens a browser-side canvas. On first run the node stops execution - ExecutionBlocker - until you've arranged your layers; the green border shows the export area, and moving your mouse out of the canvas auto-saves with an orange flash. Your transforms (position, scale, rotation, z-order) are remembered and reapplied on later runs, so swapping an image in doesn't reset your layout.
The state lives in fabricData (a JSON string of the layout) and imageName (the saved snapshot file). Out the other side you get three things: transforms (a JSON string describing every layer's position/size/angle - feed it to the pack's transforms-output node to get raw numbers), image (the flattened composite, ready to wire to a sampler or img2img), and layer_outputs, which unpacks the individual layers for the masks-output companion node.
The inputs that matter
config(required) - the COMPOSITOR_CONFIG from Compositor Config V3. There's no point wiring this node without it.fabricData/imageName(required) - auto-managed state. Leave them alone until you're comfortable.tools(optional, default true) - toggles the toolbar helpers.extendedConfig(optional) - the config node's second output, for advanced setups.
Outputs: transforms (STRING), image (IMAGE), layer_outputs (COMPOSITOR_OUTPUT_MASKS).
Install
Part of ComfyUI-Beyond_nodes. ComfyUI Manager → search "Beyond_nodes" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/beyondprompting/ComfyUI-Beyond_nodes
Restart. Note the README's clone instructions still point at the old erosDiffusion URL - use the one above. No pip requirements; the heavy lifting is in the browser (fabric.js ships with the pack).
Common issues
- Nothing shows until you run once. The canvas needs a first execution to load your images. Run the workflow once, then compose.
- The flow stops and won't continue. That's by design - it's waiting for you to finish arranging and mouse-out to save. If it loops forever, check the
onConfigChangedContinuesetting in the config node; and be careful with random seeds upstream of the node, because stopping and re-enqueueing will re-roll them. - Big canvases get slow. The README's own warning: don't drop eight 4K images into a 4K canvas. Keep the buffer zone reasonable.
- Missing images after reload. Save placement uses stable filenames based on the config node; if the input folder the config writes to is temp, it won't persist across restarts.
V3 is the battle-tested version. V4 exists and is prettier, but V3 is where the polish accumulated first - and it's still what most sample workflows use.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| config | COMPOSITOR_CONFIG | — | |
| fabricData | STRING | {} | — |
| imageName | STRING | new.png | — |
| toolsopt | BOOLEAN | true | — |
| extendedConfigopt | COMPOSITOR_CONFIG | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| transforms | STRING | — |
| image | IMAGE | — |
| layer_outputs | COMPOSITOR_OUTPUT_MASKS | — |