ARTICLE

MOSS-Image (Apache-2.0, JSON layout): layout-driven self-host batch for Bubble catalogs alongside BIAIG

My SKU templates already live in a repeating group. MOSS-Image gives me an explicit layout JSON prompt contract and a self-host batch leg next to closed APIs via a BIAIG-style router—plan-level architecture, not an official MOSS feature.

Why now

FLUX promo windows and NB2.1 pricing replans pushed me to look at catalog image legs again. ComfyUI, Qwen, Diffusers, and Bria are already in the plan as adjacent pieces; MOSS-Image (OpenMOSS, Apache-2.0 on weights and bundled code) adds a different source of truth: layout-native JSON, not caption-only T2I. Same topic: Qwen-Image-2.1 open source: RGBA, 10.

Why now

Public release activity clusters around 2026-10-16 (weights/code), with day-0 integrations (ComfyUI, SGLang, vLLM-Omni), an arXiv technical report (2026-10-19), and a separate hosted MOSI API (2026-10-20). I do not blur MOSI API with a fully self-hosted Apache weights path without explicit routing and data-handling separation.

What MOSS actually ships (Scout-bounded)

  • License: Apache-2.0 on the repo, weights, and bundled inference code (OpenMOSS/MOSS-Image).
  • Models: MOSS-Image-Base and MOSS-Image-SFT (~5B DiT); documented deps include PyTorch 2.9+, diffusers>=0.38, a custom _moss_image pipeline, Qwen3.5 text encoder, and FLUX.2 small VAE—third-party licenses remain separate; validate redistribution for any packaged self-host image.
  • Distinct contract: layout JSON (often passed as the serialized prompt string) with summary.caption, items[] (label, per-item caption, optional text, bbox), bbox_format: "yxyx", bbox_coord_space: "abs_centralized" (pixel coords relative to canvas center; align with output width/height, multiples of 16). Canonical definitions: USERGUIDE.md — Layout Prompts (Experimental)—I do not oversell production maturity.

Documented self-host paths: Python/Diffusers, Gradio, ComfyUI 0.42+ layout workflows/nodes, SGLang serve with opt-in dynamic batching (--batching-max-size, --batching-delay-ms) where batched requests must match resolution, steps, negative prompt, and guidance. SGLang publishes narrow H200 throughput/PSNR notes—not catalog-SKU SLAs. I do not invent production benchmarks; I defer to a production-validation arc.

Bubble: repeating group → layout JSON → batch worker

This is editorial integration architecture—no public MOSS doc describes Bubble, SKU templates, or BIAIG: Same topic: Qwen-Image-2.1 before 28.09 UTC+8: freeze.

  1. Repeating group as editor truth — one row → one items[] entry: label, caption, optional text, optional bbox when the UI defines slot geometry.
  2. BBox normalization — ComfyUI’s MOSS-Image Layout Prompt node converts boxes to centered yxyx JSON; generation width/height must match. Mapping Bubble UI geometry to abs_centralized coords across aspect ratios is an open question for me.
  3. Batch leg — a worker enqueues validated layout JSON arrays with shared generation params; SGLang requires batch compatibility; Diffusers or ComfyUI queues imply different ops. Base vs SFT for exact product text and box adherence—I test, I do not assume.
  4. Write-back to Bubble — file/URL, metadata (checkpoint, seed, layout hash), per-SKU status.

BIAIG as router / failover (plan hypothesis)

Public MOSS documentation does not define BIAIG. If your stack uses BIAIG as a closed-model router to promo/API legs, the pattern I use looks like this:

  • Primary: self-hosted MOSS batch when layout JSON passes schema validation and queue latency stays within your SLA.
  • Failover: closed API route when validation fails, Experimental layout risk is unacceptable, or self-host p95 is missed.

Fallback model, triggers, and cost caps must be agreed separately—methodology only here.

Configuration risks (straight talk)

  • Prompt enhancer on ComfyUI layout workflows can drop bounding boxes—I keep it off for automated Bubble→JSON pipelines unless tests prove otherwise.
  • SGLang batching may change pixels vs per-sample paths unless quality=exact; SKU visual consistency needs fixed params and cross-batch identity checks.
  • Experimental layout—poster/composition demos are not catalog parity; I run acceptance tests (text accuracy, layout adherence, latency p95, cost per SKU image) before I make claims.

Pre-production checklist

  • Layout JSON schema validator before enqueue (bbox format, coord space, canvas size).
  • Canonical RG column → items[] mapping; version field in JSON for replans.
  • Separate self-host Apache path vs MOSI hosted API in workflows and Bubble privacy rules.
  • Production-validation arc: Base vs SFT, enhancer on/off for short SKU captions, batch server choice (SGLang vs Diffusers vs ComfyUI queue) for your GPU VRAM—no invented throughput numbers. A closer look: ComfyUI 0.40 and Qwen-Image 2.1.

Pre-production checklist

Checklist item What to validate or configure Scope / constraint
Layout JSON schema validator Run before enqueue bbox format, coord space, canvas size
Canonical RG column → items[] mapping Include version field in JSON For replans
Self-host Apache path vs MOSI hosted API Keep separate in workflows and Bubble privacy rules Two distinct hosting/integration paths
Production-validation arc Base vs SFT; enhancer on/off for short SKU captions; batch server choice for your GPU VRAM SGLang vs Diffusers vs ComfyUI queue; no invented throughput numbers

Source boundary

Facts lean on GitHub/HF/openmoss.ai, ComfyUI MOSS docs, SGLang cookbook, and the arXiv technical report (see Scout packet). Titles on ComfyUI + Qwen, Diffusers + Qwen pipeline, and Bria self-host are adjacent, not duplicates: MOSS adds layout JSON as prompt truth; the others supply UI, pipelines, or alternate self-host legs.

Leftovers: Base/SFT choice, BIAIG failover contract, packaged-image compliance—owner actions plus production-validation.

← All articles