MiniMax H3 Project Asset Carousel (Tree)
Your H3 References Need a Filing Cabinet, Not Twelve Loader Nodes
- tagged_references
- upscale_model
- project_assets
- references
- reference_fingerprint
- source_timeline
- status
MiniMax H3 is a 33B omni-modal video model that takes text, images, video and audio as one context and generates clips with native stereo sound. It drew one of the strongest launch-day reactions this community has produced - with the usual caveat attached to the weights: a licence that excludes the US, EU, UK and South Korea.
Now the practical problem. A multi-scene H3 production isn't one sampler - it's a Plan, a scene loop, per-scene checkpoints, and references (an identity photo, a motion clip, a song stem) that have to be registered, tagged and named in exactly the right scene prompts. Build that out of loose loader and tag nodes and your graph turns into a subway map.
MiniMax H3 Project Asset Carousel (Tree) is the pack's answer: one node that owns the project's whole media library. It's the "Tree" layout of a Carousel the pack already ships flat - same storage, same sockets, different presentation.
How it works
The node is path-backed. It reads a catalog on disk under input/h3_projects/<run_name>/ and mirrors a recovery copy into output/h3_chains/<run_name>/project_assets/. The workflow JSON holds only compact catalog metadata - media bytes and tensors never get serialized into the graph. At queue time it rebuilds the reference payload from the disk catalog (the widget is UI state, not the source of truth), assembles the semantic-anchor bundle, and builds the Source Timeline if there is one. Only references the current scene uses get decoded, so a big library doesn't quietly eat your VRAM.
What actually differs from the flat Carousel
Both nodes share the storage engine and every input and output - you can swap one for the other without rewiring. Only the card layout changes.
Edit a picture in the flat Carousel and the variant sits next to the original in the same list. In the Tree node it's nested under its source with an expand/collapse toggle, so the original stays the visible card and its edits are one click away.
The second trick is take-grouping. Save another Review Gate capture under a tag that's already used and the pack names it @char_bob-v1, then @char_bob-v2. The Tree node reads that -vN suffix, collapses the family into one card showing the latest take, and lists every take in the detail panel.
It's a naming convention, not a stored relationship. Older catalogs using bare digits (@char_bob, @char_bob1) are not retroactively grouped, and nothing renames them for you.
The roles you're assigning
Every card gets a role, and the role decides whether a scene can see it:
- Picture reference - a prompt-selected
@tagmention. The identity photo. - Semantic anchor - a Qwen-only
#tagpresentation anchor for composition, not literal appearance. Excluded from native H3 capacity. - Video reference - the whole clip as a native reference, so the scene looks like it: identity, wardrobe, setting, lighting.
- Motion reference - pose, action and motion timing for a named target subject. Semantic, not pose extraction.
- Source track - never prompt-activated; the exact prerecorded track scenes generate against. Exactly one per project.
A card left Unassigned stays visible without consuming a reference slot or changing the fingerprint - the right home for anything you're still staging.
Inputs and outputs that matter
run_name is the one to set. It's authoritative - when project_assets is wired to a Plan, this value overrides and synchronizes the Plan's own run name. Type it here and leave the Plan alone.
semantic_anchor_size and semantic_anchor_mode set Qwen presentation for every semantic asset in this Carousel. Both default to inherit, meaning "use whatever the downstream Tagged Scene node says".
tagged_references is a migration input: connect an existing line and you get Unassigned cards carrying its tags and roles, but no media is copied - you bind each card by hand. upscale_model is lazy; it loads only when you press Model upscale in the asset editor. catalog_json and operation_json are node-managed; don't hand-edit them.
On the way out, project_assets goes to Plan and references goes to Tagged Ref2VA or Plan Studio. status reports counts and the catalog revision. reference_fingerprint and source_timeline are for specialist graphs - Plan absorbs the source timeline through project_assets anyway.
Install
ComfyUI Manager, search MiniMax H3 Context Loop. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/seitanism/ComfyUI-H3-Motion-Context-MultiRef.git
git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Context-Loop.git
Restart, then hard-refresh the browser. The companion MultiRef pack is required - without it ComfyUI complains about a missing MiniMaxH3MotionContext, and the example workflows won't load. There's no requirements.txt, so nothing gets pip-installed; ffmpeg on PATH is recommended, with PyAV as the fallback. Your H3 diffusion model, text encoder, video VAE and audio VAE are not bundled, and you need a ComfyUI build with native Add Guide support.
Where people get burned
Duplicate tags are a hard error, not a warning - every enabled asset needs a unique tag. So is enabling a second Source track. Both surface at queue time.
The other trap is expectation. Import a tagged_references line and it looks like your references came across, but the cards are Unassigned templates with no media behind them; scenes won't see them until you bind each one. And browser import can only pull from ComfyUI/input/.
Last wrinkle: deleting a generated run through Checkpoint Manager does not delete your project-owned originals under input/h3_projects/. Feature, not bug - and the reason disk usage creeps up on long projects.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| run_name | STRING | Authoritative H3 chain Run name. When project_assets is connected to Plan, this value automatically overrides and synchronizes Plan's run_name; enter it here only. Media is copied below input/h3_projects/<run_name> and mirrored in output/h3_chains/<run_name>/project_assets. | |
| catalog_json | STRING | Compact catalog metadata maintained by the carousel. Media bytes and tensors are never serialized into the workflow. | |
| semantic_anchor_size | COMBO | 512 | Qwen presentation size for project assets assigned the Semantic anchor role. Select inherit to use the setting from the downstream Tagged Scene node. Explicit values override it for every semantic asset in this Carousel. |
| semantic_anchor_mode | COMBO | timestamped_video | Presentation mode for project semantic anchors. Select inherit to use the setting from the downstream Tagged Scene node. Bare #tag is untimed; [timestamp] adds explicit placement. |
| operation_json | STRING | Internal one-shot image operation maintained by the Carousel. It remains blank during normal H3 generation. | |
| tagged_referencesopt | H3_TAGGED_REFERENCES | Optional migration/template input. The carousel reads tag, media kind, role, and reference options into Unassigned cards but does not copy, encode, or serialize the media. Bind each card explicitly from ComfyUI input, upload, another project, or backup. | |
| upscale_modelopt | UPSCALE_MODEL | Optional core upscale model for creating an edited image variant. It is evaluated only when you press Model upscale in the asset editor; normal H3 generation never loads it. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| project_assets | H3_PROJECT_ASSETS | Compact project catalog for Plan/Plan Studio synchronization. |
| references | H3_TAGGED_REFERENCES | Native tagged references plus separate semantic-anchor metadata. |
| reference_fingerprint | STRING | Order-neutral incremental reference lineage for Plan compatibility. |
| source_timeline | H3_SOURCE_TIMELINE | Optional path-backed Source Timeline for specialized direct uses. Plan already absorbs this automatically through project_assets. |
| status | STRING | Run name, enabled reference count, source-track state, and revision. |