Registry stack documentation: machine-readable Markdown.
Index of all pages: https://docs.registrystack.org/dev/llms.txt
Full corpus: https://docs.registrystack.org/dev/llms-full.txt

# Registry Render configuration reference

> Generated fields, accepted values, defaults, and constraints for a Registry Render bundle manifest, its label tables, and the serve runtime configuration.

import ConfigurationFormatChecks from '../../../components/ConfigurationFormatChecks.astro';
import ConfigurationReference from '../../../components/ConfigurationReference.astro';
import reference from '../../../data/generated/render-configuration.json';

## Scope

This grammar is not frozen.

`manifest.yaml` declares the bundle's document types: each one's template, data schema, label
locales, version, and PDF standard. Each `labels/<locale>.yaml` holds one label table, and every
table must carry the same keys. `runtime.yaml` is what `registry-render serve` reads: listener,
package, secret providers, API key, limits, and audit.

The JSON Schema a document type names for its data is yours to write; Render applies it to every
request and has no schema of its own for it. A schema-valid file still needs `registry-render
check`, because rules across files, such as a label key the template reads, are not in these
tables. [Configuration files](../configuration-files/) describes the YAML rules and environment
substitution that apply when serve reads `runtime.yaml`.

Two rules are written as exclusions the tables do not show: each document's `entryFile` and
`schemaFile` is relative to the bundle root and contains no `..`, and `package.root` has no `.` or
`..` segment.

{/* Evidence: crates/registry-render/src/manifest.rs, Manifest;
    crates/registry-render/src/labels.rs;
    crates/registry-render/src/runtime.rs, RenderRuntime;
    crates/registry-render/src/check.rs, run;
    docs/site/scripts/generate-render-configuration.mjs. */}

## Read the tables

`documents[]` means an array item; `labels.*` means a map entry whose name you choose. Required
fields inside an optional object apply when that object is present. Conditional fields depend on
another value, such as `audit.path` on `audit.destination`. `audit.rotateBytes` defaults to
100 MiB and `audit.retentionDays` to 90.

<ConfigurationReference contracts={reference.contracts} prefix="render" />

{/* Generated from src/data/generated/render-configuration.json by
    docs/site/scripts/generate-render-configuration.mjs. Run npm run generate from docs/site. */}

{/* Evidence: crates/registry-platform-audit/src/writer.rs, DEFAULT_AUDIT_ROTATE_BYTES and
    DEFAULT_AUDIT_RETAIN_DAYS. */}

## Check commands

<ConfigurationFormatChecks product="render" />

## Next

- [Render your first document](../../tutorials/first-render-document/)
- [Deploy Registry Render](../../operate/registry-render/)