π Bawk Sampler
The heart of the pack β generate, sample, and decode in one node
- model
- conditioning
- vae
- input_image
- reference_image
- reference_image_2
- images
- latent
This is the node the whole pack is built around. Bawk Sampler does what a stock ComfyUI setup needs five nodes to do - empty latent, ModelSamplingFlux, KSampler, VAEDecode, plus the wiring between them - and collapses it into one. It's a FLUX-tuned, all-in-one txt2img/img2img sampler that hands you finished images on the other end, which is exactly the "no more node spaghetti" pitch the pack's author made when he posted the pack to r/comfyui.
How it works
Under the hood it's not magic, just assembly. It generates an empty latent (16-channel, FLUX's flavor) or encodes your input_image if you provide one, patches the model with ModelSamplingFlux using max_shift/base_shift (that's the flow-matching sigma-shift knob - ComfyUI's way of distributing sampling effort between composition and detail), injects guidance into the conditioning, runs the sampler/scheduler you picked, and decodes with your VAE. The latent output is still there if you want a second pass or a hires-fix chain.
The settings that matter
resolution- 14 presets. 1024Γ1024 is the FLUX sweet spot and the default. 512Γ512 "Quick Test" for drafts, 1408Γ1408 "FLUX Max Quality" for the official 2MP ceiling (that one wants serious VRAM), plus social sizes (Instagram Square, Instagram Portrait, Twitter Post). Need something else? Flipuse_custom_resolutionand setcustom_width/custom_height.batch_size- default 4. That's four images per run; on a 12GB card consider dropping to 1β2 while you iterate.sampler/scheduler-euler+betadefaults are the right FLUX call. The community rule still holds: never Karras for FLUX - it distorts the flow-matching trajectory and just makes things worse.steps- 30 default, 20 for speed, 40 for quality.guidance- 3.5 default (balanced), 2.0 creative, 7.0 structured. That's FLUX's guidance-in-conditioning scheme, not old-school CFG.max_shift/base_shift- 1.15/0.5 defaults are the community-tested FLUX values. Higher max_shift = more coherent, lower = more varied.denoise- 1.0 for txt2img; 0.6β0.9 for img2img viainput_image.use_custom_resolution+custom_width/custom_height- when presets aren't enough. Dimensions must be multiples of 64, and the node rounds for you.
Outputs and wiring
images (already VAE-decoded - wire straight into Bawk Image Saver) and latent (for img2img or upscale passes). The pack's quick-start chain: Bawk Model Loader β Bawk Wildcard Encoder β Bawk Sampler β Bawk Image Saver.
Install & troubleshooting
Same pack install - ComfyUI Manager β search "Bawk Nodes" β install β restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/juddisjudd/ComfyUI-BawkNodes.git
The pack's requirements.txt adds nothing beyond stock ComfyUI (torch, numpy, safetensors, requests), and the sampler's logic uses ComfyUI's own comfy_extras nodes, so there's no version drift to worry about.
Where people trip up:
- It's FLUX-tuned by default. Point it at Z-Image and the README's rule applies: steps 8, guidance 0.0. Leave it at 30/3.5 and a distilled model like Z-Image Turbo will over-correct and burn the image - guidance is baked into those weights.
batch_size4 surprises people. If you get an OOM on the first run, that's usually it.- The default resolution presets are chosen for FLUX's ~2MP ceiling. Above that, generate at 1408 and upscale rather than cranking the latent size.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| conditioning | CONDITIONING | β | |
| vae | VAE | β | |
| resolution | COMBO | 1:1 Square - 1024x1024 | Output size. Any 'WIDTHxHEIGHT' string also works when linked from another node |
| batch_size | INT | 11β64 | Images per run |
| seed | INT | 00β18446744073709550000 | β |
| steps | INT | 201β100 | FLUX.1-dev / Krea / Kontext / FLUX.2-dev: 20-30. FLUX.2 klein distilled: 4 |
| guidance | FLOAT | 3.50β20 | Distilled guidance. FLUX.1-dev 3.5, Kontext 2.5, FLUX.2-dev 4.0. Klein distilled ignores it |
| sampler | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | auto | auto = 'simple' for FLUX.1, the official FLUX.2 schedule for FLUX.2 |
| denoise | FLOAT | 1.000β1 | 1.0 for text-to-image. 0.5-0.9 for img2img with input_image |
| input_imageopt | IMAGE | img2img source. Encoded, then denoised by 'denoise' | |
| reference_imageopt | IMAGE | Edit / reference image for FLUX.1 Kontext and FLUX.2 (klein) edit models | |
| reference_image_2opt | IMAGE | Second reference image (FLUX.2 / klein) | |
| cfgopt | FLOAT | 1.01β10 | Real CFG against an empty negative. Only for FLUX.2 klein *base* models (~4-5). Keep 1.0 for every distilled FLUX model |
| max_shiftopt | FLOAT | 1.150β10 | FLUX.1 timestep shift at high resolution. Ignored by FLUX.2 |
| base_shiftopt | FLOAT | 0.500β10 | FLUX.1 timestep shift at low resolution. Ignored by FLUX.2 |
| custom_widthopt | INT | 102464β4096 | β |
| custom_heightopt | INT | 102464β4096 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | β |
| latent | LATENT | β |