Nodes/Comfyui-Echo-WM-T8/Echo-WM T8 · Isolated Runtime
ComfyUI Node

Echo-WM T8 · Isolated Runtime

The Echo-WM node that's built to run in a second Python

By T8mars·Created a day ago·Updated about 18 hours ago· 1
Echo-WM T8 · Isolated Runtime
    • runtime
    • runtime_metadata
    echo_wm_root
    python_executable
    model_root
    gpu_index0
    ffmpeg_bin
    refresh_nonce0

    "Echo-WM T8 · Isolated Runtime" does zero generating, and that's the point. It's the node that makes Echo-WM - the JD "open world model" that turns one image plus text plus camera keys into video - safe to run inside ComfyUI at all. If you've ever watched a custom node install a second, newer torch into your environment and silently break every other node you own, you already understand why this pack refuses to import Echo-WM's stack into the ComfyUI process.

    Here's the setup problem, in one paragraph. ComfyUI's custom nodes all import into the same Python environment, and Echo-WM needs its own torch/CUDA build, a bf16 Gemma-3 text encoder, and an LTX-2.3-scale DiT. This pack's requirements.txt is deliberately empty - there is nothing for ComfyUI Manager to pip-install. Instead, the nodes launch echo_wm/inference_wm_causal.py in a separate Python interpreter with an argv list and shell=False, so Echo-WM's torch can't clobber yours. The Runtime node is the gatekeeper for that boundary: it resolves and validates every path before the model ever loads, and it refuses a config that would let the two runtimes collide.

    What you actually fill in

    Three of the six fields are paths, and the node is happy to do the discovery for you if you leave them blank:

    • echo_wm_root - the directory containing inference_wm_causal.py (the upstream echo_wm source tree). Blank falls back to the ECHO_WM_ROOT env var, then to common layouts like a echo_wm/ or runtime/echo-wm/ subfolder of the pack.
    • python_executable - the dedicated Echo-WM Python from your separate conda env. This is the field with teeth: the node compares it to ComfyUI's own sys.executable and raises if you point it at the interpreter ComfyUI is running in. That check is your friend, not an annoyance.
    • model_root - must contain echo-wm-flash.safetensors and a gemma-3/ folder with config.json plus safetensor shards, else it errors before inference.
    • gpu_index - which GPU gets CUDA_VISIBLE_DEVICES, so the child process can't wander onto a card you're using for something else.
    • ffmpeg_bin - optional, and only needed for the action-HUD overlay output (see the Generate node).
    • refresh_nonce - the subtle one. ComfyUI caches node results, so if you fixed your environment and the Runtime node's widgets didn't change, it may hand back the old stale result. Bump this integer to force a fresh validation.

    Point it at a real environment

    # Pack itself - Manager search "Echo-WM T8", or:
    cd ComfyUI/custom_nodes
    git clone https://github.com/T8mars/Comfyui-Echo-WM-T8.git
    # then restart ComfyUI.
    
    # The Echo-WM environment lives OUTSIDE ComfyUI (upstream echo_wm dir):
    conda create -n echo-wm python=3.11 -y && conda activate echo-wm
    pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 \
      --index-url https://download.pytorch.org/whl/cu128
    pip install -r requirements.txt          # from the upstream echo_wm package
    hf auth login
    hf download t8star/Echo-WM-Comfy --local-dir checkpoints   # gated model bundle
    

    The model bundle is gated so you acknowledge the LTX-2 Community License and Gemma terms first - this is academic/research-use-only territory, not a commercial pipeline. Set echo_wm_root, python_executable, and model_root in this node (env vars ECHO_WM_ROOT, ECHO_WM_PYTHON, ECHO_WM_MODEL_ROOT work as fallbacks).

    Outputs

    The runtime output is a typed ECHO_WM_RUNTIME token - wire it into the Causal Flash Generate node's runtime input. The second output, runtime_metadata, is a JSON string showing exactly what got resolved: resolved paths, GPU index, the schema, and the isolation mode (external-python, shell=False). If a run goes wrong, that JSON is the first thing to read.

    The whole design is defensive, which is refreshing. There's no free-form command input, prompts never touch a shell, and cancellation kills the child process tree. It's the most "boring" node in the pack, and it's the one that keeps a genuinely dangerous dependency stack from becoming your problem.

    CategoryEcho-WM T8

    Inputs (6)

    NameTypeDefaultDescription
    echo_wm_rootSTRINGDirectory containing inference_wm_causal.py; blank enables discovery.
    python_executableSTRINGDedicated Echo-WM Python. ComfyUI's interpreter is rejected.
    model_rootSTRINGContains echo-wm-flash.safetensors and gemma-3/.
    gpu_indexINT00–31
    ffmpeg_binSTRINGOptional ffmpeg path, needed only for the action HUD overlay.
    refresh_nonceINT00–2147483647

    Outputs (2)

    NameTypeDescription
    runtimeECHO_WM_RUNTIME
    runtime_metadataSTRING