Nodes/MKRShift_Nodes/Addon Workflow Interface
ComfyUI Node

Addon Workflow Interface

Declare what your host addon should show, instead of guessing

By criskb·Created 7 months ago·Updated 5 months ago· 0
Addon Workflow Interface
    • workflow_interface_json
    • field_keys_csv
    • summary_json
    interface_nameMKRShift Workflow
    workflow_idmkrshift-workflow
    host_familyblender
    fields_json[]
    output_targets_json{}
    notes

    Most of the MKRShift addon nodes are about moving data between ComfyUI and a host app. Addon Workflow Interface is about a different, fuzzier problem: describing what that workflow expects from the host. It's a spec node - you declare an interface name, which host family it's for, and the list of fields the workflow needs, and it produces a structured JSON contract that the host-side addon can read to build its own UI. Think of it as the API contract for a human-facing panel, written out in the graph instead of living in an undocumented script.

    It sits in the addon/workflow lane of MKRShift Nodes, Cris K B's production pack, and it's squarely aimed at people building addon scaffolds - the pack ships per-app addon projects under addons/ that consume exactly this shape of interface.

    How it works

    The inputs are the contract fields. interface_name and workflow_id are your identifiers - workflow_id is the stable key the addon looks up. host_family is a dropdown covering the eleven supported hosts (generic, blender, touchdesigner, tixl, nuke, photoshop, after_effects, premiere_pro, affinity, fusion360, maya), so the generated interface is tagged for the right app. fields_json is the list of field definitions - you describe each field with its key and metadata (the shared library groups them by a group key, defaulting to "Workflow"), and the node normalizes that into the interface document.

    output_targets_json and notes are the extras: output_targets declares where results should land, and notes is free text for humans. The output does the useful aggregation work - field_keys_csv gives you the ordered list of field keys as a plain comma-joined string, which is exactly the shape a host script wants when iterating fields, and summary_json reports the field count and the distinct groups your fields span.

    Outputs

    • workflow_interface_json - the full interface contract, ready for the addon
    • field_keys_csv - comma-joined field keys for host-side iteration
    • summary_json - name, ID, host, field count, groups, warnings

    Installation

    cd ComfyUI/custom_nodes
    git clone https://github.com/criskb/MKRShift_Nodes
    

    Restart ComfyUI, or use ComfyUI Manager ("MKRShift Nodes"). No pip dependencies - it's JSON construction and validation only.

    Common issues

    The trap is treating this like a runtime node. It builds a document; it doesn't execute anything, and without a host addon that reads the interface JSON, the output is just text sitting in your graph. Pair it with the actual per-app addon scaffolds or you've built documentation. Second, fields_json must be a JSON array - if you paste an object or a stray trailing comma, the parser falls back to empty and your field_keys_csv comes out blank with no loud error, so validate the JSON before wiring it in. And keep field keys stable: the whole point of workflow_id is that host panels and workflow definitions agree on keys across versions. Change a key and every saved host session built on the old interface quietly breaks. It's a planner's node - boring by design, and the reason bigger addon workflows don't collapse the first time the host updates.

    CategoryMKRShift Nodes/Addons/Workflow

    Inputs (6)

    NameTypeDefaultDescription
    interface_nameSTRINGMKRShift Workflow
    workflow_idSTRINGmkrshift-workflow
    host_familyCOMBOblender11 options: generic, blender, touchdesigner, tixl, nuke, photoshop, +5
    fields_jsonSTRING[]
    output_targets_jsonoptSTRING{}
    notesoptSTRING

    Outputs (3)

    NameTypeDescription
    workflow_interface_jsonSTRING
    field_keys_csvSTRING
    summary_jsonSTRING