Earthbound Ultimate
One node that loads, merges, samples, and grades your whole image
- model in
- clip in
- vae in
- control_net
- control_img
- mask
- latent_in
- IMAGE
- MODEL
- CLIP
- VAE
Earthbound Ultimate is a "power node" - the ComfyUI equivalent of a Swiss army knife. A single node loads a checkpoint, blends up to four more into it, stacks three LoRAs, encodes your prompts, runs the sampler, does a latent hi-res fix, decodes, optionally runs a real model-based upscaler, and then runs a ten-knob post-processing chain. When it's done it hands you an image and the merged MODEL/CLIP/VAE to wire elsewhere.
That's normally ten or twenty stock nodes strung together. Collapsing all of it into one box is a genuine convenience if you're sick of graph spaghetti or you just want a quick test - the trade-off is the one the ecosystem always warns about: a monolithic node is harder to debug than a chain of small ones, because when the output is off you can't tell which stage did it. For iterating on settings it's great; for understanding why something went wrong, not so much. It's also a niche pack - nearly zero community footprint, no tutorials out there, and the author's README does the heavy explaining itself.
How it works
The interesting part is the merge. Where a raw weight sum can "blow out" when you stack models, Earthbound normalizes: each checkpoint's strength is divided by the total of all active strengths before patching into the base. Load ckpt 1 as the anchor, add ckpt 2 at 1.0 and both effectively land around half - the UNet stays stable no matter how many models you stack. LoRAs are then applied to the merged model and the CLIP at your chosen strength.
The rest is the standard pipeline in a trench coat: CLIP-encode positive and negative, optionally apply a ControlNet, create a latent (or take your latent_in), sample with your chosen sampler name / scheduler, and if latent_upscale is above 1.0 do a second latent upscale pass - that's the hi-res-fix trick, so pair it with a low denoise like 0.4–0.5 rather than leaving denoise at 1.0. After decoding, if you pick an upscale model name it runs a proper ESRGAN-style model upscale; then the effect chain kicks in.
Inputs that matter
- ckpt 1 + strength - your anchor model.
ckpt 2throughckpt 5are optional merge targets; leave them onNoneunless you're deliberately mixing. - lora 1–3 name / strength - your LoRA stack, applied to the merged model. Strength range is wide (−10 to 10) for when you want to push or dampen hard.
- positive prompt / negative prompt - plain text, multiline.
- res mode + preset res (or
custom width/height) - Preset gives you the common SDXL-friendly sizes like 832x1216. - latent_upscale - your hi-res fix factor. 1.5–2x with lower denoise is the sweet spot.
- recipe action + recipe slot - save or load a full configuration across 100 slots.
Then there's the post-processing bank: style morph (push toward painterly blur or sharpen structure), texture pop, clarity, sharpen, edge definition, smooth skin, chromatic aberration, brightness/contrast/saturation/gamma, and grain. All of it runs as GPU tensor math - instant, no extra models. The knobs default to neutral; the ones people actually touch are smooth skin and grain for that finished photograph look.
Outputs: IMAGE (wire to Save/Preview Image), plus MODEL, CLIP, VAE if you want the merged model downstream.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/kianthos/Earthbound---All-in-one-ComfyUI-Node
Then restart ComfyUI. ComfyUI Manager works too - search "Earthbound" or the pack title. No model files to download and nothing exotic in requirements.txt: just torch, torchvision, numpy, Pillow, json5, which you already have. You'll find it under the right-click menu at Earthbound → Earthbound Ultimate.
Gotchas
- The folder name. The README insists the node live in a folder called "ultimate node". A plain git clone works, but the
----heavy folder name has tripped up imports on some setups - if the node never appears, rename the folder to something likeEarthbound-Nodeand restart. ModuleNotFoundError: comfy_extras- the README warns about this, but the shipped code actually catches it and just disables the optional model upscaler. Use a stock ComfyUI install and you get it back.- Recipes not saving - the 100-slot system writes
earthbound_ultimate_recipes.jsonintoComfyUI/input/; if that folder isn't writable, saving silently does nothing. - Node renders red - usually your Python env's torch/torchvision is stale; let the requirements ride and update.
Worth a try if you want one clean box that does a merged-model generation with FX - just don't expect anyone else to be able to debug it with you.
Inputs (58)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt 1 | COMBO | 0 options: | |
| ckpt 1 strength | FLOAT | 1.000–1 | — |
| ckpt 2 | COMBO | 1 options: None | |
| ckpt 2 strength | FLOAT | 0.000–1 | — |
| ckpt 3 | COMBO | 1 options: None | |
| ckpt 3 strength | FLOAT | 0.000–1 | — |
| ckpt 4 | COMBO | 1 options: None | |
| ckpt 4 strength | FLOAT | 0.000–1 | — |
| ckpt 5 | COMBO | 1 options: None | |
| ckpt 5 strength | FLOAT | 0.000–1 | — |
| lora 1 name | COMBO | 1 options: None | |
| lora 1 strength | FLOAT | 1.00-10–10 | — |
| lora 2 name | COMBO | 1 options: None | |
| lora 2 strength | FLOAT | 1.00-10–10 | — |
| lora 3 name | COMBO | 1 options: None | |
| lora 3 strength | FLOAT | 1.00-10–10 | — |
| internal vae | COMBO | 1 options: None | |
| positive prompt | STRING | masterpiece, high quality | — |
| negative prompt | STRING | lowres, blurry, bad anatomy | — |
| seed | INT | 00–18446744073709550000 | — |
| seed mode | COMBO | 2 options: Fixed, Randomize | |
| internal batch size | INT | 11–64 | — |
| res mode | COMBO | 2 options: Preset, Custom | |
| preset res | COMBO | 5 options: 1024x1024, 832x1216, 1216x832, 1280x720, 720x1280 | |
| custom width | INT | 102464–8192 | — |
| custom height | INT | 102464–8192 | — |
| steps | INT | 20 | — |
| cfg | FLOAT | 7.00 | — |
| sampler name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.00 | — |
| latent_upscale | FLOAT | 1.01–4 | — |
| upscale_method | COMBO | 5 options: nearest-exact, bilinear, area, bicubic, bislerp | |
| style morph | FLOAT | 0.00-1–1 | — |
| texture pop | FLOAT | 0.000–2 | — |
| clarity | FLOAT | 0.000–1 | — |
| sharpen | FLOAT | 0.000–2 | — |
| edge definition | FLOAT | 0.000–2 | — |
| smooth skin | FLOAT | 0.000–1 | — |
| chromatic aberration | FLOAT | 00–5 | — |
| shading depth | FLOAT | 1.000.5–2 | — |
| brightness | FLOAT | 0.00-1–1 | — |
| contrast | FLOAT | 1.000–2 | — |
| saturation | FLOAT | 1.000–2 | — |
| gamma | FLOAT | 1.000.2–2.2 | — |
| grain | FLOAT | 0.000–1 | — |
| auto precision | COMBO | Disabled | 2 options: Disabled, Enabled |
| recipe action | COMBO | 2 options: Apply, Save current as Slot | |
| recipe slot | INT | 11–100 | — |
| model inopt | MODEL | — | |
| clip inopt | CLIP | — | |
| vae inopt | VAE | — | |
| upscale model nameopt | COMBO | 1 options: None | |
| batch sizeopt | INT | 11–64 | — |
| control_netopt | CONTROL_NET | — | |
| control_imgopt | IMAGE | — | |
| maskopt | MASK | — | |
| latent_inopt | LATENT | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |