H3 Flight Recorder Start (alpha)
The front half of the flight recorder that calibrates your cost estimates
- anything
- anything
Pure instrumentation, and the simplest node in this batch to understand. Drop H3 Record Start in front of an expensive node, H3 Record Stop after it, and together they append one local JSON line per render - work units, resolution, model tag, seconds per step, torch peak bytes - to a flight-recorder file that the timeline surface's price meter calibrates from. That's what makes H3 Plan Estimate's seconds output real instead of a guess: it's your box, your stack, your recorded numbers.
How it works
H3RecordStart is the front half. It resets the torch peak counters, and it passes its input through untouched - the anything input and output are the same wire, so the node sits inline without disturbing the graph. Its one real input is key (default default), which names the recording so Record Stop on the other side matches it. There's also an optional log_path: if you point it at ComfyUI's log file, it notes its size now, so the streamed flag on the recorded line can only be read from lines this run actually wrote - a small honesty measure against stale log reads.
Inputs:
anything- any-type passthrough.key- the recording's name.log_path- optional; ComfyUI's log file.
Output: anything, unchanged.
The pair together is a classic plumbing pattern - a pass-through pair bracketing a region of the graph, exactly the shape this KB's plumbing notes describe for measurement wrappers. The node itself touches nothing downstream; it only records.
Why you'd bother
Because every cost estimate in this pack that claims to know your box comes from these files. The flight recorder defaults to /root/.cache/mainodes/flight_recorder.jsonl (that's the path H3RecordStop writes, and what H3 Plan Estimate reads). A few renders recorded, and the timeline's price meter stops giving you "-1" and starts giving you minutes you can trust. If you run the timeline surface or the plan-minting workflow at all, this is the calibration you're supposed to set up first.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes
or ComfyUI Manager → ComfyUI-MAINodes, restart. Category latent/minimax/timeline.
Common gotchas
The pair only records if both halves are in the graph and share a key - a Start with no Stop writes nothing. It's local-file only, nothing phones home, but that also means a fresh machine (or a different recorder_path) has an empty recorder until you run a couple of renders. That's not a bug; it's the calibration being yours.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| anything | * | — | |
| key | STRING | default | — |
| log_pathopt | STRING | ComfyUI's log file, if you have one. Its size is noted NOW so the streamed flag can only be read from lines this run wrote |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| anything | * | — |