Nodes/ComfyUI-MAINodes/H3 Timeline Render (alpha)
ComfyUI Node

H3 Timeline Render (alpha)

Compile a plan into a legal graph, and price it before you queue

By matlowai·Created 17 days ago·Updated about 16 hours ago· 112
H3 Timeline Render (alpha)
    • graph_path
    • launch_command
    • report
    plan_path
    graph_path
    port8189
    recorder_path/root/.cache/mainodes/flight_recorder.jsonl

    H3 Timeline Render is phase 2 of the MAINodes timeline surface: it takes a plan document and turns it into a legal, runnable H3 graph - then, pointedly, it refuses to run it for you. The design choice is worth understanding before you use it, because it's the part that surprises people. The node emits the minted graph's path and the exact launch command rather than executing in place. Launching belongs to your own queue script (queue_scene.py, in the pack's ecosystem), which guards output-prefix collisions and refuses partial graphs. Compile here, launch there.

    How it works

    The only required input is plan_path - a plan.json, whether it's yours, the oracle's via H3 Timeline Analyze, or one somebody posted. If the plan was edited since it was last compiled, the node recompiles: the compiled graph is a cache keyed to the plan's revision, never a second source of truth. That's the invariant that keeps the "source of truth" promise honest - you can't have a stale graph silently diverging from a newer plan.

    The optional inputs are where the pricing lives:

    • graph_path - where the minted .api.json lands (empty = workflows/<plan name>.api.json).
    • port (default 8189) - the ComfyUI instance the launch line targets, and whose /system_stats the VRAM-fit line reads.
    • recorder_path - the flight-recorder jsonl (default /root/.cache/mainodes/flight_recorder.jsonl). This is the interesting one: layer (b) of the price meter calibrates from your own runs only, so the longer you use it, the more honest the estimate gets.

    Outputs: graph_path, launch_command (the exact line to run), and report (the price - what the compiled graph costs before you spend a single step).

    Where it fits

    Pair it with H3 Timeline Analyze, which writes the plan (and can auto-compile); Render exists for the cases where you want to see and edit the plan first, or where the plan came from outside the analyze node entirely. The separation is deliberate: Analyze proposes, Render compiles, your queue script executes. It makes the pipeline auditable - the plan is human-readable JSON, the graph is deterministic output, and the price is computed before anyone spends GPU time.

    Install

    Ships with matlowai/ComfyUI-MAINodes:

    cd ComfyUI/custom_nodes
    git clone https://github.com/matlowai/ComfyUI-MAINodes
    

    Restart, under latent/minimax/timeline. No extra Python deps; you need MiniMax-H3 weights and ComfyUI's H3 support (check the licence's US/EU/UK/Korea carve-outs).

    The thing to internalize: "compiles but doesn't run" isn't a missing feature, it's the contract. If you're used to nodes that execute everything, the first time Render hands you a command line instead of a render it feels broken. It's not - wire launch_command into your queue script (or run it yourself) and the graph will do exactly what the plan said, which is the entire point of the document-driven design.

    Categorylatent/minimax/timeline

    Inputs (4)

    NameTypeDefaultDescription
    plan_pathSTRING
    graph_pathoptSTRINGempty = workflows/<plan name>.api.json
    portoptINT81898188–8199instance the launch line targets, and whose /system_stats the VRAM fit line reads
    recorder_pathoptSTRING/root/.cache/mainodes/flight_recorder.jsonlflight-recorder jsonl; layer (b) of the price meter calibrates from YOUR runs only

    Outputs (3)

    NameTypeDescription
    graph_pathSTRING
    launch_commandSTRING
    reportSTRING