G'MIC Cli
Hundreds of classic image filters from one text box
- images
- IMAGE
Want a film-emulation grade, chromatic-aberration, bloom, or a proper sharpen pass on your output - without downloading a single model or burning a byte of VRAM? That's this node. It's a text box that pipes your image through the real G'MIC command-line tool, a free and genuinely ancient (in the good way) image-processing suite with somewhere north of five hundred filters. ComfyUI's core is great at diffusion math and lousy at classic photo post-processing; G'MIC is the opposite. Put them together and you get finishing passes that look like they came out of Photoshop, because in spirit they did.
The name is a lie in the friendliest way: this node doesn't call any API and needs no key. It shells out to a binary on your machine.
How it works
GmicCliWrapper is a thin bridge, and the source is only ~50 lines. For every image in your batch it saves the frame to ComfyUI's temp directory, then runs roughly this:
gmic -input /tmp/in.png <your command> -output /tmp/out.png
It auto-prepends a - if your command doesn't already start with - or + (G'MIC invokes filters with a leading dash), then loads the result back as a tensor. Your command string goes through shlex.split, so the usual quoting rules apply. The example command in the pack's own workflow is fx_bokeh 3,8,0,30,... - that long comma tail is just the filter's parameters.
The inputs that matter
There are exactly two, and they're both required:
- command - a single-line G'MIC command, no leading dash needed. This is where you paste
fx_denoiseorrodilius 5,3or whatever you want to run. - images - any IMAGE tensor, typically straight out of a LoadImage node or after a sampler/upscale.
Output: IMAGE. Wire it into PreviewImage, SaveImage, or back into a VAE encode if you're doing img2img on the result. It's is_list: false and a single image output, so it drops into any normal image slot.
Installing it
Two installs, really. The node itself is one of the lightest in the ecosystem: no requirements.txt, zero pip dependencies - the entire pack is a single Python file.
cd ComfyUI/custom_nodes
git clone https://github.com/gemell1/ComfyUI_GMIC
# restart ComfyUI
Or search "G'MIC" / ComfyUI_GMIC in ComfyUI Manager and hit install. The part everyone trips on is the second install: the actual gmic executable. Grab it from gmic.eu and put it on your PATH - on Windows that's System Properties → Environment Variables, then restart ComfyUI so it sees the new PATH.
Where people get burned
'gmic' is not recognized/ command not found - the binary isn't on PATH. Nine times out of ten that's the whole problem; the README links a Windows PATH walkthrough for exactly this.- No soft failures. The node uses
subprocess.check_call, so a typo in the command aborts the run with G'MIC's raw stderr - terse, technical, and honest about what it didn't like. - It runs per-frame. Every image in the batch gets saved to disk, processed, and loaded back. Fine for single images; sluggish if you feed it a long video frame sequence.
- Old workflows. The README notes a March breaking change, so if you're dragging in a workflow from before that, the node may need recreating.
One honest take: for one-off exploration this is the wrong tool - guessing at filter syntax blind is miserable. That's what the sibling G'MIC-Qt node (same pack) is for. Use it to preview, then bake the winning command into this node so it runs forever, deterministically.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| command | STRING | — | |
| images | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |