🔗 Link workflow — recommended

- Live editing. The stage references the workflow file itself, not a copy. Open the workflow in ComfyUI, edit it, hit save — ComfyTV picks up the change automatically on the next Run. No re-export, no re-import, no restart.
- One source of truth. You keep organizing your workflows in ComfyUI’s library like you always did; ComfyTV just points at them.
- Linked entries show a Linked badge in the dialog, where you can also Unlink them again (this removes the entry and its bindings, not the file).
⬆ Upload workflow
Next to the link button, ⬆ Upload workflow imports a.json file from disk. The workflow is copied into ComfyTV’s library and appears in the dropdown right away — no restart. Use this for a file someone sent you; if it’s a workflow you’ll keep iterating on, prefer linking it instead.
Drop files into the library folder
ComfyTV’s workflow library lives in ComfyUI’s user directory:text, image, shot-images, video, audio, speech, storyboard, panorama, timeline, upscale, outpaint, inpaint, erase, image-edit, multiangle, cutout, multiview, sequence, audio-vocal, audio-bg, model, split-part, material-estimate, speech-to-text.
Each shipped kind has a README.md next to its JSONs documenting the run-time inputs and the nodes a workflow typically needs. Read the relevant per-kind README first:
workflows/audio/README.mdworkflows/image/README.mdworkflows/image-edit/README.mdworkflows/inpaint/README.mdworkflows/outpaint/README.mdworkflows/upscale/README.mdworkflows/cutout/README.mdworkflows/erase/README.mdworkflows/multiangle/README.mdworkflows/multiview/README.mdworkflows/sequence/README.mdworkflows/panorama/README.mdworkflows/speech/README.mdworkflows/text/README.mdworkflows/video/README.mdworkflows/shot-images/README.mdworkflows/storyboard/README.md
Wiring stage inputs
Once the workflow is in (linked, uploaded, or dropped), you usually need to tell ComfyTV which node receives the stage’s prompt, whichLoadImage takes the upstream image, where the seed comes from, etc.
Use the sidebar: click a stage on the canvas, fill in each widget in the ComfyTV sidebar on the left. Changes apply immediately, no restart. See sidebar-config-editor.md for the editor UI.
To share with someone else: the sidebar has an ⇩ Export preset.json button at the bottom. It packages the current bindings as <name>_preset.json. Ship that alongside the workflow JSON; on the recipient’s first load the bindings apply automatically.
You usually don’t write_preset.jsonby hand — configure in the sidebar, export to share. If you want the raw JSON shape, look at the shipped examples:workflows/inpaint/flux-fill-inpaint_preset.json,workflows/video/local-ltx-2.3-t2v_preset.json.
Updating a workflow
Linked workflow: just edit and save it in ComfyUI. ComfyTV notices the file changed and re-reads it on the next Run — nothing else to do. Uploaded / dropped workflow: overwrite the JSON underuser/comfytv/workflows/<kind>/. ComfyTV detects the file modification time has changed and re-reads it the next time a stage uses it.
Either way, bindings keep working as long as the node IDs they reference still exist. If you renamed or removed a node, the runner errors:
inputs references missing workflow node "X" — did the API workflow get re-exported with different node ids?
Open the sidebar and update the binding to point at the new ID.