Skip to content

Project configuration

Keep the project contract in version control

Section titled “Keep the project contract in version control”

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.

Commit marivo.toml and models/ so the project contract and its declarations travel together. Add .marivo/ to .gitignore; it contains local sessions, evidence, and cached metadata rather than shared declarations.