TJS Custom Advanced (SamplerCustomAdvanced + Endpoint)
SamplerCustomAdvanced with an early exit
- noise
- guider
- sampler
- sigmas
- latent_image
- latent_x0
- latent_xt
- k_star
- nfe_used
- nfe_saving_pct
- sigma_at_exit
TJSCustomAdvanced is the power-user member of the hdfhssg/ComfyUI_TJS pack: a faithful clone of ComfyUI's built-in SamplerCustomAdvanced with one extra input, early_exit_gamma, that enables Truncated Jump Sampling. If you know what a guider and a noise object are, you already know how to use this node - it's stock SamplerCustomAdvanced plus an early exit.
Why you'd pick this over TJSCustom
Both nodes live in the custom-sampler paradigm, but they split the flexibility question. TJSCustom hands you model, cfg, and conditioning and builds the CFG guider for you internally - simpler, less to wire. TJSCustomAdvanced makes you supply the plumbing yourself, and that's the point:
noise- a noise source object, e.g.RandomNoiseguider- the guidance object, and this is the real flex: it accepts any guider type, not just CFG.CFGGuider,BasicGuider,DualCFGGuiderall worksampler- a sampler object fromKSamplerSelectsigmas- the schedule fromBasicSchedulerlatent_imageand theearly_exit_gammadial (default0.6)
So if your workflow already runs a non-CFG guider or a custom noise source, this is the TJS node that slots in without forcing you back to the CFG pipeline.
How it works
Identical core to the other three nodes: k* = ceil(gamma * (len(sigmas) - 1)). The schedule is truncated at sigma[k*], a 0 is appended so the final step decodes the model's endpoint prediction (denoised / x0) inside the same guider.sample() call, and a callback captures both that endpoint and the raw exit state in one pass. That single-call design matters - an earlier version did the endpoint decode as a separate sampling call and the extra pipeline overhead quietly ate the speed win. gamma = 1.0 runs the full schedule, equivalent to stock.
Outputs and a worked layout
Outputs are the pack-wide six: latent_x0 → VAE Decode, latent_xt (the noisy exit latent), and the diagnostics k_star, nfe_used, nfe_saving_pct, sigma_at_exit. A typical graph, straight from the node's docstring:
BasicScheduler → sigmas
CFGGuider → guider
KSamplerSelect → sampler
RandomNoise → noise
...all into TJSCustomAdvanced, then latent_x0 out to the decoder. 30 sigmas at gamma=0.6 → k*=18, 19 NFE, ~37% saved.
Install
No dependencies, no model downloads:
cd ComfyUI/custom_nodes
git clone https://github.com/hdfhssg/ComfyUI_TJS
Or search "ComfyUI_TJS" in Manager, then restart. Nodes appear under sampling/TJS.
The fine print
This is a brand-new research pack - July 2026 commits, zero community footprint, and the arXiv paper it cites is dated 2026. The tested-model list (SDXL, SD3.5M, Z-Image-Turbo, Anima, Krea2, LTX-2B, FLUX.2-Klein FP8, Qwen-Image-Edit) is reassuringly broad across diffusion and flow wrappers, but there's no crowd-sourced tuning lore yet. Start at gamma=0.6, compare against stock SamplerCustomAdvanced on the same seed, and expect quality to slide below ~0.4. One last tip: the source guards against gamma=1.0 and k* past the schedule end, so you can't accidentally waste an NFE on a no-op step - a small courtesy not every early pack bothers with.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| noise | NOISE | Noise source (e.g. Random Noise). | |
| guider | GUIDER | Guider object (e.g. CFGGuider, BasicGuider). | |
| sampler | SAMPLER | Sampler object (e.g. from KSamplerSelect). | |
| sigmas | SIGMAS | Sigma schedule (e.g. from BasicScheduler). | |
| latent_image | LATENT | — | |
| early_exit_gamma | FLOAT | 0.600.05–1 | TJS early-exit ratio. k* = ceil(gamma * steps). |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| latent_x0 | LATENT | — |
| latent_xt | LATENT | — |
| k_star | INT | — |
| nfe_used | INT | — |
| nfe_saving_pct | FLOAT | — |
| sigma_at_exit | FLOAT | — |