Nodes/Polyhedron Suite/⬡ Polyhedron Reference Board
ComfyUI Node

⬡ Polyhedron Reference Board

MiniMax H3 reference video has 15 slots — don't manage them with loose wires

By PolyhedronAI·Created 4 months ago·Updated 4 days ago· 4
⬡ Polyhedron Reference Board
    • refs
    • definitions
    • info
    ◄board[]►

    MiniMax H3 is the 33B omni-modal model that treats text, image, video and audio as one context and generates a 4–15 second clip with synced stereo audio in a single pass. For a reference-to-video graph that means a lot can go in the front door: up to 9 images, 3 videos and 3 audios, each video optionally dragging its own soundtrack along. Wire that by hand and you get eighteen wires, a prompt full of <Picture 4> and <Audio 2>, and a graph that breaks the moment you reorder anything - the numbers are positional, and your prompt is written in them.

    ⬡ Polyhedron Reference Board puts those references on one panel as tiles, gives each one a name, and lets you write @fox in the prompt instead of a slot number.

    What it is

    A toolbar, a live count against H3's 9/3/3 limits, a drop zone, and a card per reference carrying a thumbnail, an @tag, a role, a description, a retention marker and - for images - a megapixel budget. Videos play while your pointer is on them; audio gets a play button.

    The node's only input is board, a multiline STRING holding the whole board as JSON. The author's tooltip is blunt: "The board's state (JSON), edited by the tiles above - not by hand." Leave it alone, edit the tiles.

    Files come in through ComfyUI's own /upload/image route into input/pls_board, or by pointing at any file already in your input folder. Then three outputs:

    • refs (PLS_REFS) - the loaded media plus their tags. Wire it into Polyhedron MiniMax Reference's refs socket. That node fills its free slots in board order and learns the tags, so @fox resolves in the prompt with no tags line at all.
    • definitions (STRING) - a draft of the official subject_definitions and retention_analysis lines, in @tag form, ready to paste or wire into a text-encode node's external text input.
    • info (STRING) - what got loaded, with sizes and durations. Hang a Show Text on it when a reference looks wrong.

    The fields that matter

    The tag is the whole point. It has to be a real name - letters, digits, underscores, not starting with a digit - and it can't be a slot name like image_2, because that's the ambiguity you came here to escape. Duplicates are refused, and so is a @fox_sound that collides with another tile, because selecting own sound on a video quietly creates a companion tag named after it.

    The role narrows the description the draft writes. Images get subject, scene, style, first frame, last frame, keyframe, storyboard; videos continuation, motion, structure, edit source; audio voice, music, ambience, sound effect. Pick one and the draft says "<Subject 1> is …, as shown in @fox" instead of a flat list. Descriptive, not wiring - a "first frame" role writes a phrase; it doesn't pin frame 0 of your output.

    Retention is the marker H3's prompt format uses, per-kind: fully_preserved, partially_preserved, attribute_transfer, weak_reference for visuals; fully_copy, partially_copy, reference, weak_reference for audio. Mildly bureaucratic, genuinely useful - it's the difference between "keep this face exactly" and "borrow the lighting".

    The megapixel budget, images only, is the lever with a cost attached. Zero means "follow the Reference node's global ref_image_size rule"; a number here overrides it for that tile, because a face and a backdrop rarely deserve the same token budget - and reference tokens ride through every sampling step, so a generous budget is paid on every step of the run.

    Installing it

    One install covers the whole Polyhedron Suite, board included. ComfyUI Manager, search "Polyhedron Suite" - the package id is still polyhedron-lora-stack, so an existing install updates in place. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
    # restart ComfyUI
    

    Dependencies: none. The board loads images with Pillow, which ships with ComfyUI; the pack's requirements.txt lists it only for an unrelated optional CLI. Video references decode through the pack's shared clip helper, audio through the path ComfyUI's own audio loader uses. Nothing extra to pip install, no model download.

    Where it bites

    Your files have to be files. The board reads from disk in ComfyUI's input folder - that's why the only input is the JSON. An image coming out of an upscaler in the graph can't be a tile; you'd Save it and add the file to the board. Baffling for a minute, and the biggest mismatch with how the rest of the graph works.

    A wired slot stays the wire's. The Reference node only fills free slots, in board order. Wire image_1 and image_2 by hand and the board's first tile lands at image_3. The tags handle it - that's the indirection they're for - but skip them and write <Picture 1> in your prompt and the numbering won't be the one you see on the board.

    It refuses by name, which is the good kind of stubborn. A duplicate tag, a slot-name tag, a role or retention value outside the list, more than 9 images, a file that's since been deleted, a tag that's also in the Reference node's tags line, a video asked for its own soundtrack when the file has no audio track - each stops the run with a message naming the tile.

    Swapping a file in pls_board re-runs the node, since each file's size and mtime are part of its change check. And worth knowing why this shape exists at all: reference images are where appearance control actually lives on a 2026 base, now that the old adapter stack stopped at SDXL. H3 is that workflow at scale.

    CategoryPolyhedron/Cine

    Inputs (1)

    NameTypeDefaultDescription
    boardSTRING[]The board's state (JSON), edited by the tiles above -- not by hand.

    Outputs (3)

    NameTypeDescription
    refsPLS_REFS—
    definitionsSTRING—
    infoSTRING—