ComfyUI Extension: ComfyUI-SaveIntermediates
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Save and stream intermediate sampling steps during diffusion. Perfect for showing generation progress on your frontend instead of a loading spinner.
Looking for a different extension?
Custom Nodes (0)
README
ComfyUI-SaveIntermediates
Save and stream intermediate sampling steps during diffusion. Perfect for showing generation progress on your frontend instead of a loading spinner.
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/DanielBartolic/ComfyUI-SaveIntermediates.git
Usage
For Serverless/API Streaming
Connect the node between your model loader and sampler:
Load Checkpoint → [Save Intermediate Steps] → ClownSampler → ...
↓
(outputs to progress folder)
Your frontend can poll progress.json to get:
- Current step / total steps
- Progress percentage
- Path to latest image
- Optional base64 encoded image
Workflow with Image Output
Load Checkpoint → [Save Intermediate Steps] → ClownSampler → [Get Intermediate Images] → Preview/Save
↓
(latent output)
Nodes
Save Intermediate Steps
Wraps model and saves TAESD previews at each step.
Inputs:
model- From your model loadersteps- Total sampling steps (for progress calculation)job_id- Unique ID for this job (creates subfolder)output_folder- Base folder name (default: "progress")filename_prefix- Prefix for files (default: "step")format- jpeg or pnginclude_base64- Include base64 in progress.json
Output:
model- Pass to your sampler
Save Intermediate Steps (Advanced)
Same as above with filtering options:
save_every_n- Save every Nth stepstart_step/end_step- Range of steps to save
Get Intermediate Images
Collects all saved intermediates as IMAGE batch after sampling.
Inputs:
latent- Connect from sampler (ensures this runs after)job_id- Match the job_id used in Save nodeoutput_folder- Match the folder used
Output:
images- Batch of all intermediate images
Output Structure
ComfyUI/output/progress/{job_id}/
├── progress.json # Poll this for status
├── latest.jpeg # Always the most recent step
├── step_0000.jpeg
├── step_0001.jpeg
├── step_0002.jpeg
...
progress.json Format
{
"job_id": "abc123",
"status": "generating",
"current_step": 15,
"total_steps": 20,
"progress_percent": 75,
"latest_image": "step_0015.jpeg",
"timestamp": 1704567890.123,
"image_base64": "..." // if include_base64 enabled
}
Frontend Integration Example
// Poll for progress
async function pollProgress(jobId) {
const response = await fetch(`/output/progress/${jobId}/progress.json`);
const data = await response.json();
if (data.status === 'generating') {
// Show preview image
const imgUrl = `/output/progress/${jobId}/${data.latest_image}`;
updatePreview(imgUrl);
updateProgressBar(data.progress_percent);
}
if (data.status !== 'completed') {
setTimeout(() => pollProgress(jobId), 500);
}
}
License
MIT
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.