Generation Core
SickOllie's sampler tuned for the Studio workflow
- model
- positive_conditioning
- negative_conditioning
- samples
- vae
Studio Generation Core (SOGenerationPipelineStudio) is the same sampling engine as the Classic version wearing a cleaner outfit and a trimmed wiring surface. Same Krea2-oriented defaults, same internal CLIP and VAE loading, same optional CONDITIONING overrides, same live preview - but where Classic hands you six outputs and expects you to route them, Studio hands you two (samples and vae) and lets the rest of the workflow figure out the context on its own.
That's the whole Studio design philosophy in one node. The README calls it Auto Context: Studio's Output Core reads recognized upstream Studio state straight from the workflow graph, so you don't need the big metadata wiring bundle Classic workflows carry around. Loader Core knows the model and LoRA; Prompt Core knows the resolved prompt; this node knows the seed and canvas; and Output Core reaches back and grabs what it needs from each.
What's actually different from Classic
Mechanically, almost nothing - same model input, same positive_text, clip_name, clip_type (krea2/sd3/stable_diffusion/stable_cascade/pixart/flux/default), clip_device, vae_name, same resolution controls and sampler/scheduler/CFG/shift/seed widgets. The visible differences are the defaults: Studio starts in preset resolution mode (Classic defaults to custom), defaults to the 3:4 portrait aspect at 1 megapixel, and keeps the Krea2-leaning 9 steps / CFG 1 / euler / beta scheduler. The outputs are the big change: just samples and vae, because seed_used, width, height, and generation_info are reconstructed downstream by Auto Context instead of wired by hand.
The seed rules carry over: -1 randomizes independently each run, anything else is a fixed, clamped value - no control-after-generate surprises. And the two optional CONDITIONING sockets still let an image-edit or reference encoder override the internal text encoding when you connect them.
Inputs and outputs that matter
The ones you set: model (from Studio Loader Core), positive_text (from Studio Prompt Core's final_prompt), clip_name/vae_name, aspect_preset + megapixels, steps, cfg, sampler_name, scheduler, denoise, shift, and seed_value. Outputs: samples and vae, which per the five-minute Studio start both feed Studio Output Core, which decodes them itself.
Installing it
Same pack as everything else here:
cd ComfyUI/custom_nodes
git clone https://github.com/sickollie/SickOllie
or ComfyUI Manager → "SickOllie". Restart, Ctrl+F5 hard-refresh. Python 3.10+; no pip installs needed.
Where people get burned
People port a Classic workflow over and panic at the missing outputs. That's not a regression - the Studio workflow deliberately wires less. If you're building fresh, follow the starter: Loader model → this node's model; Prompt final_prompt → positive_text; samples + vae → Output Core. If you truly need seed_used as a visible wire, that's what Classic Generation Core is for. The one real config trap is the same as Classic: pick a clip_type that doesn't match your architecture and encoding fails, so keep default when you're not sure.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive_text | STRING | — | |
| clip_name | COMBO | 0 options: | |
| clip_type | COMBO | krea2 | 7 options: krea2, sd3, stable_diffusion, stable_cascade, pixart, flux, +1 |
| clip_device | COMBO | default | 3 options: default, cpu, gpu |
| vae_name | COMBO | 0 options: | |
| resolution_mode | COMBO | preset | 2 options: custom, preset |
| custom_width | INT | 144016–16384 | — |
| custom_height | INT | 192016–16384 | — |
| aspect_preset | COMBO | 3:4 (Portrait Standard) | 8 options: 1:1 (Square), 2:3 (Portrait), 3:4 (Portrait Standard), 4:5 (Portrait Tall), 9:16 (Portrait Phone), 4:3 (Landscape Standard), +2 |
| megapixels | FLOAT | 1.000.05–64 | — |
| batch_size | INT | 11–64 | — |
| steps | INT | 91–10000 | — |
| cfg | FLOAT | 1.00–100 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | beta | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 1.000–1 | — |
| shift | FLOAT | 1.25-100–100 | — |
| seed_value | INT | -1-1–1125899906842624 | -1 means randomize independently for each run. |
| seed_inputopt | INT | -1 | Optional external seed override. When connected, this value replaces the Generation Core seed widget for the current run. |
| positive_conditioningopt | CONDITIONING | Optional external positive conditioning. When connected, it overrides Generation Core's internal positive-text encoding. Useful for image-edit encoders that attach reference-image conditioning. | |
| negative_conditioningopt | CONDITIONING | Optional external negative conditioning. When unconnected, Generation Core keeps its existing empty-negative behavior. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |
| vae | VAE | — |