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

# Base Registry Engine configuration reference

> Generated fields, accepted values, defaults, and constraints for Base Registry Engine projects, modules, and runtime configuration.

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

Look up configuration keys for `registry.yaml`, `module.yaml`, and `runtime.yaml`.
The tables are generated from Base Registry Engine's Rust-derived JSON Schemas, including event
conditions, webhook destinations, access profiles, and module extensions.

## Scope

This reference describes the current configuration grammar, not a frozen contract.
Types, required fields, accepted values, defaults, and constraints come from the schemas.
Descriptions appear where the Rust definition supplies them.
Internal compatibility fields and test-journey documents are outside this reference.

Use [author a registry project](../../configure/breg/) for worked configurations and
deployment steps. A schema-valid document still needs the compiler and runtime checks:
`bregctl check <project>` validates the combined model;
`bregctl doctor --runtime-config <absolute-file>` checks deployment configuration.
Cross-field rules and references to other files cannot all be expressed by these tables.

{/* Evidence: crates/registry-breg/src/schema.rs, documents() and runtime_documents();
    crates/registry-breg/src/contract.rs, RegistryProject and RegistryModule;
    crates/registry-bregctl/src/lib.rs, DoctorArgs and check(). */}

## Read the tables

`fields[]` means an array item; `eventDestinations.*` means a map entry whose name you choose.
Required fields inside an optional object apply when that object is present.
Conditional fields depend on the selected variant or another configuration value.
Accepted values list the union across variants; constraints separated by `or` are alternatives.
A schema default applies only where that variant declares it. `Not specified` does not mean
that every value is accepted.

For example, `events[].when.afterEquals.*` holds a comparison value for a field you name.
The schema permits a scalar or null; the compiler also checks that the value matches the
declared field type and that the condition is valid for the event trigger.

{/* Evidence: crates/registry-breg/src/contract.rs, EventScalarValue and EventConditionSource;
    crates/registry-breg/src/compiler.rs;
    docs/site/scripts/configuration-reference.mjs, collectFields(). */}

## Regeneration

The source schemas live under `products/breg/generated/authoring/` and
`products/breg/generated/runtime/`.
Their owning generators are the `authoring-schema` and `runtime-schema` Rust examples.
`products/breg/scripts/check-generated.sh` checks that they match the source types.
Run `npm run generate` in `docs/site` to rebuild these tables from those schemas.

`bregctl generate schemas <project> --output <directory>` has a different purpose:
it generates record schemas for that project's API, not configuration schemas.

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

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

## Next

- [Author a registry project](../../configure/breg/) for models, permissions, and webhooks.
- [Events and webhooks](../breg-api/#events-and-webhooks) for payloads, signatures, retries, and replay.
- [Create and query your first registry](../../tutorials/first-breg/) to try the API.
- [How a configured registry works](../../explanation/configuration-defined-registry/) for the product boundaries.