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.tenantClaimPROXY_TENANT_CLAIMtenantJWT claim that carries the tenant identifier for routing.
quack-flightsql.sessionTtlSecQOD_SESSION_TTL_SEC3600Edge session TTL in seconds before a fresh handshake is forced.

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.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.queryQOD_AUTH_DB_QUERYSELECT password_hash, role FROM qodstate_user WHERE (tenant IS NULL OR tenant = ?) AND username = ? ORDER BY (tenant IS NOT NULL) DESC LIMIT 1SQL template returning (password_hash, role); accepts three ? placeholders for tenant, pool, 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.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.oauth.enabledQOD_AUTH_OAUTH_ENABLEDfalseEnable the browser-based OAuth (auth-code grant) flow.
quack-flightsql.auth.oauth.portQOD_AUTH_OAUTH_PORT8888Local port the OAuth callback server listens on.
quack-flightsql.auth.oauth.baseUrlQOD_AUTH_OAUTH_BASE_URLhttp://localhost:8888Externally-reachable base URL for OAuth callbacks.
quack-flightsql.auth.oauth.scopesQOD_AUTH_OAUTH_SCOPESopenid profile emailOAuth scopes requested at authorization time.
quack-flightsql.auth.oauth.sessionTimeoutSecondsQOD_AUTH_OAUTH_SESSION_TIMEOUT_SEC3600OAuth-session timeout in seconds.
quack-flightsql.auth.oauth.disableTlsQOD_AUTH_OAUTH_DISABLE_TLSfalseDisable TLS on the OAuth callback server (dev only).

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_USERSadmin@localhost.local,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 = REST namespace is 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.statePathQOD_STATE_PATH./state/quack-on-demand-state.jsonFile-mode state path (only used when stateStorage=file).
quack-on-demand.stateStorageQOD_STATE_STORAGEpostgresControl-plane store: 'postgres' (qodstate_* tables) or 'file' (JSON blob).
quack-on-demand.nativeClientQOD_NATIVE_CLIENTtrueUse the JNI-backed native Quack wire client. False falls back to the embedded path.
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.
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.admin

KeyEnv varDefaultSensitiveDescription
quack-on-demand.admin.usernameQOD_ADMIN_USERNAMEadmin@localhost.local,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_AUTH_MANAGEMENT_IDENTITY_SOURCEdbManagement-plane identity source: 'db' (qodstate_user as identity+authz) or 'oidc' (IdP for identity, qodstate_user for role+tenants).
quack-on-demand.auth.management.identityClaimQOD_AUTH_MANAGEMENT_IDENTITY_CLAIMpreferred_usernameJWT claim matched against qodstate_user.username when identitySource=oidc (email is tried as a fallback).

quack-on-demand.bootstrap

KeyEnv varDefaultSensitiveDescription
quack-on-demand.bootstrap.enabledQOD_BOOTSTRAP_ENABLEDtrueAuto-create starter tenant + pool on boot. Idempotent.
quack-on-demand.bootstrap.tenantQOD_BOOTSTRAP_TENANTtpchTenant name seeded at boot.
quack-on-demand.bootstrap.tenantDbQOD_BOOTSTRAP_TENANTDBtpch1Tenant-db suffix; actual DB is ${tenant}_${tenantDb}.
quack-on-demand.bootstrap.poolQOD_BOOTSTRAP_POOLsalesPool name seeded at boot.
quack-on-demand.bootstrap.roleDistribution.writeonlyQOD_BOOTSTRAP_WRITEONLY1Number of WRITEONLY nodes in the bootstrap pool.
quack-on-demand.bootstrap.roleDistribution.readonlyQOD_BOOTSTRAP_READONLY1Number of READONLY nodes in the bootstrap pool.
quack-on-demand.bootstrap.roleDistribution.dualQOD_BOOTSTRAP_DUAL1Number of DUAL nodes in the bootstrap pool.

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.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.podLabelQOD_K8S_POD_LABELmanaged-by=quack-on-demandLabel selector that identifies manager-owned node pods.

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.