Ino Zip
Zip a folder without leaving the graph — the archive step your pipeline has been missing
- success
- message
- rel_path
- abs_path
The last step of any serious pipeline is packaging: turn a folder of generated images, logs, and configs into one zip someone can download or ship. That's a shell command in most workflows, which means a break in the automation. Ino Zip brings archiving into the graph: "Zips a source folder into a zip file at the specified destination." Point it at a folder, tell it where the zip should land, and the abs_path output feeds straight into the next step - an S3 upload, an HTTP call, whatever.
It sits in the pack's file-helper family, so it shares the family's uniform outputs (success/message/rel_path/abs_path) and the parent_folder + folder + filename input pattern. Every file node in the pack speaks the same language, which makes chains like zip → upload trivial to build.
How it works
You pick a source (a source_parent_folder from input/output/temp, plus a source_folder) and a destination (a parent_folder, folder, and filename, default archive.zip). It resolves both to real paths, creates the destination's parent folder if needed, and zips the source folder's contents into that file. The whole thing runs async, so a large archive won't block the event loop the way a naive implementation would.
The inputs that matter
- source_parent_folder / source_folder - what to archive.
- parent_folder / folder / filename - where the zip goes.
filenamedefaults toarchive.zip; give it a timestamped name (feedInoDateTimeAsStringoutput in here) so runs don't collide. - enabled - pack-wide toggle; off returns a failed result with "Node is disabled".
Outputs: success, message, rel_path, and abs_path (the full path of the zip - the one you'll hand to an upload or download node).
Where it wires in
End-of-batch packaging is the classic: zip the output folder, then InoS3UploadFile (or a folder upload) pushes the archive to the cloud, all without leaving ComfyUI. It's also how you hand results to a downstream consumer that expects a single file, or how you archive a dated run before cleanup nodes delete the originals. The success output gives you a clean branch if you want to skip upload on failure.
Installing it
Part of ComfyUI-InoNodes. ComfyUI Manager → search "ComfyUI Ino Nodes" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/ComfyUI-InoNodes
cd comfyui_ino_nodes
pip install -r requirements.txt
Restart after. No keys, no model downloads - just the pack's inopyutils.
Common issues
The things that bite people here are path-shaped. If success is false, check that the source folder actually exists at the resolved path - parent_folder combos map to ComfyUI's real input/output/temp directories, and a typo in source_folder resolves to a nonexistent folder rather than erroring at the UI. Second, archive.zip as a default filename means two runs writing to the same folder will overwrite each other; get in the habit of appending a timestamp. And note the archive is a plain zip of the folder's contents - there's no compression level knob, so it's a "make a zip" node, not a tuning tool.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | true | — |
| seed | INT | 00–18446744073709550000 | — |
| source_parent_folder | COMBO | 3 options: input, output, temp | |
| source_folder | STRING | — | |
| parent_folder | COMBO | 3 options: input, output, temp | |
| folder | STRING | — | |
| filename | STRING | archive.zip | — |
| dummy_stringopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| success | BOOLEAN | — |
| message | STRING | — |
| rel_path | STRING | — |
| abs_path | STRING | — |