Skip to content

Project configuration

Keep the project contract in version control

Section titled “Keep the project contract in version control”

marivo.toml is optional. Without it, the project name is the project-root directory name, semantic.layer_paths is empty, and local telemetry is enabled. Missing tables or fields use those defaults; an existing invalid TOML document or explicitly invalid field fails closed. There is no project version setting.

Use marivo.toml to load semantic-layer packages that are maintained in other repositories. Add each authored models/ directory to [semantic].layer_paths:

[semantic]
layer_paths = [
"../sales-domain/models",
"/opt/company/finance-domain/models",
]

Marivo always loads the current project’s models/ directory first. It then loads layer_paths in the listed order. Relative paths are resolved from the directory containing marivo.toml; absolute paths are used as-is. Every external semantic-layer root must contain both datasources/ and semantic/.

Names must stay unique across every configured root: datasource names, domain names, and semantic IDs cannot be duplicated. A duplicate stops the semantic layer from loading. marivo doctor, semantic previews, verification, and analysis sessions all resolve semantic objects and layer datasources through these configured roots.

When configuration or declarations must travel with the project, commit marivo.toml and models/. Add .marivo/ to .gitignore; it contains local sessions, evidence, telemetry, and cached metadata rather than shared declarations.