Skip to content

Environment and configuration reference ​

Environment variables ​

VariableDefaultMeaning
DIP_CONFIG/run/secrets/dip-config.jsonPath to the JSON configuration file.
PORT3000 (used by the Compose file and the health check)Port the server listens on. The configuration file's port takes precedence for the process.
NODE_ENVunsetSet to production in the image.

No other variables are read. Secrets are never read from the environment, so they cannot leak through process listings or logs.

Configuration file ​

FieldRequiredMeaning
portno (3000)Listen port, 1 to 65535.
maxDecisionAgeSecondsno (300)A decision older than this cannot execute.
executionTimeoutMsno (5000)Connector time limit before the attempt is recorded as TIMED_OUT.
storage.dataDirno (absent = in memory)Directory for the embedded file-backed database. Only one process may open it at a time. Mutually exclusive with storage.postgresUrlPath.
storage.postgresUrlPathnoPath to a secret file holding a postgres:// connection string. The server uses PostgreSQL and writes every change before answering. Mutually exclusive with storage.dataDir.
rateLimit.maxno (600)Requests per principal per window.
rateLimit.windowMsno (60000)Window length in milliseconds.
trustRoots[]yesPublic keys: keyId, jwk (Ed25519 OKP), status (ACTIVE or REVOKED). At least one.
engineyeskeyId plus either privateKeyPath (local key, development only) or kmsKeyId (AWS KMS Ed25519 key; production). Setting both is refused.
evidenceSigneryesSame as engine, for the evidence-signing key.
kms.regionwhen a signer uses kmsKeyIdAWS region of the KMS keys, for example us-east-1. Credentials come from the AWS SDK default chain (an IAM role in production), never from this file.
principals[]yesname, tenantId (string, or null for cross-tenant), scopes (admin, approver), apiKeyPath. At least one.

Error codes at startup ​

CodeCause
CONFIG_UNREADABLEThe configuration file is missing or is not JSON.
INVALID_CONFIGA field is missing or has the wrong type.
INVALID_KEYA private key file is missing, unparseable, or not Ed25519.
WEAK_API_KEYAn API key is shorter than 32 characters.

The process exits with status 1 and prints the code and the field name. It never prints key material.

Released under the Apache License 2.0.