D2 Send Eagle
Your output folder is a landfill — D2 Send Eagle ships your keepers straight to Eagle
- images
- d2_pipe
- positive
- negative
- IMAGE
If you batch a hundred gens a night, your ComfyUI/output folder turns into a landfill of near-identical webp files you can never find again. Eagle is the fix a lot of people land on: a paid image-organizer app with real folders, tags, and search, purpose-built for hoarding AI art. D2 Send Eagle is the bridge between them. It takes the image on its input, saves it to disk, then hands the file to Eagle's local HTTP API so the app ingests it into whatever folder you name - with the prompt, model, and generation settings written into its memo field. No API keys, no cloud, no subscription. It just talks to the Eagle running on your own machine.
It's an output node, so stick it at the end of a workflow where you'd normally put Save Image, wire your IMAGE in, and it does the rest. It's a fork of ComfyUI-send-eagle-slim by the same author as the D2 Nodes pack, and it drags along your generation metadata instead of just dumping files.
How it works
The clever part is where the metadata comes from. When the node runs, it gets ComfyUI's hidden prompt and extra_pnginfo - the JSON of your whole graph - and it walks backwards from the KSampler feeding your image, pulling out steps, sampler, scheduler, cfg, seed, and model name. It then traces the model input recursively to find the actual checkpoint (including Unet Loader). That only works for KSampler variants it recognizes - vanilla KSampler, KSamplerAdvanced, BNK_TiledKSampler, and a few others - and you can add more via config.yaml. If it can't find a KSampler, or you feed it from some exotic sampler, those fields just come back empty. It's a clever hack, not magic.
The format choice is where people get burned. PNG embeds the full ComfyUI workflow - drag the file back into ComfyUI and the whole graph reconstructs - but A1111's PNGInfo can't read it. WEBP/JPEG writes Exif that A1111's PNGInfo can display, but the workflow is gone. You can't have both.
The inputs that matter
The node fires one image through it at a time (batches get looped). Most of the knobs you can leave alone; these are the ones worth touching:
images- your IMAGE tensor from VAE Decode. This is the only required wire.format- webp / png / jpeg, as above. Webp is the default and it's fine.save_tags- None, "Prompt + Checkpoint", "Prompt", or "Checkpoint". This is the feature that makes Eagle searchable: it splits your prompt on commas into Eagle tags and/or adds the model name.Nonemeans your only search aid is the memo text.filename_template- defaults to{model}-{seed}, and you can also use{width},{height},{steps}. A timestamp is always prepended.eagle_folder- a folder name or folder ID. Give it a name and it creates the folder in Eagle if it doesn't exist. Leave it blank and files land in Eagle's default inbox.- Optional
positive/negativewire in prompts directly (or come fromd2_pipeif you use the author's D2 Nodes pack), andmemo_textis a free-form note.
Outputs are just passthroughs - positive, negative, and the image - so you can chain further nodes after it. The preview toggle just hides the image preview in the UI.
Installing it
ComfyUI Manager → Custom Nodes Manager → search "D2 Send Eagle" → Install → restart. Or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/da2el-ai/ComfyUI-d2-send-eagle
Then restart ComfyUI. Its only real Python dependency is piexif (for the Exif writing); requests and yaml are already bundled with ComfyUI. No models to download, nothing heavy.
Common issues
The number one failure is obvious once you know it: Eagle has to be running for this node to work. It hits Eagle's local HTTP API on localhost:41595; if the app is closed, the node throws. Same if Eagle's HTTP server is off in its settings. The local save still happens, so check ComfyUI/output/YYYY-MM-DD/ if a run errors.
The other classic gotcha: metadata comes up empty. If you wired the node somewhere the KSampler isn't reachable, or your sampler type isn't in config.yaml, you'll get blank tags and a filename full of zeros. It won't crash - it'll just save ugly. And a heads-up if you're used to Save Image: this node's local save folder is fixed (ComfyUI/output/YYYY-MM-DD/) and can't be changed.
Eagle itself is paid (one-time license). If you're already happy with ComfyUI's own browser, this node buys you nothing - but if you're an Eagle user with a growing hoard, it's the difference between a searchable library and a folder of 40,000 00001.webp files.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| format | COMBO | 3 options: webp, png, jpeg | |
| lossless_webp | BOOLEAN | true | — |
| compression | INT | 901–100 | — |
| save_tags | COMBO | 4 options: None, Prompt + Checkpoint, Prompt, Checkpoint | |
| filename_template | STRING | {model}-{seed} | — |
| eagle_folder | STRING | — | |
| preview | BOOLEAN | true | — |
| positiveopt | STRING | — | |
| negativeopt | STRING | — | |
| memo_textopt | STRING | — | |
| d2_pipeopt | D2_TD2Pipe | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |
| IMAGE | IMAGE | — |