Skip to main content
Version: 0.11

Configure

Marmot is configured using a YAML file or environment variables. All settings have sensible defaults so you only need to specify what you want to change. Every option is listed below with its default value.

Configuration Topics​

Configuration File​

By default, Marmot looks for config.yaml in the current directory. Use the --config flag to specify a different path.

database:
host: localhost
port: 5432
user: postgres
password: secret
name: marmot
server:
host: 0.0.0.0
port: 8080
logging:
level: info
format: json

Environment Variables​

All configuration options can be set via environment variables using the MARMOT_ prefix with underscores separating nested keys. For example, database.host becomes MARMOT_DATABASE_HOST. List values can be given as comma-separated environment variables.

Server​

KeyDescriptionDefault
server.hostBind address0.0.0.0
server.portHTTP port8080
server.root_urlPublic URL of this Marmot instance-
server.custom_response_headersExtra HTTP headers added to every response (config file only)-
server.encryption_keyKey used to encrypt stored credentials at rest, generate one with marmot generate-encryption-key-
server.allow_unencryptedAllow running without an encryption key, storing credentials unencryptedfalse
server.tls.cert_pathPath to server TLS certificate-
server.tls.key_pathPath to server TLS private key-
server.tls.ca_cert_pathPath to CA cert for client verification (mTLS)-

See TLS for setting up TLS and the Helm deployment guide for managing the encryption key in Kubernetes.

Root URL Required for Authentication

server.root_url must be set when using OAuth/OIDC authentication or CLI login (marmot login). It is the URL that users access Marmot from (e.g. https://marmot.example.com). This is used to generate OAuth callback URLs and redirect users after authentication.

server:
root_url: https://marmot.example.com

Or via environment variable:

export MARMOT_SERVER_ROOT_URL=https://marmot.example.com

Database​

Marmot requires PostgreSQL 14 or later. Ensure the database user has privileges to create tables and indexes.

KeyDescriptionDefault
database.hostPostgreSQL hostlocalhost
database.portPostgreSQL port5432
database.userDatabase usernamepostgres
database.passwordDatabase passwordpostgres
database.nameDatabase namemarmot
database.sslmodeSSL mode (disable, require, verify-full)disable
database.max_connsMaximum open connections50
database.idle_connsMinimum idle connections25
database.conn_lifetimeConnection lifetime in minutes5

Logging​

Marmot uses structured logging. Set the format to console for human-readable output during development.

KeyDescriptionDefault
logging.levelLog level (trace, debug, info, warn, error, fatal, panic)info
logging.formatOutput format (json, console)json

Authentication​

KeyDescriptionDefault
auth.anonymous.enabledAllow browsing without logging infalse
auth.anonymous.roleRole assigned to anonymous usersuser
auth.dcr.allowed_redirect_hostsHosts allowed in https redirect URIs for dynamically registered OAuth clients; empty keeps registration loopback-only-

See Anonymous Access for anonymous browsing and MCP authentication for allowing hosted MCP clients such as claude.ai to sign in with OAuth.

SSO providers​

Single Sign-On providers are configured under auth.<provider>, where <provider> is one of google, github, gitlab, keycloak, okta, slack or auth0, or generic_oidc for any other OIDC-compliant provider. The common keys are:

KeyDescriptionDefault
auth.<provider>.enabledEnable this providerfalse
auth.<provider>.client_idOAuth client ID-
auth.<provider>.client_secretOAuth client secret-
auth.<provider>.urlProvider URL, where applicableprovider-specific
auth.<provider>.redirect_urlOAuth callback URL for this Marmot instance-
auth.<provider>.scopesOAuth scopes to requestprovider-specific
auth.<provider>.allow_signupCreate Marmot users on first sign-intrue
auth.<provider>.team_syncSynchronise team membership from provider groupsdisabled
auth.<provider>.group_mappingMap provider groups to Marmot roles-

Each provider has its own options and setup steps. See Authentication for the per-provider guides.

KeyDescriptionDefault
search.timeoutSearch query timeout in seconds10

The optional Elasticsearch backend is configured under search.elasticsearch. See Elasticsearch for the full list of options.

Metrics​

KeyDescriptionDefault
metrics.enabledServe Prometheus metrics on a separate port at /metricsfalse
metrics.portPort for the metrics server9090
metrics.owner_metadata_fieldsMetadata fields used to attribute asset ownership in catalog metricsowner, ownedBy, owningTeam
metrics.schemas.excluded_asset_typesAsset types excluded from schema coverage metricsService
metrics.schemas.excluded_providersProviders excluded from schema coverage metrics-

Pipelines​

KeyDescriptionDefault
pipelines.max_workersMaximum concurrent pipeline runs processed by this instance10
pipelines.scheduler_intervalSeconds between scheduler checks for due pipeline runs60
pipelines.lease_expirySeconds before an abandoned run lease is reclaimed300
pipelines.claim_expirySeconds before an unstarted run claim expires30

Kubernetes Operator​

KeyDescriptionDefault
operator.enabledSynchronise scheduled pipelines with the Marmot operatorfalse
operator.namespaceNamespace the operator manages pipeline resources in-
operator.service_accountService account used for pipeline resourcesmarmot-ingest

OpenLineage​

KeyDescriptionDefault
openlineage.auth.enabledRequire authentication for the OpenLineage endpointtrue

Rate Limiting​

KeyDescriptionDefault
rate_limit.enabledEnable in-memory API rate limitingfalse

UI Banner​

KeyDescriptionDefault
ui.banner.enabledShow the bannerfalse
ui.banner.dismissibleAllow users to dismiss the bannertrue
ui.banner.variantStyle (info, warning, error, success)info
ui.banner.messageBanner text-
ui.banner.idIdentifier used to remember dismissalsbanner-1

See Customisable Banner for examples.

UI Language​

KeyDescriptionDefault
ui.default_languageLanguage tag for visitors with no preference, empty detects the browser-

See Translations for the available languages and how to contribute one.

Telemetry​

KeyDescriptionDefault
telemetry.enabledSend anonymous usage telemetrytrue
telemetry.endpointTelemetry ingest endpointhttps://telemetry.marmotdata.io/v1/ingest
telemetry.intervalSeconds between telemetry reports86400

See Telemetry for what is collected and how to opt out.

Experimental​

KeyDescriptionDefault
experimental.table_previewShow sample rows on asset detail pagesfalse

See Table Preview before enabling this.

Plugins​

KeyDescriptionDefault
plugins.registryOCI registry namespace to install core plugins from, e.g. an internal mirror-
plugins.autoinstallPull missing core plugins from the registry at startuptrue