KSampler (Simple Input)
The 'simple input' KSampler that's only simple if you bring a config
- config
- positive
- negative
- model
- latent_image
- LATENT
- IMAGE
The display name is "KSampler (Simple Input)" and the honest version is "KSampler whose settings live somewhere else." Repeat Sampler takes a single SAMPLER_CONFIG object - built by this pack's Repeat Sampler Config node - reads model, seed, steps, cfg, sampler, scheduler, latent and VAE out of it, and runs the denoise. Same sampling, far fewer wires, as long as the config exists. On its own this node is inert; you need its sibling upstream.
That's the real trade. A stock KSampler keeps its settings on the node where you can see them. This one hides them in an object built elsewhere - a win when the recipe repeats across many branches (prompt variations, per-frame or per-segment generation, A/B tests), and a pointless extra hop when you have exactly one sampler. Reach for it the moment "I want the exact same steps/cfg/sampler everywhere" is your sentence.
The inputs that matter:
config(SAMPLER_CONFIG): the recipe. Everything except conditioning and denoise comes from here.positive/negative: your conditioning, same as any KSampler.overwrite_denoise+denoise: the one knob this node can re-decide. Withoverwrite_denoiseoff (the default), the config's denoise wins and the localdenoisefield is ignored - people forget this and wonder why their img2img value isn't being used. Flip it on to override per call.- Optional
modelandlatent_image: local overrides. Wire one and it takes precedence over the config's copy, without mutating the shared object - the clean way to reuse one recipe across different checkpoints or init latents.
Outputs: LATENT (the denoised latent, ready for a VAE Decode or another sampler) and IMAGE - a VAE-decoded image, produced only if the config was built with a VAE wired in. This pack's config node makes the VAE socket required, so in practice you'll get it; if IMAGE ever comes back empty, that's the first thing to check.
Mechanically it's a wrapper: the node calls common_ksampler - the same function ComfyUI's own KSampler calls - with the config's values, clears the noise_mask on the output latent, and decodes via the config's VAE. There's no new sampler algorithm in here, and no magic. Which is the honest takeaway: if you need genuinely novel sampler behavior, this isn't the node - that's RES4LYF territory. This one is purely about tidying up repetition.
Install
Same for every node in this pack. ComfyUI Manager → Custom Nodes → search "ComfyUI-AharaNodes" → Install → restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/chris-arsenault/ComfyUI-AharaNodes
# then restart ComfyUI
No requirements.txt, no model downloads. Registered with the Comfy Registry.
Troubleshooting
IMAGEoutput is empty/None → the config's VAE wasn't set. Check what fed the config.- Local
denoiseignored →overwrite_denoiseis off, which is the default. Intentional. - All six nodes missing from the menu → the pack failed to import. Its
frame_segmenter.pyimportsoauthlibandsympyat load time (both unused);pip install oauthlib sympyinto ComfyUI's Python fixes it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| config | SAMPLER_CONFIG | — | |
| positive | CONDITIONING | The conditioning describing the attributes you want to include in the image. | |
| negative | CONDITIONING | The conditioning describing the attributes you want to exclude from the image. | |
| overwrite_denoise | BOOLEAN | false | — |
| denoise | FLOAT | 1.000–1 | The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
| modelopt | MODEL | The model used for denoising the input latent. | |
| latent_imageopt | LATENT | The latent image to denoise. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |
| IMAGE | IMAGE | — |