ForgeNeo Bridge Settings
43 inputs, and you'll touch four of them
- settings
ForgeNeo Bridge Settings is where a Forge image's saved configuration lives in the rebuilt graph. It has roughly forty widgets spread across collapsed sections - Text processing, Noise / variation, Sampling details, Sigma / schedule, CFG options, Img2img details, SDXL details - and the honest summary is that most of them exist so the import doesn't lose information. The values matter; the widget count is just the shape of Forge's option set.
One output, two switches, everything else
Output: settings, a FORGE_SETTINGS bundle. It goes into ForgeNeo Bridge KSampler and nowhere else. If you're looking for where the graph pulls its sampling_adjustments value from, this is the node.
The two inputs that decide the whole behaviour are the optional forge_compatibility (default ON) and sampling_adjustments (default OFF).
| Forge compatibility | Sampling adjustments | What runs | |---|---|---| | OFF | inactive | ComfyUI's text encoding, initial noise and KSampler | | ON | OFF (default) | Forge text and initial noise, ComfyUI samplers and sigma columns | | ON | ON | The above plus Forge-oriented sampling corrections |
Read that table once and a lot of confusion evaporates. Compatibility ON with adjustments OFF is the "shared parts only" mode - Forge's prompt parsing and initial noise, but Comfy's solver and schedule. Turning adjustments ON adds the sigma, intermediate-noise, CFG and ENSD corrections. Off is the plain ComfyUI path.
What the pack is careful not to claim: turning adjustments ON doesn't guarantee a closer result. Its README says so directly - similarly named solvers can use different intermediate noise or schedules regardless, so the switch improves internal consistency, not visual fidelity. Refreshingly honest, given how often toggles like this get sold as "exact match mode".
Three practical notes on the switch. Changing compatibility or adjustments on one node syncs the same switch into the other pass of a Hires.fix pair, so you can't desync them by accident. Old workflows saved before this field existed load with adjustments ON to preserve their previous behaviour, while freshly dropped images and new nodes default OFF. And with adjustments OFF, ENSD is retained in the bundle but not added to the RNG, so a saved value that appears to do nothing is documented behaviour, not a bug.
The handful of fields worth your attention
family (auto, anima, sd15, sdxl) and mode (txt2img, img2img) - normally read off your dropped image and normally left alone. On a Hires.fix chain the first pass is txt2img and the second is img2img.
clip_skip and shift, both strings defaulting to auto. And here's the bit people misread: auto is not a magic compatibility mode. It means "this unspecified field follows the model or the supported profile". It's the default for clip_skip, shift, sigma_min, sigma_max and rho. Set clip_skip explicitly and it must be a positive integer, or you get an error rather than a coercible guess. Note that automatic - the scheduler name - is a completely unrelated thing that happens to share a word with it. Yes, that's confusing. It's Forge's naming, not the pack's.
width, height, batch_size are described by the pack as a legacy fallback: connect a latent and the latent controls the base size, so those three go quiet. Which is why "I changed the size in Settings and nothing happened" has a boring answer.
source_json is provenance only, and the docs are explicit that the current widget values drive execution. Edit a prompt or a seed after import and the original stays in the bundle as a record - it doesn't overwrite your edit back, and your edit doesn't rewrite the record.
The rest do what the labels say, grouped the way the pack groups them: Forge's prompt handling (emphasis, comma_padding_backtrack); the noise stream (rng, ensd, subseed, subseed_strength, the seed-resize pair); solver behaviour (eta_ancestral, eta_ddim, s_churn, s_tmin, s_tmax, s_noise); the schedule (sigma_min, sigma_max, rho, beta_alpha, beta_beta, discard_penultimate, sgm_noise_multiplier); guidance (skip_early_cfg, ngms, ngms_all_steps). The SDXL block (original_width, original_height, target_width, target_height, crop_x, crop_y, zero_empty_negative) only shows up on SDXL. And sgm_noise_multiplier is an initial-noise scaling rule, not a scheduler name, whatever the field placement suggests.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/ComfyUI-ForgeNeo-Bridge.git
Restart ComfyUI, reload with F5. No pip at startup, no downloaded models, no global patches. Manager → search "ForgeNeo Bridge". Update with git pull --ff-only in the repo directory.
Where it goes wrong
The advanced sections are collapsed and your values are fine. They retain values when closed; expand them instead of re-entering things. Sections appear conditionally - no SDXL block on an Anima graph, no img2img block if the mode is txt2img - so a "missing" field usually means the wrong family was detected.
Labels are in Japanese. The pack follows ComfyUI's language setting, not your OS. If you get Japanese labels on an English install, ComfyUI's locale is set to ja.
Tooltips don't show. They need ComfyUI's Enable Tooltips setting on. The hover help on these fields is the author's own description of each one and is better than guessing.
You want the values, not the node. There's a separate, independently collapsible Source information section showing what was read from the original image - that's the thing to check when the reconstruction disagrees with what Forge told you it did.
Inputs (43)
| Name | Type | Default | Description |
|---|---|---|---|
| family | COMBO | 4 options: auto, anima, sd15, sdxl | |
| mode | COMBO | 2 options: txt2img, img2img | |
| width | INT | 51264–16384 | — |
| height | INT | 51264–16384 | — |
| batch_size | INT | 11–64 | — |
| emphasis | COMBO | 4 options: Original, No norm, Ignore, None | |
| clip_skip | STRING | auto | — |
| comma_padding_backtrack | INT | 200–256 | — |
| rng | COMBO | 3 options: CPU, GPU, NV | |
| ensd | STRING | 0 | — |
| subseed | STRING | 0 | — |
| subseed_strength | FLOAT | 0.000–1 | — |
| seed_resize_width | INT | 00–16384 | — |
| seed_resize_height | INT | 00–16384 | — |
| eta_ancestral | FLOAT | 1.00 | — |
| eta_ddim | FLOAT | 0.00 | — |
| s_churn | FLOAT | 0.00 | — |
| s_tmin | FLOAT | 0.00 | — |
| s_tmax | FLOAT | 0.00 | — |
| s_noise | FLOAT | 1.00 | — |
| sigma_min | STRING | auto | — |
| sigma_max | STRING | auto | — |
| rho | STRING | auto | — |
| beta_alpha | FLOAT | 0.60 | — |
| beta_beta | FLOAT | 0.60 | — |
| discard_penultimate | BOOLEAN | false | — |
| sgm_noise_multiplier | BOOLEAN | false | — |
| shift | STRING | auto | — |
| skip_early_cfg | FLOAT | 0.00 | — |
| ngms | FLOAT | 0.00 | — |
| ngms_all_steps | BOOLEAN | false | — |
| img2img_step_mode | COMBO | 2 options: forge_scaled, exact_steps | |
| img2img_extra_noise | FLOAT | 0.00 | — |
| original_width | INT | 00–16384 | — |
| original_height | INT | 00–16384 | — |
| target_width | INT | 00–16384 | — |
| target_height | INT | 00–16384 | — |
| crop_x | INT | 00–16384 | — |
| crop_y | INT | 00–16384 | — |
| zero_empty_negative | BOOLEAN | false | — |
| source_json | STRING | {} | — |
| forge_compatibilityopt | BOOLEAN | true | — |
| sampling_adjustmentsopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| settings | FORGE_SETTINGS | — |