IAMCCS Frame Designer — MOSS Edition
The MOSS Frame Designer, explained
- layout_prompt
- width
- height
- elements
- bboxes
- report
- cine_linx
- project_data
The hardest thing to get right in a two-character shot is that character A stands there and character B stands there, and the prompt won't say it. You write "a woman on the left and a man on the right" and get two people entangled in the middle. IAMCCS_MOSSFrameDesigner is a node built on the other approach: you draw the boxes, describe each one, and let the layout compiler hand the model spatial instructions instead of prose.
What it is
It's a node with a full visual editor bolted to it, and it produces a structured layout document rather than a prompt string. Editing happens in a browser panel - a three-column canvas editor with light, camera and style presets - and what you author is a JSON project stored in the design_data widget: canvas size, a scene block (high-level description, background, lighting, photo, aesthetics, medium, art_style), and an items array of regions.
It's the sibling of the pack's Ideogram frame designer, not a re-skin: the description says outright that MOSS uses "a separate project and compiler from Ideogram." The output format proves it - the compiler emits boxes in abs_centralized / yxyx coordinate space, which is what the MOSS side expects, not Ideogram's convention.
It's the layout-conditioning answer to the multi-character bleeding problem in character-consistency.md - regional prompts and latent couple were workarounds for a text encoder that couldn't bind attributes to subjects, and 2026 models that take boxes or structured JSON do it natively.
How it works
On execution, compile_layout() walks your project and produces three things per region: a caption (your description, plus an optional per-region style sentence appended as "Rendering treatment for this region: …"), a bbox, and - for text regions - the literal text. Scene fields are concatenated in a fixed order into one summary.caption. The result is a compact JSON layout prompt, which is what layout_prompt hands on.
Coordinates are the part beginners trip over. Your region x/y/w/h are in 0–1000 normalized units, not pixels - the default project's boxes are w: 300, h: 820 on a 1280×720 canvas. The compiler clips them to that range, scales them to your canvas, then converts to the model's centred yxyx format. Changing canvas size doesn't move your boxes; it re-projects them.
The report output is your friend even though it looks like machinery: a JSON summary with a warnings array, and the only place the compiler tells you what it dropped. Image and mask layers are editor references, not conditioning - warning, no box. Off-canvas regions get clipped and said so. Text regions set to text_mode: overlay are skipped from diffusion entirely, because the Result node letters them in afterwards.
Inputs and outputs
One visible input: design_data, the editable MOSS project. You can paste a project in by hand, but you'll use the editor - it can also import existing Frame Designer V2 projects.
Outputs, and where each one goes:
- layout_prompt - the JSON layout string; this feeds your MOSS text/conditioning encode.
- width and height - drive the empty latent, so the picture is the size you designed for.
- elements - the region array for nodes that want structured regions rather than a string.
- bboxes - a
BOUNDING_BOXoutput for anything downstream that takes boxes. - report - read it. It's the only place the compiler complains.
- cine_linx - the IAMCCS bus payload: it carries the project, and if the project already holds a rendered image from a previous run, also that image plus an H3 reference slot/role mapping.
- project_data - the project string that must go into
IAMCCS_MOSSFrameResult.
Worth internalising what the report's own note says: layout guidance regenerates the whole image. These regions steer the model - they are not masks, and they are not identity references.
Installing it
ComfyUI Manager, search IAMCCS Nodes, then restart and hard-refresh the browser - the designer needs the pack's frontend JS, so a stale browser cache is the difference between an editor and a giant text box. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
No model download is involved for this node; it compiles text.
Where people get burned
"MOSS design must be a JSON object with canvas, scene and items." You pasted a partial project. Delete design_data back to the default and re-author in the editor.
"Region 3: box is outside the canvas." Coordinates past 1000, or negative width. The normalized grid catches it and refuses.
The editor doesn't show up. Almost always frontend caching or two copies of the pack in custom_nodes. Restart, hard-refresh, and check custom_nodes for duplicates.
Regions ignored with a warning. You added image or mask layers expecting them to condition the model. For the boxes to mean anything, the region has to resolve to a role of object, character or text.
Expecting exact lettering inside the picture. Set the text region to overlay and let the Result node draw it, or accept that the model will approximate the words.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| design_data | STRING | {"schema": "iamccs.moss.frame_designer", "schema_version": 1, "canvas": {"width": 1280, "height": 720}, "scene": {"high_level_description": "A live-action cinematic photograph of exactly two adults standing apart on a railway platform. Both people are visible from head to toe, with a clear empty gap between them.", "lighting": "Soft overcast daylight, consistent natural shadows.", "photo": "Eye-level wide shot, natural perspective, detailed fabric and unretouched skin.", "background": "An empty weathered railway platform, muted stone architecture and distant tracks."}, "items": [{"id": "woman_left", "kind": "obj", "role": "character", "label": "Woman / left", "x": 80, "y": 100, "w": 300, "h": 820, "desc": "One adult woman with short dark hair, wearing a bright red knee-length coat, dark trousers and black boots. She stands facing the camera, hands relaxed at her sides. Entire body including both boots visible.", "color_palette": ["#b52d35"]}, {"id": "man_right", "kind": "obj", "role": "character", "label": "Man / right", "x": 620, "y": 100, "w": 300, "h": 820, "desc": "One adult man with a short gray beard, wearing a cobalt blue jacket, beige trousers and brown shoes. He stands facing the camera, hands relaxed at his sides. Entire body including both shoes visible.", "color_palette": ["#2656b8"]}]} | Editable MOSS project. Import existing Frame Designer V2 projects using the editor. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| layout_prompt | STRING | — |
| width | INT | — |
| height | INT | — |
| elements | ARRAY | — |
| bboxes | BOUNDING_BOX | — |
| report | STRING | — |
| cine_linx | IAMCCS_SUPERNODE_LINX | — |
| project_data | STRING | — |