Meridian handbook
ReferenceConfiguration

Configuration

Every configuration file a Meridian project can have, where it lives, what it holds and which page lists its keys, plus how files are loaded, checked, given ids and validated in an editor.

A project’s configuration is YAML under config/ (or the directory --config names). It is committed to git: secrets never appear in it, only ${VAR} interpolations. Every file is checked as a whole, and every problem is reported together, each with its file, line and column, the source line and a caret.

engine-dmo check --no-db               # every file, with no database
engine-dmo config validate             # engine.yaml alone
engine-dmo config render               # engine.yaml resolved, defaults included, secrets redacted
engine-dmo config schema --file site   # one file's JSON Schema

The files

FileHoldsReference
engine.yamlThe install: server, database, storage, mail, search, AI, telemetry and the rest. Requiredengine.yaml and the pages after it
locales.yamlThe install’s locales and locale groupslocales.yaml and strings
strings/<locale>.yamlOne locale’s template stringslocales.yaml and strings
networks.yamlSets of sites sharing organisations, people and partner accountsnetworks.yaml and memberships.yaml
memberships.yamlMembership tiers, in rank order (engine-dmo)networks.yaml and memberships.yaml
sites/<key>/site.yamlOne site: name, hosts, locales, navigation, SEO, deliverysite.yaml
sites/<key>/routes.yamlOne site’s routes, redirects, special pages and home pageroutes.yaml
sites/<key>/endpoints.yamlOne site’s declared endpointsendpoints.yaml
sites/<key>/plugins.yamlOne site’s process plugins (experimental)plugins.yaml
sites/<key>/promotions.yamlOne site’s promotion slots (engine-dmo)promotions.yaml
sites/<key>/portal.yamlOne site’s portal, screens and actions (engine-dmo)Portal files
sites/<key>/images.yamlOne site’s image transformsimages.yaml
sites/<key>/schema/<type>.yamlA type, or part of one, on that site onlySchema files
images.yamlImage breakpoints, defaults and named transformsimages.yaml
schema/<type>.yamlA content type, or an extension of a core typeSchema files
schema/_shared.yamlNamed field groupsSchema files
blocks/_index.yamlShared block definitionsSchema files
crm/organisation.yaml, crm/person.yamlCustom fields on CRM records (engine-dmo)Schema files
portal/enquiries.yamlFields a partner keeps against an enquiry (engine-dmo)Schema files
portal/portal.yamlThe install’s portal (engine-dmo)Portal files
portal/roles.yamlPartner roles (engine-dmo)Portal files
access/roles.yamlStaff rolesaccess/roles.yaml and grants.yaml
access/grants.yamlRoles granted to staff groups under a scopeaccess/roles.yaml and grants.yaml
analytics/reports.yamlScheduled member and organisation reportsanalytics files
analytics/dashboards.yamlOrganisation dashboards and entered figuresanalytics files
analytics/bots.txtExtra user-agent substrings analytics filters, one per lineengine.yaml: analytics
accessibility.yamlThe known accessibility issues registeraccessibility.yaml
ai/prompts/<key>.yamlOverrides of the engine’s AI promptsAI prompt overrides
paidlistings.yamlThe paid listings provider and prices (engine-dmo)paidlistings.yaml
search/synonyms.yamlSeed search synonymsSeed files
tags/vocabulary.yamlThe seed tag vocabularySeed files
tags/smartlists.yamlSeeded smart listsSeed files

A new project from engine-dmo init has engine.yaml, locales.yaml, access/grants.yaml and one site’s site.yaml and routes.yaml; every other file is optional. A file for a module the binary does not compile (such as memberships.yaml under engine-cms) is refused by the module’s name.

Stable ids

Elements that hold data (types, fields, groups, blocks, options, sites, locales, routes, endpoints, tiers, networks, screens, actions, roles, slots and landing families) carry an id, such as fld_thsh2xa6nf. The id is what stored data is keyed by, so renaming a handle keeps its data. Never write or change an id by hand:

engine-dmo check --fix --no-db    # writes every missing id in place, keeping comments, then checks

check without --fix reports a missing id as an error. The engine-dmo dev authoring verbs write ids as they add elements. See Stable ids.

Shared value formats

FormatExample
Text per localelabel: { en-GB: Walk, fr-FR: Randonnée }. The source locale is required; a missing locale falls back
Duration30s, 15m, 2h
Retention period90d, 2w, 13m (months), 7y
Size25MB, 256KB
TiersA list of tier keys, or { min: <tier> } for that tier and every tier above it
Secret${VAR}: a bare interpolation, never a literal

Editor support

engine-dmo init writes the JSON Schema of every file to .meridian/schema/ and maps the file patterns to them in the project’s VS Code and Zed settings. To refresh them after an engine upgrade:

engine-dmo config schema --write .meridian/schema --editors vscode,zed

Each schema is generated from the structures the loaders decode, so an editor’s completion and validation match what check accepts.