Skip to main content

Configuration reference

Every scalar accepts the listed QOD_* / PROXY_* environment-variable override. Sensitive defaults (passwords, secrets, keys) are flagged; rotate them before any non-local deployment.

quack-flightsql

KeyEnv varDefaultSensitiveDescription
quack-flightsql.hostPROXY_HOST0.0.0.0FlightSQL edge bind address.
quack-flightsql.portPROXY_PORT31338FlightSQL edge port.
quack-flightsql.tlsEnabledPROXY_TLS_ENABLEDtrueEnable TLS on the FlightSQL edge.
quack-flightsql.tlsCertChainPROXY_TLS_CERT_CHAINcerts/server-cert.pemPath to the TLS certificate chain PEM (auto-generated if missing).
quack-flightsql.tlsPrivateKeyPROXY_TLS_PRIVATE_KEYcerts/server-key.pemPath to the TLS private key PEM (auto-generated if missing).
quack-flightsql.sessionTtlSecQOD_SESSION_TTL_SEC3600Edge session TTL in seconds before a fresh handshake is forced.
quack-flightsql.resumeHoldTimeoutSecPROXY_RESUME_HOLD_TIMEOUT_SEC60Max seconds the edge holds a statement while a suspended pool cold-starts.

quack-flightsql.acl

KeyEnv varDefaultSensitiveDescription
quack-flightsql.acl.enabledQOD_ACL_ENABLEDfalseEnable table-level RBAC (per-statement EffectiveSet check).
quack-flightsql.acl.dialectQOD_ACL_DIALECTduckdbStatement parser dialect for ACL extraction.
quack-flightsql.acl.filteredMetadataQOD_ACL_FILTERED_METADATAtrueImplicitly admit reads of the session catalog's information_schema (schemata/tables/columns/views) and filter the result rows to the principal's granted objects. false = the pre-0.6.7 grant-required posture.

quack-flightsql.auth

KeyEnv varDefaultSensitiveDescription
quack-flightsql.auth.roleClaimQOD_AUTH_ROLE_CLAIMroleJWT claim that carries the user's role.
quack-flightsql.auth.database.enabledQOD_AUTH_DB_ENABLEDtrueEnable database (bcrypt) authentication for the FlightSQL edge.
quack-flightsql.auth.database.jdbcUrlQOD_AUTH_DB_JDBC_URLjdbc:postgresql://localhost:5432/qodJDBC URL for the auth-lookup database.
quack-flightsql.auth.database.usernameQOD_AUTH_DB_USERpostgresUsername for the auth-lookup JDBC connection.
quack-flightsql.auth.database.passwordQOD_AUTH_DB_PASSWORD***yesPassword for the auth-lookup JDBC connection.
quack-flightsql.auth.database.systemQueryQOD_AUTH_DB_SYSTEM_QUERYSELECT password_hash, role, enabled, must_change_password FROM qodstate_user WHERE tenant IS NULL AND username = ? LIMIT 1SQL template for AuthScope.System (empty tenant / superuser=true). MUST return the four mandatory columns (password_hash, role, enabled, must_change_password) and accepts one ? placeholder for username; matches WHERE tenant IS NULL.
quack-flightsql.auth.database.tenantQueryQOD_AUTH_DB_TENANT_QUERYSELECT password_hash, role, enabled, must_change_password FROM qodstate_user WHERE tenant = ? AND username = ? LIMIT 1SQL template for AuthScope.Tenant. MUST return the four mandatory columns (password_hash, role, enabled, must_change_password) and accepts two ? placeholders in order: tenant, username.
quack-flightsql.auth.keycloak.enabledQOD_AUTH_KEYCLOAK_ENABLEDfalseEnable the Keycloak OIDC bearer provider.
quack-flightsql.auth.keycloak.baseUrlQOD_AUTH_KEYCLOAK_BASE_URLhttps://keycloak.example.comKeycloak base URL (e.g. https://keycloak.example.com).
quack-flightsql.auth.keycloak.realmQOD_AUTH_KEYCLOAK_REALMquackKeycloak realm name.
quack-flightsql.auth.keycloak.clientIdQOD_AUTH_KEYCLOAK_CLIENT_ID(unset)Keycloak client ID for ROPC.
quack-flightsql.auth.keycloak.clientSecretQOD_AUTH_KEYCLOAK_CLIENT_SECRET***yesKeycloak client secret.
quack-flightsql.auth.keycloak.issuerQOD_AUTH_KEYCLOAK_ISSUER(unset)Override for the expected token issuer (the iss claim the bearer validator requires). Leave empty to derive it from baseUrl + realm. Set it when Keycloak's browser-facing issuer (KC_HOSTNAME_URL) differs from the in-cluster baseUrl used to fetch JWKS: tokens minted via an ingress carry iss=https://host/auth/realms/<realm> while the manager fetches JWKS in-cluster. JWKS is always derived from baseUrl, not this value.
quack-flightsql.auth.google.enabledQOD_AUTH_GOOGLE_ENABLEDfalseEnable the Google OIDC bearer provider.
quack-flightsql.auth.google.clientIdQOD_AUTH_GOOGLE_CLIENT_ID(unset)Google OAuth client ID.
quack-flightsql.auth.google.clientSecretQOD_AUTH_GOOGLE_CLIENT_SECRET***yesGoogle OAuth client secret.
quack-flightsql.auth.google.groupsLookupQOD_AUTH_GOOGLE_GROUPS_LOOKUPfalseResolve Google Workspace groups membership server-side.
quack-flightsql.auth.google.serviceAccountKeyPathQOD_AUTH_GOOGLE_SVC_ACCT_KEY_PATH(unset)Path to a Google service-account JSON used for groups lookup.
quack-flightsql.auth.google.groupsCacheTtlSecondsQOD_AUTH_GOOGLE_GROUPS_CACHE_TTL_SEC300Cache TTL for Google groups lookups in seconds.
quack-flightsql.auth.azure.enabledQOD_AUTH_AZURE_ENABLEDfalseEnable the Azure AD bearer provider.
quack-flightsql.auth.azure.tenantIdQOD_AUTH_AZURE_TENANT_ID(unset)Azure AD tenant ID.
quack-flightsql.auth.azure.clientIdQOD_AUTH_AZURE_CLIENT_ID(unset)Azure AD application (client) ID.
quack-flightsql.auth.azure.clientSecretQOD_AUTH_AZURE_CLIENT_SECRET***yesAzure AD application client secret.
quack-flightsql.auth.aws.enabledQOD_AUTH_AWS_ENABLEDfalseEnable the AWS Cognito bearer provider.
quack-flightsql.auth.aws.regionQOD_AUTH_AWS_REGIONus-east-1AWS region hosting the Cognito user pool.
quack-flightsql.auth.aws.userPoolIdQOD_AUTH_AWS_USER_POOL_ID(unset)Cognito user pool ID.
quack-flightsql.auth.aws.clientIdQOD_AUTH_AWS_CLIENT_ID(unset)Cognito app client ID.
quack-flightsql.auth.jwt.secretKeyJWT_SECRET_KEY***yesHMAC secret for HS256/HS512 external JWT verification.
quack-flightsql.auth.jwt.publicKeyPathJWT_PUBLIC_KEY_PATH(unset)Path to the RSA/ECDSA PEM public key for external JWT verification.
quack-flightsql.auth.jwt.issuerJWT_ISSUER(unset)Expected 'iss' claim value (empty = not checked).
quack-flightsql.auth.jwt.audienceJWT_AUDIENCE(unset)Expected 'aud' claim value (empty = not checked).
quack-flightsql.auth.oauthScopesQOD_AUTH_OAUTH_SCOPESopenid profile emailOAuth scopes requested at authorization time for the browser SQL-token flow.

quack-flightsql.validation

KeyEnv varDefaultSensitiveDescription
quack-flightsql.validation.enabledQOD_VALIDATION_ENABLEDtrueEnable per-statement SQL validation.
quack-flightsql.validation.allowByDefaultQOD_VALIDATION_ALLOW_BY_DEFAULTtrueWhen true, statements pass when no explicit rule matches.
quack-flightsql.validation.bypassUsersQOD_VALIDATION_BYPASS_USERS[email protected],adminComma-separated usernames that skip SQL validation entirely.

quack-on-demand

KeyEnv varDefaultSensitiveDescription
quack-on-demand.hostQOD_ON_DEMAND_HOST0.0.0.0Manager REST bind address (0.0.0.0 to listen on all interfaces).
quack-on-demand.portQOD_ON_DEMAND_PORT20900Manager REST + admin UI port.
quack-on-demand.apiKeyQOD_API_KEY***yesStatic admin API key sent as X-API-Key. Unset or empty disables the static-key arm; /api then accepts only session and PAT credentials (never open).
quack-on-demand.runtimeTypeQOD_RUNTIME_TYPElocalQuack node runtime backend: 'local' (child processes) or 'kubernetes'.
quack-on-demand.minPortQOD_MIN_PORT21900Lower bound of the port range LocalQuackBackend allocates child nodes from.
quack-on-demand.maxPortQOD_MAX_PORT22500Upper bound of the port range LocalQuackBackend allocates child nodes from.
quack-on-demand.maxNodesTotalQOD_MAX_NODES_TOTAL50Hard cap on concurrent child nodes across all pools.
quack-on-demand.nativeClientQOD_NATIVE_CLIENTtrueUse the JNI-backed native Quack wire client. False falls back to the embedded path.
quack-on-demand.stampWritesQOD_STAMP_WRITEStrueStamp DuckLake snapshots created by FlightSQL DML/DDL with author and commit message (native wire bracket; fail-open). Off = writes are never bracketed.
quack-on-demand.nodeDisableSslQOD_NODE_DISABLE_SSLtrueDisable TLS on the embedded path's quack_query() call. Ignored on the native path.
quack-on-demand.spawnScriptQOD_SPAWN_SCRIPT./scripts/spawn-quack-node.shPath to spawn-quack-node.sh invoked by LocalQuackBackend on Unix.
quack-on-demand.spawnScriptWindowsQOD_SPAWN_SCRIPT_WINDOWS./scripts/spawn-quack-node.ps1Path to the PowerShell spawn script (spawn-quack-node.ps1) invoked by LocalQuackBackend on Windows.
quack-on-demand.drainTimeoutSecQOD_DRAIN_TIMEOUT_SEC60Seconds to wait for in-flight statements during graceful pool shutdown.
quack-on-demand.healthCheckIntervalSecQOD_HEALTH_CHECK_INTERVAL_SEC5Seconds between supervisor health checks against child nodes.
quack-on-demand.reconcileIntervalSecQOD_RECONCILE_INTERVAL_SEC30Seconds between supervisor reconcile passes that respawn dead nodes. 0 disables the periodic loop (reconcile still runs once at boot).
quack-on-demand.publicBaseUrlQOD_PUBLIC_BASE_URL(unset)Externally visible base URL (e.g. https://qod.example.com) used to build password-reset links mailed to users. When empty the link is host-relative (/ui/reset-password?...) and Main logs a boot warning.
quack-on-demand.sessionIdleTtlSecQOD_SESSION_IDLE_TTL_SEC28800UI session idle TTL in seconds. A session unused for this long is dropped on the next access; each successful access slides the window. Manager restart still invalidates everything (sessions are heap-only).

quack-on-demand.admin

KeyEnv varDefaultSensitiveDescription
quack-on-demand.admin.usernameQOD_ADMIN_USERNAME[email protected],adminComma-separated admin usernames seeded into qodstate_user.
quack-on-demand.admin.passwordQOD_ADMIN_PASSWORD***yesBootstrap admin password (re-hashed on every boot).
quack-on-demand.admin.roleQOD_ADMIN_ROLEadminRole assigned to the bootstrap admin user.

quack-on-demand.auth

KeyEnv varDefaultSensitiveDescription
quack-on-demand.auth.management.identitySourceQOD_MGMT_IDENTITY_SOURCEdbSystem-scope (bare /ui/) admin-UI login mode: 'db' (password form) or 'oidc' (SSO). Per-tenant login mode is read from the tenant's authProvider, not this key.
quack-on-demand.auth.management.sessionJwtSecretQOD_SESSION_JWT_SECRET***yesHS256 secret used to sign UI session JWTs. Pin a stable value (>= 32 chars) to make sessions survive manager restart and to share session state across replicas. Empty = autogenerate a fresh 32-byte secret at boot (sessions die on restart, no horizontal scale).
quack-on-demand.auth.management.sessionCookieSecureQOD_SESSION_COOKIE_SECUREautoWhether the qod_session cookie carries the Secure flag. Accepts 'auto' (default, derives from the request's X-Forwarded-Proto -- https=Secure, http or absent=not Secure), 'true' (force Secure regardless of request scheme; use behind a TLS ingress that strips X-Forwarded-Proto), or 'false' (force not Secure).
quack-on-demand.auth.management.sessionCookiePathQOD_SESSION_COOKIE_PATH/apiPath attribute on the qod_session cookie. Default '/api'. Override when the manager sits behind a path-rewriting reverse proxy: the value must match the BROWSER-visible URL prefix, not the backend's. E.g. proxy at https://platform/quack/api/* -> QOD_SESSION_COOKIE_PATH=/quack/api.
quack-on-demand.auth.management.publicBaseUrlQOD_MGMT_PUBLIC_BASE_URL(unset)Externally visible manager base URL (e.g. https://qod.example.com). Used to build OIDC redirect_uri and post_logout_redirect_uri for admin-UI SSO. When empty, derived from X-Forwarded-Proto / X-Forwarded-Host / Host.
quack-on-demand.auth.management.oidc.issuerUrlQOD_MGMT_OIDC_ISSUER_URL(unset)OIDC issuer URL for admin-UI SSO (system scope), e.g. https://accounts.google.com or http://keycloak:8080/auth/realms/qod. Discovery reads ${issuerUrl}/.well-known/openid-configuration. Empty disables system-scope SSO.
quack-on-demand.auth.management.oidc.clientIdQOD_MGMT_OIDC_CLIENT_ID(unset)OIDC client id for admin-UI SSO (system scope).
quack-on-demand.auth.management.oidc.clientSecretQOD_MGMT_OIDC_CLIENT_SECRET***yesOIDC client secret for admin-UI SSO (system scope).
quack-on-demand.auth.management.oidc.scopesQOD_MGMT_OIDC_SCOPESopenid email profileOIDC scopes requested for admin-UI SSO. Default 'openid email profile'.
quack-on-demand.auth.management.slEnabledSL_ENABLEDfalseEnable the Starlake SSO integration (menu link, ticket endpoints, logout callback)
quack-on-demand.auth.management.slUrlSL_URL(unset)Starlake base URL for the SSO handoff and logout callback, e.g. https://starlake.example.com
quack-on-demand.auth.lockout.enabledQOD_AUTH_LOCKOUT_ENABLEDfalseLock a database-backed user out after maxFailures consecutive bad passwords. Requires SMTP to be configured (quack-on-demand.smtp.host) so a locked-out user has a self-service reset path; Main refuses to boot otherwise.
quack-on-demand.auth.lockout.maxFailuresQOD_AUTH_LOCKOUT_MAX_FAILURES10Consecutive failed logins before a database-backed user is locked out.

quack-on-demand.autoscale

KeyEnv varDefaultSensitiveDescription
quack-on-demand.autoscale.enabledQOD_AUTOSCALE_ENABLEDtrueGlobal kill switch for the demand scale-out sweep.
quack-on-demand.autoscale.sweepSecondsQOD_AUTOSCALE_SWEEP_SEC60Sweep interval in seconds; clamped to a 30s floor.
quack-on-demand.autoscale.windowMinutesQOD_AUTOSCALE_WINDOW_MINUTES5Load window W for the Little's-law concurrency estimate.
quack-on-demand.autoscale.highWatermarkQOD_AUTOSCALE_HIGH_WATERMARK0.8Scale-out utilization threshold.
quack-on-demand.autoscale.lowWatermarkQOD_AUTOSCALE_LOW_WATERMARK0.3Scale-in utilization threshold; must be < highWatermark.
quack-on-demand.autoscale.outStreakQOD_AUTOSCALE_OUT_STREAK2Consecutive sweeps above highWatermark before adding a reader.
quack-on-demand.autoscale.inStreakQOD_AUTOSCALE_IN_STREAK10Consecutive sweeps below lowWatermark before removing a reader.
quack-on-demand.autoscale.scaleOutCooldownSecQOD_AUTOSCALE_OUT_COOLDOWN_SEC180Per-pool cooldown after any scale action or resume before scaling out.
quack-on-demand.autoscale.scaleInCooldownSecQOD_AUTOSCALE_IN_COOLDOWN_SEC600Per-pool cooldown after any scale action before scaling in.
quack-on-demand.autoscale.assumedConcurrencyPerNodeQOD_AUTOSCALE_ASSUMED_CONCURRENCY4Capacity contribution of a node with maxConcurrent = 0 (unlimited).
quack-on-demand.autoscale.hardCapQOD_AUTOSCALE_HARD_CAP16Upper bound on maxNodes at validation time; a typo guard, not a quota.
quack-on-demand.autoscale.failureBackoffSweepsQOD_AUTOSCALE_FAILURE_BACKOFF_SWEEPS5Sweeps to skip a pool after 3 consecutive scale failures.

quack-on-demand.catalog

KeyEnv varDefaultSensitiveDescription
quack-on-demand.catalog.auditCatalogReadsQOD_AUDIT_CATALOG_READSfalseAudit catalog browser reads: one catalog.read event per gated GET. Off by default (reads are chatty; mutations are always audited).
quack-on-demand.catalog.previewMaxRowsQOD_CATALOG_PREVIEW_MAX_ROWS1000Hard cap on rows returned by the catalog data-preview endpoint.
quack-on-demand.catalog.previewTimeoutSecQOD_CATALOG_PREVIEW_TIMEOUT_SEC30Seconds before a catalog data-preview query is cancelled.
quack-on-demand.catalog.undropTimeoutSecQOD_CATALOG_UNDROP_TIMEOUT_SEC300Seconds before an undrop recovery CTAS is abandoned. Larger than the preview timeout because it is a mutation over potentially large tables; on timeout the handler probes whether the table was created anyway and reports accordingly.
quack-on-demand.catalog.restoreTimeoutSecQOD_CATALOG_RESTORE_TIMEOUT_SEC300Seconds before a restore CREATE OR REPLACE is abandoned. On timeout the handler probes whether the replace committed anyway and reports accordingly.

quack-on-demand.defaultMetastore

KeyEnv varDefaultSensitiveDescription
quack-on-demand.defaultMetastore.pgHostQOD_PG_HOSTlocalhostPostgres host for control plane + DuckLake catalog.
quack-on-demand.defaultMetastore.pgPortQOD_PG_PORT5432Postgres port.
quack-on-demand.defaultMetastore.pgUserQOD_PG_USERpostgresPostgres username used by the manager + Quack nodes.
quack-on-demand.defaultMetastore.pgPasswordQOD_PG_PASSWORD***yesPostgres password.
quack-on-demand.defaultMetastore.dbNameQOD_PG_DBNAMEqodControl-plane database name (default 'qod').
quack-on-demand.defaultMetastore.schemaNameQOD_PG_SCHEMAmainPostgres schema for control-plane tables.
quack-on-demand.defaultMetastore.dataPathQOD_DUCKLAKE_DATA_PATH./ducklake/tpchRoot path for DuckLake parquet data files.

quack-on-demand.federation

KeyEnv varDefaultSensitiveDescription
quack-on-demand.federation.secretStoreQOD_FEDERATION_SECRET_STOREdispatchFederation secret resolver: postgres | env | aws-sm | gcp-sm | azure-kv | vault.

quack-on-demand.ha

KeyEnv varDefaultSensitiveDescription
quack-on-demand.ha.enabledQOD_HA_ENABLEDfalseEnable active-active multi-replica manager mode (Kubernetes runtime only).
quack-on-demand.ha.leaderRetrySecQOD_LEADER_RETRY_SEC3Seconds between leader-lock acquisition attempts and LISTEN polls.
quack-on-demand.ha.topologyRefreshSecQOD_TOPOLOGY_REFRESH_SEC30Seconds between snapshot-refresh fallback passes in HA mode.

quack-on-demand.k8s

KeyEnv varDefaultSensitiveDescription
quack-on-demand.k8s.namespaceQOD_K8S_NAMESPACEdefaultKubernetes namespace KubernetesQuackBackend operates in.
quack-on-demand.k8s.imageQOD_K8S_IMAGEstarlakeai/quack-on-demand-node:latest-snapshotDocker image used for spawned Quack-node pods.
quack-on-demand.k8s.serviceAccountQOD_K8S_SERVICE_ACCOUNT(unset)ServiceAccount applied to spawned node pods (unset = default).
quack-on-demand.k8s.serviceTypeQOD_K8S_SERVICE_TYPEClusterIPKubernetes Service type fronting node pods.
quack-on-demand.k8s.quackPortQOD_K8S_QUACK_PORT8080Container port exposing each node's /quack endpoint.
quack-on-demand.k8s.startupTimeoutSecQOD_K8S_STARTUP_TIMEOUT_SEC120Seconds to wait for a spawned node pod to become ready.
quack-on-demand.k8s.stopTimeoutSecQOD_K8S_STOP_TIMEOUT_SEC60Seconds stop() waits for a deleted node pod to actually disappear before proceeding.
quack-on-demand.k8s.podLabelQOD_K8S_POD_LABELmanaged-by=quack-on-demandLabel selector that identifies manager-owned node pods.
quack-on-demand.k8s.podTemplateEnabledQOD_POD_TEMPLATE_ENABLEDfalseAllow superusers to supply a full Pod-manifest YAML template for a pool's node pods. Off by default; raw manifests are cluster-level power.
quack-on-demand.k8s.runAsUserQOD_K8S_RUN_AS_USER1000Pod-level runAsUser/fsGroup applied to spawned node pods. A pod template's own securityContext.runAsUser (if set) wins over this default.

quack-on-demand.maintenance

KeyEnv varDefaultSensitiveDescription
quack-on-demand.maintenance.enabledQOD_MAINT_ENABLEDtrueEnable the maintenance scheduler + drain-loop fibers.
quack-on-demand.maintenance.tickSecQOD_MAINT_TICK_SEC60Seconds between maintenance scheduler ticks (cadence + threshold checks).
quack-on-demand.maintenance.maxConcurrentQOD_MAINT_MAX_CONCURRENT2Max maintenance runs executing concurrently across the manager.
quack-on-demand.maintenance.minIntervalMinQOD_MAINT_MIN_INTERVAL_MIN30Minimum minutes between non-manual maintenance runs of the same tenant-db.
quack-on-demand.maintenance.runTimeoutMinQOD_MAINT_RUN_TIMEOUT_MIN60Minutes without a heartbeat before a running maintenance run is swept as failed.
quack-on-demand.maintenance.nodeReadyTimeoutSecQOD_MAINT_NODE_READY_TIMEOUT_SEC180Seconds to wait for the ephemeral maintenance node to accept connections after spawn before the run is failed as 'node spawn failed'. Covers cold-start extension installs.

quack-on-demand.managedObjectStore

KeyEnv varDefaultSensitiveDescription
quack-on-demand.managedObjectStore.enabledQOD_MANAGED_STORE_ENABLEDfalseGlobal kill switch for managed object storage. Off = managed creates 400.
quack-on-demand.managedObjectStore.endpointQOD_MANAGED_STORE_ENDPOINT(unset)S3-compatible endpoint URL for the operator root bucket.
quack-on-demand.managedObjectStore.regionQOD_MANAGED_STORE_REGIONus-east-1Region passed to the S3-compatible client.
quack-on-demand.managedObjectStore.bucketQOD_MANAGED_STORE_BUCKETqod-managedOperator root bucket; each tenant-db incarnation gets its own prefix.
quack-on-demand.managedObjectStore.accessKeyIdQOD_MANAGED_STORE_ACCESS_KEY_ID(unset)Access key id for the operator root bucket.
quack-on-demand.managedObjectStore.secretAccessKeyQOD_MANAGED_STORE_SECRET_ACCESS_KEY***yesSecret access key for the operator root bucket.
quack-on-demand.managedObjectStore.urlStyleQOD_MANAGED_STORE_URL_STYLEpathBucket addressing style presented to clients: 'path' or 'vhost'.
quack-on-demand.managedObjectStore.retainDaysQOD_MANAGED_STORE_RETAIN_DAYS7Days a deleted tenant-db prefix is retained before the purge worker removes it.
quack-on-demand.managedObjectStore.purgeSweepSecQOD_MANAGED_STORE_PURGE_SWEEP_SEC300Purge worker sweep interval in seconds; clamped to a 60s floor.

quack-on-demand.mcp

KeyEnv varDefaultSensitiveDescription
quack-on-demand.mcp.enabledQOD_MCP_ENABLEDtrueServe the MCP endpoint at POST /mcp.
quack-on-demand.mcp.maxRowsQOD_MCP_MAX_ROWS500Hard cap on rows returned by the run_sql MCP tool.

quack-on-demand.metrics

KeyEnv varDefaultSensitiveDescription
quack-on-demand.metrics.sinkQOD_METRICS_SINKprometheusActive metrics sink: prometheus | aws | azure | gcp | none.
quack-on-demand.metrics.aws.namespaceQOD_METRICS_AWS_NAMESPACEquack-on-demandCloudWatch namespace when metrics.sink=aws.
quack-on-demand.metrics.aws.stepSecondsQOD_METRICS_AWS_STEP_SEC60CloudWatch publish step in seconds.
quack-on-demand.metrics.azure.instrumentationKeyQOD_METRICS_AZURE_KEY***yesAzure Monitor instrumentation key.
quack-on-demand.metrics.azure.stepSecondsQOD_METRICS_AZURE_STEP_SEC60Azure Monitor publish step in seconds.
quack-on-demand.metrics.gcp.projectIdQOD_METRICS_GCP_PROJECT_ID(unset)GCP project ID when metrics.sink=gcp.
quack-on-demand.metrics.gcp.stepSecondsQOD_METRICS_GCP_STEP_SEC60GCP Cloud Monitoring publish step in seconds.

quack-on-demand.routing

KeyEnv varDefaultSensitiveDescription
quack-on-demand.routing.cacheAwareQOD_ROUTING_CACHE_AWAREtrueCache-aware placement on object-store pools. false instantly reverts routing decisions to pure least-loaded; locality metrics and their memoized statement parse keep running.
quack-on-demand.routing.loadCapFactorQOD_ROUTING_LOAD_CAP_FACTOR2.0Load cap c: a table's home node is bypassed when its inFlight exceeds c x pool average.
quack-on-demand.routing.directoryMaxTablesQOD_ROUTING_DIRECTORY_MAX_TABLES4096Per-pool bound on placement-directory entries (LRU-evicted). Safety bound.

quack-on-demand.smtp

KeyEnv varDefaultSensitiveDescription
quack-on-demand.smtp.hostQOD_SMTP_HOST(unset)SMTP relay host. Unset keeps the manager on the log-only mail sender.
quack-on-demand.smtp.portQOD_SMTP_PORT587SMTP relay port.
quack-on-demand.smtp.userQOD_SMTP_USER(unset)SMTP auth username. Unset disables SMTP auth.
quack-on-demand.smtp.passwordQOD_SMTP_PASSWORD***yesSMTP auth password.
quack-on-demand.smtp.fromQOD_SMTP_FROM[email protected]From address stamped on outgoing mail.
quack-on-demand.smtp.starttlsQOD_SMTP_STARTTLStrueUse STARTTLS when connecting to the SMTP relay.

quack-on-demand.telemetry

KeyEnv varDefaultSensitiveDescription
quack-on-demand.telemetry.storeQOD_TELEMETRY_STOREpostgresTelemetry store backing audit log (and, later, history/usage): postgres | none (record nothing).
quack-on-demand.telemetry.auditRetentionDaysQOD_AUDIT_RETENTION_DAYS90Days to keep audit events before the hourly purge deletes them.
quack-on-demand.telemetry.journalCapacityQOD_TELEMETRY_JOURNAL_CAPACITY8192Bounded in-process telemetry journal capacity; overflow drops events (counted).
quack-on-demand.telemetry.stmtHistoryRetentionDaysQOD_STMT_HISTORY_RETENTION_DAYS7Days to keep statement-history rows before the periodic purge removes them.
quack-on-demand.telemetry.hourlyRollupRetentionDaysQOD_HOURLY_ROLLUP_RETENTION_DAYS90Days to keep hourly rollup buckets before the periodic purge removes them.
quack-on-demand.telemetry.rollupIntervalSecQOD_ROLLUP_INTERVAL_SEC300Seconds between rollup computation passes that aggregate raw statement history into rollup buckets.
quack-on-demand.telemetry.usageRetentionDaysQOD_USAGE_RETENTION_DAYS400Days to keep daily rollup buckets (the usage-accounting ledger) before the periodic purge removes them. 400 covers a full billing year.