LeapTalk Doctor
Check the runtime before you blame the node
- report
A pre-flight check with no generation attached
Most packs give you a loader and a prayer. LeapTalk is a genuinely fussy setup - a separate Python environment, a pinned upstream checkout, six model files at pinned revisions, an ffmpeg binary that has to be a real ffmpeg - so the author shipped a node whose entire job is to tell you which of those is wrong before you spend a job's worth of time finding out.
LeapTalk Doctor's description says it plainly: diagnose a LeapTalk runtime without generating a video. It's an output node, so it always runs.
What it checks
The Doctor runs runtime/leaptalk_doctor.py with your runtime's Python and collects named checks, each ok, warn or fail, with the worst one becoming the overall verdict:
- upstream_files - hashes the 14 pinned files of the LeapTalk checkout against commit
5d8fef8. Line endings are normalised, so a Windows checkout withcore.autocrlf=truedoesn't get punished. Edit or upgrade that checkout and this fails, by design; the runner refuses to use a modified upstream. - model:… - one check per model file, comparing size against the pinned value ('size 6030864656, expected …' style when it's an incomplete download).
VAE_Wan/Wan2.1_VAE.pthis reported aswarnwhen missing because it's only needed fordecoder = wan_vaeon Generate. - python_packages - imports the runtime venv's key packages (torch, diffusers, transformers, peft, accelerate, safetensors and friends) and reports missing ones by name, or dumps the versions.
- cuda - is CUDA available at all, what card, what compute capability, and whether the installed torch was actually built for that architecture. On a 5090 that last bit is the sm_120 question, and the check answers it directly instead of leaving you to infer it from a crash.
- sdpa_probe - runs a real bf16
scaled_dot_product_attentionon the GPU and verifies the result is finite. This catches "CUDA reports fine but attention is garbage" cases that a device query sails past. - attention_backend - which one LeapTalk will pick: sageattention, flash_attn_3, flash_attn_2, or plain PyTorch SDPA, in that order. Both flash-attn and SageAttention are optional speed-ups; the published results used neither.
- ffmpeg - runs
-versionand-encodersand confirms libx264 and aac are there, since the runtime encodes H.264 and muxes AAC.
No weights get loaded and nothing generates, but it does start the runtime Python, so expect a torch import's worth of time rather than instant. verify_sha256 is the exception: hashing ~7 GB of model files takes a while.
The two inputs
- runtime_id - the same enum as the other nodes, drawn from
ComfyUI/user/leaptalk.runtimes.json. If nothing is registered you get(no runtime configured)and the report fails fast with the config path and an explanation. - verify_sha256 - off by default. Size checks catch most bad downloads; flip this on when you specifically suspect a truncated or corrupted file, or after moving weights between drives. It reads every model file.
The output
report is a JSON string, and status of the run is also mirrored into the node's own text panel as a short human-readable block, one line per check. Wire it into a Show Text node if you want to keep it; it also carries upstream_commit, the runtime's Python version and how long the check took. The node always re-executes - it overrides caching deliberately - so you can hit Queue again after a fix and get a fresh answer instead of a cached "ok".
Installing, if you got here first
The node ships with the rest of the pack, and the pack adds nothing to ComfyUI's Python:
cd ComfyUI/custom_nodes
git clone https://github.com/hiroki-abe-58/ComfyUI-LeapTalk
But there's nothing to diagnose until the runtime exists: a separate Python 3.12 venv with torch 2.7.1+cu128 and runtime/requirements-runtime.txt, the pinned LeapTalk checkout, the pinned weights, ffmpeg, and an entry in ComfyUI/user/leaptalk.runtimes.json. Restart ComfyUI and run the Doctor - step 3 of the README's install, before you touch Generate.
Reading failures
upstream_files fail- the checkout isn't at5d8fef8, or you edited it (including "helpful" fixes to the upstream code).model:… size …, expected …- incomplete download. Re-download with the pinned revision rather than re-running the same command and hoping.python_packages fail … missing: …- the config is pointing at the wrong interpreter, or the requirements install never finished.cuda fail: CUDA not available- CPU-only torch in the runtime venv. Reinstall from the cu128 index.ffmpeg fail- usually a stub or a build without libx264/aac.imageio-ffmpeg0.6.0 ships a working 7.1 binary you can copy out and point the config at.
If the Doctor is green and Generate still fails, the problem is downstream of setup - head for the job report rather than reinstalling anything.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| runtime_id | COMBO | 1 options: (no runtime configured) | |
| verify_sha256 | BOOLEAN | false | Hash every model file (about 7 GB of reads). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| report | STRING | — |