AnyPause
Put a hard stop in your workflow and pick things up by hand
- output_1
- output_2
- output_3
- output_4
- output_5
- output_6
- output_7
- output_8
- output_9
- output_10
AnyPause is the node you drop into a graph when you want ComfyUI to stop mid-run, hold its breath, and wait for a human decision before the queue moves another pixel. It's a passthrough - anything you wire in comes out the other side unchanged - but it's the ComfyPanel way of turning an automated pipeline into something you can interrupt at a specific checkpoint.
The scenario it's built for is the ComfyPanel one: you're working in Photoshop, the panel is driving a local or cloud ComfyUI backend, and a generation reaches the point where you want to look at the canvas before the workflow commits to the next stage. Sticking an AnyPause there freezes execution at exactly that node. You adjust a layer, maybe edit a prompt, then hit resume in the panel and the run continues as if nothing happened.
Under the hood it's not magic, and it's worth knowing the price. The node sends a ComfyPanel.node_event to the frontend, then blocks on a threading.Event. The only thing that releases it is a POST to /ComfyPanel/resume_pause - which the panel (or the pack's frontend extension) sends when you hit continue. If nothing is listening, execution just sits there forever. There's no timeout, no "skip after 60 seconds." That's the first thing to understand before you wire one into a batch job you planned to walk away from.
The second thing is the cache. AnyPause returns float("NaN") from its IS_CHANGED hook while its action is "Pause", which is the ComfyUI idiom for "always rerun me." That means the node and everything upstream of it re-executes on every queue run, every time, even if their inputs didn't change. For an interactive pause that's exactly what you want - you do not want stale state when you resume. For unattended runs it's a quiet performance tax, so treat it as an interactive tool, not as a thing to leave parked in a production pipeline.
The inputs and outputs are the least interesting part, which is the point: there are no required inputs or outputs in the schema. Wire anything into output_1 through output_10 (they're all * - any type, and they pass through as lists) and the same values come back out the corresponding outputs. A node with ten passthrough ports is doing routing, not computation. ComfyUI's cache and execution model does the actual work; this node just declares "nothing after me runs until I say so."
Installing it
ComfyPanel is one repo, and you get every node in it at once. Either search "ComfyPanel" in ComfyUI Manager and hit install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Ginolazy/ComfyPanel
# restart ComfyUI
The full ComfyPanel experience also wants Adobe Photoshop 2025 (v26.0+) and the comfypanel.ccx plugin, but the custom nodes themselves run fine in a plain ComfyUI. Dependencies are torch, opencv-python, scipy, kornia, requests, and aiohttp - nothing exotic, no model files to download. Note the pack is dual-licensed: the custom nodes are MIT, the Photoshop plugin is proprietary.
The honest take: AnyPause is only useful when you're running the kind of interrupted, iterative workflow ComfyPanel is built around. If you've never paused a run to intervene mid-graph, this node won't invent a reason to. But if you've ever wished you could stop a pipeline at the exact frame where it needs a human eye, this is the cleanest stop sign in the pack.
Inputs (0)
No inputs
Outputs (10)
| Name | Type | Description |
|---|---|---|
| output_1 | * | — |
| output_2 | * | — |
| output_3 | * | — |
| output_4 | * | — |
| output_5 | * | — |
| output_6 | * | — |
| output_7 | * | — |
| output_8 | * | — |
| output_9 | * | — |
| output_10 | * | — |