Image Oasis 🌴
Your whole image pipeline in one box
Image Oasis is a deliberate provocation aimed at the ComfyUI graph itself. It's a true monolith: zero input sockets, zero output sockets, one giant DOM-widget UI that loads a model, applies the right sampling patch for whatever architecture you picked, runs the prompt, refines it, upscales it, and renders the result in the node's own preview pane. The pitch is "one node replaces 50+." When it launched on r/StableDiffusion the top comment was literally "But why? Subgraphs already exist" - and the author's answer was fair: subgraphs collapse the clutter but you're still rewiring a whole branch every time you switch Flux for Qwen or SD3. Here, architecture is a dropdown, and your LoRA stack, sampler settings and refiner config follow the switch via named presets.
It isn't for everyone, and it doesn't pretend to be. If you enjoy wiring graphs and switch architectures rarely, this solves a problem you don't have. But if you came from A1111, or you just want good images without rebuilding the same workflow every time, one tester's review says it best: it's an "accessibility gateway for the nodally-challenged." For a beginner who googled a node because the workflow they downloaded won't run, that's not an insult - it's the whole point.
How it works
Under the hood it's the same pipeline you'd hand-wire: model load, ModelSamplingFlux/DiscreteFlow patch with arch-default shift values, CLIP text encode (or TextEncodeQwenImageEditPlus with up to three reference images when you pick Qwen-Image-Edit), VAE-derived latent with correct channel counts, a KSampler chain, decode, refiner pass, upscale. The node just does it for you, using ComfyUI's own sampling internals - so a single generation is byte-identical to a hand-built graph. The speed win is iterative: caches are split so changing upscale settings doesn't retrigger sampling and changing the prompt doesn't reload the model.
Model loading is tri-source: checkpoint, diffusion (safetensors UNet), or GGUF (needs ComfyUI-GGUF installed - it raises a clear error if you pick GGUF without it). The architecture registry covers AuraFlow, Boogu-Image 0.1, Flux.1/2, Krea 2 (Turbo/Raw), Qwen-Image-Edit, SD1/SD1.5, and SD3/3.5, with the right number of CLIP slots surfaced automatically. Img2img init works on every non-Qwen architecture - drop an image into the Init slot and denoise becomes the strength dial (start ~0.5). The upscale section runs algorithmic scaling with zero extra dependencies; the Model mode needs spandrel (+ spandrel-extra-arches), which is in requirements.txt.
The bits that matter
- Prompt Enhancer: the "magic wand" expands a short prompt with a local GGUF LLM, stored under
models/LLM. This is the fiddly optional bit - it needsllama-cpp-pythonbuilt with CUDA/Metal, not the CPU-only wheel a plainpip installlands you on (the README has the toolkit-specific command). It loads and unloads per click so it doesn't OOM next to the diffusion model. - LoRA stack: add any number, per-LoRA model/CLIP strength, drag to reorder, optional trigger words auto-prepended. Works over GGUF UNets too.
- Refiner pass: a second img2img-style sampling pass over the base result at
refiner_denoisestrength - the "second KSampler at partial denoise" pattern, without a second KSampler.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/NikoDemon80/ComfyUI-Image-Oasis
cd ComfyUI-Image-Oasis
pip install -r requirements.txt
Then restart and hard-refresh (Ctrl+F5) so the frontend reloads. ComfyUI Manager finds it as "Image Oasis". Install ComfyUI-GGUF for GGUF sources and spandrel is already in requirements. The node's own help pane (image_oasis_help_content.md) is the best in-node reference.
Where people get burned
- The no-sockets thing is real. It can't be looped over a directory of files by standard batch patterns - the author has acknowledged this and batch size > 1 inside the node is the current workaround. If you live in automation, this node isn't for you.
- The enhancer on CPU-only llama-cpp is painfully slow. If you're on AMD/ROCm you'll need to build llama-cpp from source; the rest of the node runs fine without it.
- Known-breaking flags get refused up front - Krea 2 plus
--use-sage-attentionerrors clearly instead of silently producing black images. Read that error, don't fight it.
The name, by the way, is a lie in the best way: it calls no API and needs no key. Everything runs on your machine.
Inputs (0)
No inputs
Outputs (0)
No outputs