⚗ Alchemica KSampler Flex (any sampler + scheduler)
What Alchemica KSampler Flex is actually for
- model
- positive
- latent_image
- negative
- vae
- refiner_model
- opts
- latent
- sigma_plot
- report
- image
The all-in-one Alchemica KSampler gives you the pack's sampler and schedule and no choices. Flex gives you the same machinery with the front door open: pick any solver ComfyUI has (or any other custom pack has added), pair it with the calibrated schedule measured on your checkpoint, or with any of ComfyUI's schedulers.
It's the sampler in the pack's recommended starter workflow, so this isn't the exotic one. It's the default one.
The three-way split
The interesting bit is that sampler_name decides what the other widgets even mean.
alchemica_euler, alchemica_euler_2m, alchemica_heun - the pack's own loop, where detail, variety and restart_steps do something. detail adds micro-relief to skin and fabric (0.12 validated; above 0.2 coloured speckles come back). variety is ancestral noise during composition, and it has a documented trap: with a strong LoRA, above ~0.3 you can get wet-skin droplet artifacts - drop to 0.15–0.2. restart_steps re-noises and redoes the tail of the trajectory with extra steps, from the profile's restart sigma.
Any other solver - euler_flow, res_multistep, dpmpp_2m, whatever you have installed. It runs as ComfyUI runs it, and detail, variety and restart_steps are ignored (the interface hides them, which is a genuinely nice touch).
Schedulers - alchemica_calibrated is the step spacing measured on your checkpoint; without a profile it falls back to alchemica_dual. alchemica_dual puts extra steps in two lobes (composition at high sigma, detail at low). flux_shift and linear_flow are fixed curves, and then it's ComfyUI's own list: simple, beta, bong_tangent, all of it.
The profile widget feeds alchemica_calibrated and every -1 value, with any sampler or scheduler. So you can run euler_flow + beta and still have the pack fill in the measured hand-off sigma for you.
Widgets worth understanding
steps8,cfg1 - the Krea 2 Turbo numbers. Above CFG 1 a connectednegativegets used.two_stageon,stage1_steps4,redraw-1. Composition at half resolution, refinement at full.contraction0.85,shift0 (the model's own mu; Krea 2's is 1.15).shifthigher = more steps at high noise, lower = more at the end.handoff_k0 = auto - a resolution correction the other samplers don't have. The hand-off sigma in your profile was measured at full resolution, but stage 1 ran at half, where that sigma means less. Auto converts it (0.87 → 0.770 for a 2× factor), so stage 2 gets a composition as settled as the profile measured.1= off, matching the plain Alchemica KSampler; above 1 = your own explicit factor.calibration-v2is the default here only: step law matched to the solver order (cube root of the third derivative for second-order solvers), smoothing in log-SNR, and half-resolution curves for stage 1. It needs a profile calibrated after 2026-10-10; older profiles get the smoothing only.lowfreq_anchor0 - marked EXPERIMENTAL, off by default, and worth leaving off unless you're chasing the problem it solves. At each stage-2 step it replaces the low frequencies of the model's x0 prediction with those of the upscaled stage-1 image (an idea borrowed from HiFlow, NeurIPS 2025), fading out as sigma falls. It protects composition while stage 2 adds detail. Full strength = 1.degrid2 - note this defaults to 2 here, unlike the other samplers' 0. With avaeconnected, the final decoded image gets the 2-pixel VAE grid removed before it's shown and returned. The latent is never touched.
Outputs: latent, sigma_plot, report, image.
Sanity check worth running once
With every improvement switched off, Flex comes out pixel-identical to the all-in-one KSampler in balanced mode - the authors measured a difference of 0. So when a Flex run looks worse than your old workflow, it's a widget you changed, not the node. That's unusually nice, and it makes debugging a matter of turning things off one at a time.
Installing
# ComfyUI Manager: search "AlchemicaSampler"
cd ComfyUI/custom_nodes && git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
ComfyUI 0.36+, no pip dependencies. Restart the server. Solver and scheduler lists are read live, so anything another pack registers shows up without a restart of its own.
Common issues
detail and variety do nothing. You're on a non-Alchemica sampler. Switch to one of the alchemica_* three, or leave them alone - they're ignored by design, not broken.
The negative is ignored. cfg is at 1. That's the distilled model behaving as designed; use NAG instead of CFG if you need a negative.
Everything is a bit slow with lowfreq_anchor on. It costs model work per stage-2 step. Turn it off to confirm it's what you're paying for.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| latent_image | LATENT | At the final resolution. In two-stage mode the first stage works at half of it | |
| seed | INT | 00–18446744073709550000 | — |
| sampler_name | COMBO | alchemica_euler_2m | alchemica_* = the Alchemica loop: 'detail', 'variety' and 'restart' work. Any other = that ComfyUI sampler as it is (those three are ignored) |
| scheduler | COMBO | alchemica_calibrated | alchemica_calibrated = the step spacing measured on YOUR checkpoint (needs a profile; without one it uses alchemica_dual). The others are fixed curves: Alchemica ones first, then every ComfyUI scheduler |
| steps | INT | 81–100 | Single stage: all the steps. Two stages: the steps of stage 2 (full resolution) |
| cfg | FLOAT | 1.000–20 | 1.0 = Krea 2 Turbo (negative skipped, no extra cost). Above 1 the 'negative' input is used, if connected |
| profile | COMBO | (auto) recognises the checkpoint and uses its calibration profile. It feeds alchemica_calibrated and every -1 value, with ANY sampler or scheduler | |
| denoise | FLOAT | 1.000–1 | 1.0 = from scratch. Below 1 = img2img (two stages off) |
| two_stage | BOOLEAN | true | Composes at half resolution, refines at full resolution. Recommended above ~1.5 MP |
| stage1_steps | INT | 41–50 | Two stages: steps at half resolution (composition) |
| redraw | FLOAT | -1.00-1–0.95 | Two stages: sigma where stage 2 takes over. -1 = from the profile. Higher = more new detail, but the composition may change |
| detail | FLOAT | 0.120–0.25 | alchemica_* only. Micro-relief of skin and fabric; above 0.2 coloured speckles come back |
| variety | FLOAT | 0.600–1.2 | alchemica_* only. Ancestral noise during composition. 0 = deterministic. With strong LoRAs lower it to 0.15-0.2 if you see wet-skin droplets |
| restart_steps | INT | 20–10 | alchemica_* only. Extra steps that re-noise and redo the end (sigma from the profile). 0 = off |
| contraction | FLOAT | 0.850.3–1.2 | Scale of the initial noise. 1 = standard ComfyUI noise; 0.85 = cleaner shadows |
| shift | FLOAT | 0.000–10 | Flow shift of the schedule. 0 = the model's own. Higher = more steps at high noise (composition), lower = more at the end (detail) |
| handoff_k | FLOAT | 0.000–4 | Two stages: resolution correction of the hand-off. 0 = auto: stage 1 stops at the half-resolution sigma equivalent to 'redraw' at full resolution (SD3 rule), so stage 2 gets a composition as settled as the profile measured. 1 = off (same as ⚗ Alchemica KSampler). >1 = explicit factor |
| calibration | COMBO | How alchemica_calibrated turns the profile into steps. v2: step law matched to the solver order (cube root of the 3rd derivative for 2nd-order solvers), smoothing in log-SNR, own curves for stage 1. Profiles calibrated before 2026-10-10 get only the smoothing: re-run the Calibration to measure the rest | |
| lowfreq_anchor | FLOAT | 0.000–1 | Two stages, alchemica_* samplers: stage 2 keeps the LOW frequencies (composition, colour) of the upscaled stage-1 image, fading out as sigma falls (HiFlow, NeurIPS 2025). Protects the composition while stage 2 adds detail. EXPERIMENTAL: 0 = off (default, same as ⚗ Alchemica KSampler), 1 = full |
| negativeopt | CONDITIONING | Used only with cfg above 1 | |
| vaeopt | VAE | Optional: the final image is decoded and SHOWN in this node, and returned on the 'image' output (like the Efficiency KSampler) | |
| preview_methodopt | COMBO | latent2rgb (fast) | Live preview while sampling. latent2rgb = instant, a bit soft; taesd = sharper (needs the TAE model in models/vae_approx, otherwise latent2rgb); 'ComfyUI setting' = whatever ComfyUI is set to (often none) |
| degridopt | FLOAT | 2.00–10 | Only with a VAE connected: removes the faint 2-pixel line grid of Krea 2's VAE from the image shown and returned here (the latent is untouched). Max correction in grey levels: 2 = recommended, 0 = off |
| refiner_modelopt | MODEL | Optional: stage 2 with another model (requires two stages) | |
| optsopt | ALCHEMICA_OPTS | For tinkerers: Alchemica option nodes override everything set here |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| sigma_plot | IMAGE | — |
| report | STRING | — |
| image | IMAGE | — |