ACB PPP Run Mode Options
The 'Don't Blow Up Your Batch' node for Prompt PostProcessor
- options
ACBPPPRunModeOptions - displayed as "ACB PPP Run Mode Options" - is the settings-bundle node that keeps Prompt PostProcessor (PPP) from cooking your batch alive. It doesn't touch a single pixel. It packages five settings into one options object and hands them to the main ACBPromptPostProcessor node through its rm_options input, so your run-mode behavior lives in the workflow JSON instead of a config file.
The reason it exists: PPP has three run modes - single, multiple, and combinatorial. If you only ever process one prompt at a time, you will never touch this node and that's fine; it's optional and there's no penalty for ignoring it. The moment you start generating batches of prompt variations from wildcards and choices - {dress|skirt|shorts}, __background__, the usual suspects - you want multiple or combinatorial, and those are exactly the modes these five knobs control.
How it works
Mechanically this node is deliberately boring: it reads its inputs and returns a dict of the custom type PPP_OPTIONS_RM. All the actual work happens in the main PPP node, which unpacks that dict and merges it into its processing state. Leave the rm_options socket unconnected and PPP just uses the defaults from ppp_config.yaml. The node exists because ComfyUI saves workflows as JSON, and nobody wants to edit a yaml file to tune a batch that's supposed to be reproducible.
Combinatorial mode is where the danger lives. PPP expands every choice and wildcard into every combination - two wildcards with ten entries each is 100 combos, three is a thousand. The pack's own docs warn about it in bold: "Beware of the combinatorial mode with no limits." This node is your ceiling. When the console prints an "Estimated combinations" line during a run, take it seriously - it's a lower bound, not the final count.
The inputs that matter
All five are optional with defaults, and the tooltips are accurate:
- results_limit (default 100): the cap on results in
multipleandcombinatorialmodes. 0 means no limit - the button you only press once you've seen the estimate. - results_shuffle (default false): shuffles the order of the returned results.
- comb_random_fixed (default true): in combinatorial mode, random samplers pick once and that value is reused across every combination, instead of re-rolling per combination. Leave it on unless you want the chaos.
- default_sampler (
randomorcyclical): the default choice sampler when the prompt doesn't specify one. Combinatorial mode treats the default as cyclical no matter what you set here. - next_seed (
randomize|input|increment|decrement): what happens to the seed for each subsequent prompt in multiple/combinatorial mode - new random, stay on the input seed, or step up and down.
The single output, options, is the PPP_OPTIONS_RM object.
Installing and wiring
Install is the whole pack, so it's one step:
- ComfyUI Manager → Custom Nodes Manager → search "Prompt PostProcessor" → Install, then restart ComfyUI.
Or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/acorderob/sd-webui-prompt-postprocessor
# restart ComfyUI
Dependencies are light - lark, numpy, ruamel.yaml, and pydantic 2.x from the pack's requirements.txt. No model downloads, no API keys. Wire the options output into the main PPP node's rm_options socket; that's the only input that accepts this custom type, so if you get a type-mismatch error you've plugged it into the wrong options socket.
Gotchas
- Combination explosion is the real failure mode. Start with
results_limitat 1, read the estimated-combinations log line, then raise it. Even a "small" wildcard set can outrun the number of images ComfyUI will actually produce. - This is a cross-host pack - it ships for A1111, Forge, and SD.Next too - so if you migrated from one of those, the semantics are the same, and the pack predates your ComfyUI habit by a while. It's a mature, MIT-licensed utility that's been quietly getting use since 2024.
If you're only ever doing single-prompt runs, you can skip this node entirely and never miss it. But once you're batch-sampling prompt variations, it's the difference between a curated dozen and a 30,000-image disk killer.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| results_limitopt | INT | 100 | Limit for combinatorial/multiple mode |
| results_shuffleopt | BOOLEAN | false | Shuffle the results |
| comb_random_fixedopt | BOOLEAN | true | Fix the value of any specified random samplers across all combinations in combinatorial mode |
| default_sampleropt | COMBO | random | Default choice sampler |
| next_seedopt | COMBO | randomize | Next seed strategy |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| options | PPP_OPTIONS_RM | — |