🪿 Droplet Commander
Make a real Photoshop Action a node in your ComfyUI graph — no Wine, no API key
- image
- IMAGE
- OUTPUT_DIR
The name sounds like it should call some cloud API and ask for a key. It doesn't. Droplet Commander runs a real Photoshop droplet - a recorded Action compiled to a .exe - on your renders, right from inside ComfyUI, and hands the processed images back to the graph. If you're on Linux ComfyUI inside WSL2 with native Windows Photoshop, this is the missing bridge between "generated" and "finished."
That last part matters, so read it twice: this node is built for one specific setup - ComfyUI in WSL2 (Ubuntu), Photoshop native on Windows 11, talking over WSL interop. No Wine. If that's you, it works. If it isn't, the Windows-specific bits (path translation, launching the .exe) are isolated in a handful of functions the README shows you how to repoint. But out of the box it assumes WSL2 + Windows.
Why would you want it? Because the deterministic pixel layer - color grade, grain, sharpening, cleanup - often lives in Photoshop Actions you've already built and trust. A lot of "finishing" is old, deterministic work better done in an editor than with another diffusion pass; this node makes that Action a step in your graph instead of an export-edit-reimport ritual.
How it works
The flow is simple once you see it. The node writes your IMAGE tensors out as PNGs to a Windows-side staging folder (C:\ComfyDroplet\in\ by default - keep it on C:, not the WSL home, because Photoshop reaches into \\wsl$\... slowly and flakily). Then it launches the droplet .exe through WSL interop, and Photoshop opens each file, runs the Action, and saves wherever the droplet was told to save.
The node's real job is finding the output, because Photoshop decides where that is, not ComfyUI. It watches three places at once - the droplet's "Save In" folder, the staging out\ folder, and the input folder (for overwrite-in-place droplets) - and returns the moment files stop changing, so it never waits out the timeout on success. Paths are normalized via wslpath, with a naive /mnt/c-style fallback if the tool's missing.
Inputs and outputs that matter
You'll set exactly two things for real, plus one decision made in Photoshop (below):
droplet- the.exeto run, picked from the package'sdroplets/folder (it also accepts.bat/.cmd). If the folder's empty the dropdown just says "put a .exe droplet in droplets/".source_mode- In-Pipeline (IMAGE) feeds tensors in and gets tensors back; Standalone Folder points at an existing folder of renders and returns nothing but the results dir.
The rest is mostly defaults: windows_scratch_dir (C:\ComfyDroplet), timeout_seconds (300, a safety cap only), the optional image / folder for each mode, and two escapes: droplet_output_dir (where the droplet's "Save In" actually writes) and droplets_dir_override (load droplets from elsewhere).
Outputs: IMAGE - the processed tensors (on a genuine timeout it passes your input through unchanged so the graph doesn't break) - and OUTPUT_DIR, the folder it read results from; feed that to a Save node.
Install
Via ComfyUI Manager → Custom Nodes Manager, use Install via Git URL with https://github.com/hodgemann/ComfyUI-Droplet-Commander, then restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/hodgemann/ComfyUI-Droplet-Commander
cd ComfyUI-Droplet-Commander
pip install -r requirements.txt # numpy + Pillow, usually already present
Restart and it appears under the 🪿 Droplet Commander category. Dependencies are about as light as a custom node gets - just numpy and Pillow, no model downloads, no API key, no Wine. The console greets you with "🪿 Mess with the HONK you get the BONK," which tells you the author's sense of humor if not his marketing instincts.
The two gotchas that will bite
1. You must author your own droplet - the droplets/ folder ships empty. The binaries are gitignored (machine-specific, often large). In Photoshop: record your edit as an Action, then File → Automate → Create Droplet and save the .exe into droplets/. In that dialog you must tick Suppress File Open Options Dialogs and Suppress Color Profile Warnings - skip either and Photoshop stalls on an invisible modal the instant a file opens, and the node looks hung. This is the #1 failure mode, per the README.
2. Decide where the droplet saves. The recommended setup: in Create Droplet, set Destination → Folder → C:\ComfyDroplet\out and tick Override Action "Save As" Commands. Leave droplet_output_dir empty. Alternatives: save somewhere else and set droplet_output_dir to that exact folder, or have the Action overwrite in place. The tell-tale symptom of getting this wrong: your original image comes back unchanged and every run takes the full timeout_seconds. That almost always means the droplet wrote somewhere the node isn't watching - check the folder list it logs on timeout.
Other things the README flags: if wslpath shows up in the log you're off real WSL2 (the fallback works for dev; install the tool on the real thing), and if only the first image returns with mixed sizes, your Action resizes inconsistently - make it output a fixed size.
This is a niche tool for a niche setup, and it's brand new - don't expect a community to lean on yet. But if you run ComfyUI in WSL2 and Photoshop on Windows, it turns the best pixel editor on your machine into a node instead of a manual step.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| droplet | COMBO | Photoshop droplet (.exe). Author it with dialog & color-profile warnings SUPPRESSED or PS will hang. | |
| source_mode | COMBO | In-Pipeline (IMAGE) | 2 options: In-Pipeline (IMAGE), Standalone Folder |
| windows_scratch_dir | STRING | C:\ComfyDroplet | Windows-side staging base (in\ and out\ created under it). Keep it on C:, NOT the WSL home. |
| timeout_seconds | INT | 3005–7200 | — |
| imageopt | IMAGE | Batch of tensors (In-Pipeline mode). | |
| folderopt | STRING | Existing-renders folder (Standalone mode). Windows or WSL path. | |
| droplet_output_diropt | STRING | Where the droplet's own 'Save In' writes. Empty -> read from the staging out\ folder. | |
| droplets_dir_overrideopt | STRING | Use droplets from this dir instead of the package droplets/. Windows or WSL path. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| OUTPUT_DIR | STRING | — |