Skip to main content
Version: 0.12

Configuration reference

Configure a self-hosted Marmot with a YAML file or environment variables. Every setting is optional apart from the database, and each table lists its default.

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: <database-password>
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 to set up TLS and the Helm deployment guide for managing the encryption key in Kubernetes.

Set server.root_url to the address people use, such as https://marmot.example.com, before you turn on single sign-on or use marmot login. Marmot builds its sign-in callback URLs from it:

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

Database​

Marmot needs PostgreSQL 14 or later, and a database user that can 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​

Set the format to console for readable output while you develop.

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.

Single sign-on 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 single sign-on for each provider's guide.

KeyDescriptionDefault
search.timeoutSearch query timeout in seconds10

The optional Elasticsearch backend is configured under search.elasticsearch. See search backend for its 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

Data queries​

KeyDescriptionDefault
query.enabledLet people and agents query sources set up to answer queriestrue
query.query_timeoutSeconds before a query is cancelled60
query.max_rows_defaultRows returned when a query doesn't ask for a limit1000
query.max_rows_capMost rows any query can return10000
query.instance_idle_ttlSeconds an unused plugin process stays alive between queries300
query.ingest_on_query_source_intervalMinimum seconds between query-triggered refreshes of one source3600
query.ingest_on_query_global_intervalMinimum seconds between any two query-triggered refreshes60

Serving plugins​

KeyDescriptionDefault
query.serve.enabledAccept plugins that serve queries from outside Marmotfalse
query.serve.listen_addressAddress the serve listener binds:8443
query.serve.public_addresshost:port serving plugins dial, when not the Marmot host on the listen port-
query.serve.replica_addressHost, or host:port, other replicas forward queries to; only needed with several-
query.serve.ca_key_uriKMS URI of the serving CA key (ECDSA P-256); stored in the database when unset-
query.serve.signing_key_uriKMS URI of the query signing key (ECDSA P-256)-

See serve queries from your network.

OpenLineage​

KeyDescriptionDefault
openlineage.auth.enabledRequire authentication for the OpenLineage endpointtrue

Rate limiting​

KeyDescriptionDefault
rate_limit.enabledEnable in-memory API rate limitingfalse
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 banner for examples.

Interface 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.

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
plugins.updates.enabledCheck the signed plugin index for new plugin versions and advisoriestrue
plugins.updates.auto_updatePlugin updates Marmot applies by itself: off, security or patchsecurity
plugins.updates.check_intervalSeconds between plugin index checks43200
plugins.updates.indexOCI reference or https:// URL of the plugin index<registry>/index:latest

See plugin updates for how plugin versions are chosen and changed.