Skip to main content

Configuration reference of the Navin Manager

This page lists every setting of the Navin Manager server, read from navin_manager/config.py (class Settings), the other environment variables the server reads, and the settings stored in the database. It is generated by navin-manager/docs/tools/generate_reference.py: do not edit it by hand.

Where the settings come from​

Each setting is read, in this order of priority, from the environment variable NM_<KEY> (for example from /etc/navin-manager/server.env, loaded by the systemd unit), then from the YAML file named by NM_CONFIG_FILE (default /etc/navin-manager/server.yaml, keys written without the NM_ prefix, in lower case), then from the default of the table. Put secrets (NM_DATABASE_URL with its password, NM_ADMIN_PASSWORD, NM_METRICS_TOKEN, NM_CLICKHOUSE_PASSWORD) in server.env (mode 0640, owner root:navin-manager), never in server.yaml.

With environment: prod, navin-manager check and navin-manager serve refuse to start while one of these conditions holds (function check_production):

  • NM_TLS_CERT_FILE or NM_TLS_KEY_FILE is empty.
  • NM_AGENT_CLIENT_CERT_REQUIRED is false.
  • NM_SESSION_COOKIE_SECURE is false.
  • NM_METRICS_TOKEN is empty or shorter than 32 characters.
  • NM_SCRYPT_N is lower than 16384.
  • NM_MASTER_KEY is empty and the file NM_MASTER_KEY_FILE does not exist.
  • NM_DATABASE_URL is not a local UNIX socket and has no sslmode=require, verify-ca or verify-full.
  • NM_ADMIN_PASSWORD is set and weak: fewer than 12 characters, a known password (such as navin), the user name, letters only or no letter.

General​

KeyEnvironment variableTypeDefaultDescription
environmentNM_ENVIRONMENTstringprodEnvironment of the server. prod turns on the production checks (check_production); sandbox is the value of the sandbox.
log_levelNM_LOG_LEVELstringinfoLog level of the HTTP servers (uvicorn): debug, info, warning or error.

Database​

KeyEnvironment variableTypeDefaultDescription
database_urlNM_DATABASE_URLstringpostgresql://navin_manager@localhost:5432/navin_managerPostgreSQL URL of the Manager database. In production: sslmode=require, verify-ca or verify-full, or a local UNIX socket (?host=/run/postgresql). The package writes it in server.env with navin-manager-db local or navin-manager-db external.
database_pool_maxNM_DATABASE_POOL_MAXinteger20Maximum number of connections of the database pool.
restore_targetsNM_RESTORE_TARGETSdict[str, dict[str, typing.Any]]empty: no destination, restores support the dry run onlyRestore destinations, keyed by name: {"name": {"environment": "isolated", "database_url_env": "NM_RESTORE_<NAME>_DATABASE", "pg_restore": "pg_restore", "versions": {"postgres": "16"}}}. The URL stays in the environment variable named by database_url_env (in server.env): an empty database (not postgres or a template) owned by a role without superuser, CREATEDB, CREATEROLE, replication, BYPASSRLS or role membership; sslmode=verify-full for a remote production server. Empty: restores support the dry run only.
restore_timeout_secondsNM_RESTORE_TIMEOUT_SECONDSinteger300Timeout of the pg_restore subprocess and of each SQL statement, in seconds (1 to 3600). Not a total wall-clock bound for decryption and the row inventory. Bounds: >= 1, <= 3600.
restore_max_bytesNM_RESTORE_MAX_BYTESinteger268435456Largest encrypted backup accepted by a restore, in bytes (1 KiB to 1 GiB); a larger artefact is refused before any write. Bounds: >= 1024, <= 1073741824.

Master key and password hashing​

KeyEnvironment variableTypeDefaultDescription
master_keyNM_MASTER_KEYstring or null(none)Master key given directly (it seals every stored secret). Prefer master_key_file.
master_key_fileNM_MASTER_KEY_FILEstring/etc/navin-manager/master.keyFile of the master key (32 random bytes, mode 0600, owner navin-manager), created by navin-manager init-key at install time. Back it up: every stored secret depends on it.
scrypt_nNM_SCRYPT_Ninteger32768Cost parameter N of scrypt for the password hashes. At least 16384 in production.

Listeners and URLs​

KeyEnvironment variableTypeDefaultDescription
listen_hostNM_LISTEN_HOSTstring127.0.0.1Address both listeners bind to. The packaged server.yaml sets 0.0.0.0 (agents connect from other hosts); a checkout listens on the loopback.
portNM_PORTinteger8460Port of the console, the REST API /api/v1 and the agent registration.
agent_portNM_AGENT_PORTinteger8461Port of the agent API /agent/v1 and of the local mirror /repo/ (TLS with client certificate).
public_urlNM_PUBLIC_URLstring or null(none)Public URL of the console. Empty: https://<fqdn>:<port> (http without TLS).
agent_urlNM_AGENT_URLstring or null(none)URL of the agent API sent to the agents at registration. Empty: https://<fqdn>:<agent_port>.
session_cookie_secureNM_SESSION_COOKIE_SECUREbooleantrueSession cookie sent over HTTPS only. Must stay true in production.
cors_originsNM_CORS_ORIGINSstring""Origins allowed by CORS, comma separated. Empty: none.

TLS​

KeyEnvironment variableTypeDefaultDescription
tls_cert_fileNM_TLS_CERT_FILEstring or null(none)Certificate (PEM) of the console listener. The package creates a self-signed one in /etc/navin-manager/tls/server.crt; replace it with a certificate of your PKI. Required in production.
tls_key_fileNM_TLS_KEY_FILEstring or null(none)Private key (PEM) of tls_cert_file. Required in production.
agent_client_cert_requiredNM_AGENT_CLIENT_CERT_REQUIREDbooleantrueThe agent listener requires the client certificate issued at registration (mutual TLS). Must stay true in production.

Catalog, console, mirror and registry​

KeyEnvironment variableTypeDefaultDescription
catalog_dirNM_CATALOG_DIRstring<checkout>/catalog when it exists, else /usr/share/navin-manager/catalogDirectory of the stack catalog (one descriptor per service).
ui_dirNM_UI_DIRstring<checkout>/ui/dist when it exists, else /usr/share/navin-manager/uiDirectory of the built web console.
docs_dirNM_DOCS_DIRstring<checkout>/../website/docs-site/build when it exists, else /usr/share/navin-manager/docsDirectory of the built documentation site, served without sign in on /docs/ (French) and /docs/en/ (English).
agent_templates_dirNM_AGENT_TEMPLATES_DIRstring<checkout>/agent-templates when it exists, else /usr/share/navin-manager/agent-templatesDirectory of the agent templates registry (one descriptor per template of the Navin products, prepared or published), read by GET /api/v1/agent-templates.
agent_sources_dirNM_AGENT_SOURCES_DIRstringthe repository root in a checkout, else /usr/share/navin-manager/agent-sourcesDirectory the source and docs paths of the registry descriptors are relative to: the product manifest and the service definition copied when an administrator publishes a template (POST /api/v1/agent-templates/{template_id}/publish). Never written.
published_templates_dirNM_PUBLISHED_TEMPLATES_DIRstring/var/lib/navin-manager/published-templatesDirectory of the agent templates published on this Manager (services/<name>.yaml and templates/<name>/ of every validated agent), loaded with the catalog of catalog_dir as an overlay; catalog_dir itself is never written.
mirror_dirNM_MIRROR_DIRstring/var/lib/navin-manager/mirrorDirectory of the local mirror (offline bundle unpacked, manifest.json), served on /repo/ of the agent listener.
mirror_urlNM_MIRROR_URLstring or null(none)URL of an external mirror (Nexus, Artifactory) holding the mirror tree. Empty: <agent_url>/repo.
mirror_signatureNM_MIRROR_SIGNATUREstringrequiredDetached Ed25519 signature of the mirror manifest.json (manifest.json.sig, written by build-bundle.py --sign-key). required: an unsigned or wrongly signed manifest is refused at load and at delivery to the agents. unsigned-allowed: explicit migration mode of an existing unsigned mirror, every load is audited with the signature status unsigned.
mirror_trusted_keys_fileNM_MIRROR_TRUSTED_KEYS_FILEstring or null(none)PEM file of the Ed25519 public keys trusted for the mirror manifest signature, added to the hub.trusted_keys_pem setting of the Navin Trusted Hub. Empty: the keys of the hub setting only.
registryNM_REGISTRYstring or null(none)Container registry (Harbor, Quay, Nexus) holding the images. Empty: the images of the mirror are loaded on the hosts.

Operations engine​

KeyEnvironment variableTypeDefaultDescription
engine_enabledNM_ENGINE_ENABLEDbooleantrueRuns the operations engine and the scheduler in this process.
engine_tick_secondsNM_ENGINE_TICK_SECONDSnumber1.0Interval in seconds of the engine tick (start pending operations, server tasks, timeouts, stages).

Installation on the hosts​

KeyEnvironment variableTypeDefaultDescription
podman_quadletNM_PODMAN_QUADLETbooleantrueRun the Podman components from Quadlet files (/etc/containers/systemd, agent task quadlet.unit) instead of a systemd unit running podman run (ADR-0171): same unit name and isolation options, unit started rather than enabled. Used on every systemd host whose Podman is 4.9 or later and whose agent announces quadlet.unit in its facts (task_types); the other hosts keep the podman run unit. false: podman run everywhere.

Sign in and initial administrator​

KeyEnvironment variableTypeDefaultDescription
mfa_enabledNM_MFA_ENABLEDbooleanfalseSecond factor (TOTP) at sign in, forced enrollment of the policy roles and self service MFA. Off: user name and password only.
admin_usernameNM_ADMIN_USERNAMEstringnavinUser name of the initial local administrator, created at the first start of navin-manager serve.
admin_passwordNM_ADMIN_PASSWORDstring or null(none)One-time password of the initial administrator, to change at the first sign in; never set again by a restart (navin-manager reset-admin sets it again). Put it in server.env. Nothing is created while it is empty.

Monitoring​

KeyEnvironment variableTypeDefaultDescription
metrics_tokenNM_METRICS_TOKENstring or null(none)Bearer token that Prometheus sends to read /metrics. At least 32 characters in production; the package writes a random one.
service_health_retention_daysNM_SERVICE_HEALTH_RETENTION_DAYSinteger30Days of service health samples (nm.service_health_samples) kept by the job retention.purge. Bounds: >= 1, <= 3650.

Telemetry to ClickHouse​

KeyEnvironment variableTypeDefaultDescription
clickhouse_urlNM_CLICKHOUSE_URLstring or null(none)URL of ClickHouse receiving the real-time telemetry. Empty: telemetry off.
clickhouse_userNM_CLICKHOUSE_USERstringnavin_managerClickHouse user.
clickhouse_passwordNM_CLICKHOUSE_PASSWORDstring or null(none)ClickHouse password (in server.env).
clickhouse_password_fileNM_CLICKHOUSE_PASSWORD_FILEstring or null(none)File holding the ClickHouse password.
clickhouse_databaseNM_CLICKHOUSE_DATABASEstringnavin_managerClickHouse database.
clickhouse_ca_fileNM_CLICKHOUSE_CA_FILEstring or null(none)CA file (PEM) used to verify the certificate of ClickHouse.
clickhouse_timeout_secondsNM_CLICKHOUSE_TIMEOUT_SECONDSnumber10.0Timeout in seconds of a ClickHouse request. Bounds: > 0, <= 120.
clickhouse_flush_secondsNM_CLICKHOUSE_FLUSH_SECONDSnumber5.0Interval in seconds between two writes of the buffer. Bounds: > 0, <= 300.
clickhouse_buffer_rowsNM_CLICKHOUSE_BUFFER_ROWSinteger200000Maximum rows kept in memory while ClickHouse cannot be reached. Bounds: >= 1000, <= 10000000.
clickhouse_retention_daysNM_CLICKHOUSE_RETENTION_DAYSinteger90Days of telemetry kept in ClickHouse. Bounds: >= 1, <= 3650.

MCP registry​

KeyEnvironment variableTypeDefaultDescription
mcp_internal_hostsNM_MCP_INTERNAL_HOSTSstring or list of strings""Internal hosts an MCP server URL of the registry may name: a comma separated string or a list of exact hosts, host:port, *.suffix or CIDR. Empty: only the IP literals of the private ranges (RFC 1918, IPv6 ULA).
mcp_validated_presetsNM_MCP_VALIDATED_PRESETSstring or list of strings""Presets of the Navin library validated by the company and published in its MCP catalogue (comma separated string or list of preset names). A stdio server created from one of them, command and arguments unchanged, is trusted and may be hosted by an mcp-host whose isolation is process; every other server is untrusted and is hosted only by an mcp-host whose isolation is container (409 mcp_untrusted_needs_container). Empty: no server is trusted.

Other environment variables of the server​

These variables are read directly by the server code, outside the Settings class. They have no server.yaml key.

Environment variableDefaultDescription
NM_CONFIG_FILE/etc/navin-manager/server.yamlYAML file of the settings (set by the systemd unit).
NM_PKI_DIR/var/lib/navin-manager/pkiDirectory where the server writes the CA and the certificate of the agent listener (set by the systemd unit).
NM_AGENT_TLS_SANS(none)Extra names of the agent listener certificate, comma separated, added to the FQDN of the host (for example a virtual IP or a DNS alias).
NM_BACKUP_KEYS(none)Custody keys of the encrypted backups: <ref>:<base64 of 32 bytes>, comma separated. A backup sealed with an unknown reference fails with backup_key_unknown.

Settings stored in the database​

These settings are edited in the console (Administration > Settings) or with PUT /api/v1/settings, and stored in the table nm.settings (navin_manager/settings_store.py). Secret fields are sealed with the master key and never returned by the API.

GroupFieldDefaultDescription
generalsite_nameNavin ManagerName shown in the console header.
generaldefault_languageenDefault language of the console (en or fr).
installpreferred_methodbinaryInstallation method preselected by the install wizard (binary, podman, python, package).
installregistry""Container registry used by the installations.
installmirror_url""URL of the external mirror used by the installations.
installmirror_ca_pem""CA (PEM) of the external mirror.
smtphost""SMTP server of the email notifications.
smtpport587SMTP port.
smtpstarttlstrueUse STARTTLS.
smtpusername""SMTP user name.
smtpfrom""Sender address.
sysloghost""Syslog server of the notifications.
syslogport514Syslog port.
syslogprotocoludpudp or tcp.
syslogfacilitylocal0Syslog facility.
retentionmetrics_days30Days of host metrics kept.
retentiontask_logs_days90Days of task logs kept.
retentionoperations_days365Days of operations kept.
proxyhttp_proxy""HTTP proxy of the managed hosts (http:// or https://, without credentials or path).
proxyhttps_proxy""HTTPS proxy of the managed hosts.
proxyno_proxy""Hosts reached without the proxy; localhost, 127.0.0.1, ::1 and the Manager are always added.
huburl""Address of the Navin Trusted Hub.
hubexpected_hub""Identity of the Navin Trusted Hub this Manager accepts (the hub field of the signed document); required before any document is ingested. It cannot be changed to another hub once a document was accepted; emptying it stops the ingestion.
hubcustomer""Customer identifier at the Hub.
hubtrusted_keys_pem""Pinned Ed25519 public keys (PEM) that sign the Hub catalog.
hubenforcefalseInstall only the artifacts (images, binaries, archives, wheels) whose digest the signed Hub document approves; required by the banking-secure profile.
hubca_pem""CA (PEM) of the Hub.
smtppassword(secret, sealed)SMTP password.
hubtoken(secret, sealed)Access token of the Hub.