Manifest reference

Style fields

FieldType/defaultMeaning
extendsstyle idOptional parent style. The child inherits resolved settings but must declare its own outDir.
providertop-level defaultProvider registry id for this style. Assets cannot override it.
generatormapmap, 1dir, pixflux, tiles, terrain, isometricTile, imagePro, character, objectPro, uiAsset, uiElement, imageProFlash, vfx, or provider-specific animation/frames. See GENERATORS.md.
outDirstring, requiredOutput directory relative to the manifest.
promptPrefix""Prepended to every participating asset prompt.
promptSuffix""Appended to every participating asset prompt.
styleImages[]{ "path": "..." } reference images. Paths are manifest-relative.
sizeinteger 16–8192Square size. Each provider and generator applies its own narrower limits. For PixelLab 1dir, a style reference's dimensions take precedence.
viewstringPixelLab map: low top-down, high top-down, or side. Other generators interpret this separately.
outlinestringPixelLab map: single color outline, selective outline, or lineless.
shadingstringPixelLab map: flat shading, basic shading, medium shading, or detailed shading.
detailstringPixelLab map: low detail, medium detail, or high detail.
seedintegerDeterministic provider seed where supported.
palettehex array, []The style's palette; # is optional. Sent to providers that take one (pixflux, imagePro as its target palette, Retro Diffusion, ComfyUI bindings).
paletteNamestring ≤100imagePro only, needs palette: the palette's name (Game Boy, PICO-8), which PixelLab uses to help the look.
maxColorsinteger 2–64imagePro only: at most this many colours in each candidate, drawn from palette when one is set.
enforcePaletteboolean, falseSnap every downloaded PNG to the nearest palette colour, no dithering. Needs at least two colours. See Palette enforcement.
noBackgroundboolean, truepixflux background removal. Set false for scenes/backdrops.
providerOptionsobject, {}Options grouped by provider id. Only the active provider's object is resolved and hashed.
tileSizeinteger 16–256Edge length for tiles when no style reference supplies geometry.
tileTypeenumhex, hex_pointy, isometric, oblique, octagon, or square_topdown.
tileViewenumtop-down, high top-down, low top-down, or side.
tileFeatureenumConnectable roads, tileset, or building structural set.
outlineModeenumoutline or segmentation; segmentation avoids quilted ground seams.
terrainOrientationtop-downterrain only. sidescroller makes a platform set: prompt 1). <platform body> 2). <top layer>, 16 or 32px, no mode, view, or shape controls.
terrainModestandardterrain only. standard or pro.
terrainTileSize16terrain only. 16, 32, or 64 (pro only).
terrainTransitionSize0terrain only. 0, 0.25, 0.5, or 1 (any 0–0.5 with terrainShapeStyle). Pro reads it as wall height; above 0.4 a Pro set has 25 tiles, standard only at 1.
terrainViewhigh top-downterrain only. low top-down or high top-down.
terrainShapeStyleterrain, standard only. square or round procedural boundary.
terrainRaggedness0terrain, pro only. Boundary noise, 0–1.
terrainRoundness0.85 pro, 0.6 shape styleterrain, pro or terrainShapeStyle. Border corners: 0 square, 1 round, 2 cut at 45° (above 1 pro only).
terrainBoundaryAmplitude0terrain, pro or terrainShapeStyle. How far the border meanders, 0–0.3.
terrainBoundarySeed0terrain, with terrainBoundaryAmplitude. Which meander, an integer.
terrainStepSlope0terrain, pro at terrainTransitionSize 0.25 only. 0 a cliff to 2 a gentle slope.
terrainConnectDiagonalsfalseterrain, pro only. Join the diagonal tiles' upper corners into one area.
terrainSpreadX / terrainSlopeSizeDeprecated: PixelLab ignores both. Still accepted. Changing any terrain* field marks the set stale: the older ones (mode, transition size, view, shape style, raggedness, these two) and the descriptions as sent are recorded per lock entry as terrainSettings rather than hashed, compared as written (an explicit default counts as a change), and absent on sets generated before that record existed, which stay current.
modestandardcharacter only. standard, v3, pro, or pro-flash; see Characters.
directions8character only. 4 or 8; every engine but standard draws 8.
templatemannequincharacter only. Body template: mannequin, or bear, cat, dog, horse, lion; custom for pro-flash.
proportionscharacter only, standard humanoid bases. A preset (default, chibi, cartoon, stylized, realistic_male, realistic_female, heroic) or multipliers { headSize, armsLength, legsLength, shoulderWidth, hipWidth }, each 0.5 to 2. An asset may override it.
textGuidanceScale8character only. How closely a standard base and a template loop follow their text, 1 to 20.
isometricfalsecharacter only. Draw standard bases and every loop in isometric view.
enhancePromptfalsecharacter only, v3 bases. Let PixelLab expand the prompt into a fuller one before drawing.
styleCharactercharacter only, pro bases. The asset id of a generated 8-direction character in this style whose look bases drawn from text or a concept follow. An asset may override it.
styleTraitsall truecharacter pro-flash bases and imageProFlash styles, with a style image. { palette, outline, detail, shading } booleans: which traits the style image lends.
mountobjectStable-cell sheet placement; documented below.
qualityobjectOptional native-grid, final-palette, and human-approval contract; documented below.
tagsstring array, []Tags inherited by every generated provider object in the style.

One style using the common fields, and a pixflux style with a locked palette:

{
  "styles": {
    "base": {
      "generator": "map",
      "outDir": "assets/generated/base",
      "promptPrefix": "pixel-art game prop",
      "promptSuffix": "isolated, transparent background",
      "size": 64,
      "view": "high top-down",
      "outline": "selective outline",
      "shading": "medium shading",
      "detail": "medium detail",
      "seed": 7,
      "tags": ["props"]
    },
    "gb": {
      "generator": "pixflux",
      "outDir": "assets/generated/gb",
      "palette": ["#0f380f", "#306230", "#8bac0f", "#9bbc0f"],
      "enforcePalette": true,
      "noBackground": false
    }
  }
}

Style inheritance

Use extends for a real variant that differs from a base style by a few settings. Do not copy the whole style:

{
  "styles": {
    "pony-character": {
      "generator": "map",
      "promptPrefix": "score_9, score_8_up, rating_safe",
      "promptSuffix": "clean pixel clusters",
      "seed": 24000,
      "outDir": "art/generated/pony-character",
      "quality": {
        "outDir": "art/native/pony-character",
        "palette": ["#17111f", "#76506f", "#e5a9b8", "#fff1de"],
        "minGridConfidence": "high"
      }
    },
    "pony-explicit": {
      "extends": "pony-character",
      "promptPrefix": "score_9, score_8_up, rating_explicit",
      "seed": 24001,
      "outDir": "art/generated/pony-explicit",
      "quality": {
        "outDir": "art/native/pony-explicit"
      }
    }
  }
}

The child wins for ordinary fields. Arrays and nested objects are replaced, not concatenated or recursively merged. Two fields get a focused merge:

  • quality keeps parent keys that the child does not override;
  • providerOptions keeps parent provider namespaces and merges each provider's immediate option keys. A deeper object such as bindings is still replaced as a whole.

Inheritance may span several styles. Unknown parents, self-reference, and cycles are errors. Every child must declare outDir; output ownership is never inherited. Omission means inherit, and there is no null deletion marker. Defaults and generator constraints are applied after the chain is resolved.

Only the resolved style reaches planning. A parent edit to a pixel-affecting field therefore changes every child's spec hash; a quality-policy edit changes the child's derived quality state without buying new provider art. extends itself is not runtime or lockfile state.

Generator-specific fields are validated before planning. Important constraints:

  • 1dir is square; use style/asset size rather than width/height.
  • When size and styleImages are both present, PixelLab derives size from the largest reference image and the declared size is advisory.
  • map supports arbitrary asset width and height but not forced palettes or style images. enforcePalette still holds its output to the palette.
  • pixflux accepts a forced palette and returns inline output; it has no style-image support.
  • imagePro sends palette (2 to 256 colours) as PixelLab's beta target palette: every pixel of every candidate is one of those colours. Add paletteName to name it and maxColors to cap each candidate's colours. The cost is unchanged.
  • tiles cannot combine tileFeature with styleImages because the provider rejects connectable features in style-tile mode.
  • ComfyUI frames derives its count from one 2–64 item providerInputs sequence, renders one still per item, and reviews the ordered set atomically.

See generator selection for costs and trade-offs. See mixed-provider projects when styles in one manifest need different backends and budget units.