kitchen
Check GPU capabilities, find bottlenecks in a ComfyUI workflow, and apply the recommended faster path with before/after proof.
Instructions
See what comfy-kitchen can do on this GPU, find where a graph is leaving it on the table, and apply the faster path. Driven by action:
action:"status" — kitchen version, backends (hip/cuda/triton/eager), INT8 attention, GPU fp8/NVFP4/MXFP8, launch flags (--use-ck-attention, --enable-triton-backend, --fast fp8_matrix_mult). Local gets log + /system_stats + an import probe when COMFYUI_PATH is set; remote gets log + /system_stats only and reports model.quant / the probe as unknown. A failed probe is unknown, never a no.
action:"assess" — walk the workflow JSON's UNETLoaders and emit a recommendation only when every fact it needs is known: (1) weight_dtype default on a bf16 UNETLoader + GPU fp8 + kitchen present → fp8_e4m3fn_fast (widget, no restart); (2) no --use-sage-attention, sageattention not installed, kitchen INT8 available → --use-ck-attention (restart, confirm); (3) Blackwell + local NVFP4 sibling → model swap; (4) ROCm + triton ≥ 3.7 + kitchen, triton backend off → --enable-triton-backend. Pass
workflow(API or UI JSON). For the open canvas use panel_kitchen.action:"apply" — apply one recommendation_id from assess. Widget edits are reversible and do not need confirm. Flags and downloads need
confirm: true. Flag apply names the launch flag; restart_comfyui replays the previous argv and does not inject a new one. Proof (before/after s/it, peak VRAM, output not black) is the panel_kitchen apply path.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Which kitchen operation. "status" takes no other parameters; "assess" takes `workflow`; "apply" takes `recommendation_id` and `confirm` for restarts/downloads. | |
| confirm | No | action:"apply" — required true for anything that restarts or downloads. Widget edits do not need it. | |
| workflow | No | action:"assess" / "apply" — workflow JSON (API-format {id:{class_type,inputs}} or UI-format {nodes,links}), as a string or object. | |
| recommendation_id | No | action:"apply" — id from assess (e.g. "fp8_unet_fast:12" or "ck_attention"). |