CPA PlateProxy
The hidden node that makes the matting picker scrollable
- images
CPA PlateProxy is a plumbing node, and I'd rather say that plainly than pretend you'll ever wire it up. It has one job: when you press Load plate inside Comfy Pro Alpha Generator, this node writes a small JPEG of every frame of your plate into ComfyUI's temp directory so the node's viewer has something to scrub through.
If you went looking for it because it appeared in your console or your workflow JSON, that's the whole explanation. Nothing is broken.
Why it deserves its own node
Here's the constraint. The matting node holds your plate as a full-resolution IMAGE batch in RAM - that's why a 4K shot costs tens of gigabytes (all of that pipeline is memory-constrained by the plate, not the model). Rendering a viewer's worth of thumbnails from that batch is cheap in principle and dangerous in practice: do it every time the node redraws and you've built a memory leak with a UI.
So the author split it out. CPA PlateProxy is a separate node in the graph, which means ComfyUI caches it. The five-hundredth time the picker asks for the plate, the JPEGs are already on disk and nothing re-runs. This is the same caching discipline the whole pack is built on - every stage is its own cached node so that switching Fast/Best or re-running a preview reuses finished work.
Inputs
Three, and only one of them matters to a normal user.
images is the plate - the picker's helper graph connects it straight to whatever feeds the generator's own images input, without copying the batch. width (default 960) caps the long edge of the thumbnails, and it's silently clamped to the plate's real width, so it never upscales a 720p plate into mush. first_frame rides along from a loader like Load Plate Sequence purely so the metadata the node publishes back to the UI carries the right starting number.
Outputs: none, and that's the design
There is no output socket. The node is flagged as an output node precisely so it can run and report - it returns a UI payload (frame count, plate width and height, a content fingerprint, the temp subfolder, the first frame number) instead of a tensor. The web script reads that payload to fill the scrubber and to know how far the slider goes.
The files themselves land in ComfyUI/temp/comfy_pro_alpha_plate/<fingerprint>/ as f00000.jpg, f00001.jpg, … at JPEG quality 85. One directory per unique plate, named by a content hash of shape plus a strided sample of pixels. Existing files are skipped, so a second run over the same plate is nearly instant - and a different plate gets a different folder rather than overwriting the last shot's proxies.
That fingerprint is doing double duty: the picker compares it against the one stored with your subject picks. If it differs, your crop or clip changed after you clicked and the picks are flagged stale.
Install
It comes with the pack - there's nothing extra to fetch.
cd ComfyUI/custom_nodes
git clone https://github.com/rik-python/ComfyUI-Comfy-Pro-Alpha-Generator.git
pip install -r ComfyUI-Comfy-Pro-Alpha-Generator/requirements.txt
Restart, reload the browser tab (the front-end script is cached by the browser, which bites people after updates), and it's there. ComfyUI 0.38+ is required; the pack uses the V3 node API. Licence is PolyForm Noncommercial - free for personal work, a paid licence for client or studio use.
Why you can't find it in the node menu
Every one of this pack's internal stage nodes - PlateProxy, Proxy, Refine, Stitch, TrackMasks, TileGuide, TileMerge and the rest - is registered with is_deprecated set, which keeps them executable but hides them from node search. They exist so ComfyUI can run the graph the main node expands into, not so you can drag them onto the canvas.
Two practical consequences:
Don't hand-wire it. Even if you dig it out, there's no output to connect, and the UI payload only means something to that node's own JavaScript. It's not a general-purpose thumbnailer.
Its temp files don't survive a restart. ComfyUI clears temp/ on start, so after a restart the picker can only draw bounding boxes until you click Load plate again - which re-runs this node and regenerates the proxies over your upstream nodes' cached output. If your subject picks look fine but the viewer shows empty boxes, that's the reason, and one click fixes it.
The one genuinely useful side effect: because the folder is keyed by content hash, you can tell from the directory name whether the picker is looking at the plate you think it is.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| width | INT | 960 | — |
| first_frame | INT | 1 | — |
Outputs (0)
No outputs