The .aurora format

A .aurora file is a JSON file containing colours, layers and animation settings. It contains settings, not executable shader code. Editors autocomplete it from the JSON Schema at /schema/v1.json.

{
  "$schema": "https://aurora.goatsoft.io/schema/v1.json",
  "format": "aurora",
  "version": 1,
  "name": "Ember",
  "canvas": { "fade": "y" },
  "motion": { "speed": 1, "reduced": "still" },
  "palette": ["oklch(0.16 0.04 30)", "oklch(0.62 0.21 35)", "oklch(0.86 0.16 75)"],
  "layers": [
    { "type": "fire", "colors": [0, 1, 2] },
    { "type": "grain", "blend": "overlay", "opacity": 0.5 }
  ]
}

The document

FieldRequiredDescription
formatrequiredAlways "aurora".
versionrequiredThe format version, 1. Older files are migrated forward on load.
namerequiredWhat Studio and error messages call it.
paletterequiredColours, in any CSS colour syntax Aurora understands; OKLCH is the native one.
layersrequiredThe stack, bottom first.
canvasEdge fade, fixed positioning and parallax.
motionGlobal speed and reduced-motion behaviour.
fallback{ "mode": "auto" } (the default) or hand-tuned CSS.

Layers

Each layer is one generator. Its type is the generator’s id and its params are that generator’s parameters. All parameters are optional; omitted parameters use the generator’s defaults. Each generator’s page lists its parameters and what each of its colours paints.

FieldDefaultDescription
typeThe generator, such as aurora-fbm or clouds.
colors[0, 1, 2]Palette indices the generator uses, in its order.
blendnormalnormal, screen, add, multiply or overlay, onto the layers below.
opacity1The layer’s opacity.
mixoklabWhere colours blend: oklab, or srgb for exact parity with older sRGB shaders.
maskA linear (angle, start, end) or radial (x, y, start, end) fade.

Canvas and motion

canvas.fade fades the edges: "y" top and bottom, "x" left and right. canvas.fixed pins the background to the viewport, and canvas.parallax (0 to 1) moves it more slowly than the page.

motion.speed multiplies time, and 0 freezes the background. motion.reduced decides what happens under prefers-reduced-motion: "still" renders one frame, "slow" runs at a tenth of the speed, and "css" shows the CSS fallback.

Validation

Files are checked against the schema and then against each generator: unknown types and parameters get “did you mean” suggestions, and colour indices must exist in the palette. With the bundler plugin this happens at build time, with errors at the file, line and column.