Map End Ovum
Where your map loop's results actually land — Map End Ovum
- flow_control
- remaining_list
- result
- result
Map End is the closing half of the pack's map loop, and it's the half that does the collecting. MapStartOvum iterates over a list, your inner subgraph does something with each item, and this node receives each per-iteration result, merges it into the running accumulator, and keeps the loop rolling until the list is exhausted. When the loop finally terminates, this node's result output is the finished, accumulated value - the whole point of using a map instead of a bare foreach.
The nicest part is what you don't have to build: no list-append node, no manual "pass the accumulator back to the start" wiring. ComfyUI doesn't allow graph cycles, so loop nodes fake iteration by expanding the inner subgraph recursively at execution time - one copy of your nodes per pass, chained internally. This node handles the bookkeeping (it shares DNA with easyUse's Foreach, per the pack author) so you can focus on the per-item work.
How it works
Mechanically, Map End waits for three things: the flow-control signal and remaining-list from the paired Map Start, plus your result. Each call appends/merges result into the accumulator, then checks whether any items are left. If yes, it recursively expands the contained subgraph for the next item. If the list is empty, it returns the accumulated value straight out of result. It even updates the node status with a n/total progress readout as it grinds through the loop, which is a genuinely nice touch when a loop runs long.
The inputs and outputs that matter
All three inputs are required, and all three matter:
- flow_control - connect directly to the
flow_controloutput of yourMapStartOvum. - remaining_list - connect directly to the
remaining_listoutput of the same Map Start. - result - the per-iteration output of your inner subgraph. This is what gets merged into the accumulator automatically.
That's it for inputs. The single output is result (*), which is the final accumulated value once the loop completes - typically a list of all the per-iteration results, in order.
Installing it
Ships in comfy-ovum (sfinktah). ComfyUI Manager: search "comfy-ovum", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
Restart after cloning. No models, no heavy dependencies - the pack's requirements (pillow, numpy, requests, aiohttp, etc.) are light and Manager installs them.
Common issues
The classic failure is a half-wired loop: if flow_control or remaining_list doesn't come straight from the Map Start, the node logs a warning that the remaining list "did not come from Foreach/Map" and the loop misbehaves or spins. Keep those two wires direct. Also watch your result type - the accumulator is whatever shape you feed it, so inconsistent per-iteration results produce a mixed list that downstream nodes may reject. And on very large lists, remember the recursive expansion means one subgraph copy per item; keep the inner subgraph small.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| flow_control | FOREACH_LIST_CONTROL | Directly connect the output of MapStartOvum, the starting node of the iteration. | |
| remaining_list | ITEM_LIST | Directly connect the output of MapStartOvum, the starting node of the iteration. | |
| result | * | Connect the per-iteration result here; it will be appended/merged into the accumulator automatically. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | * | This is the final output value. |