Skip to content

Configuration reference

Reference
For:
Server operators

This page lists every configuration key ReputeCast reads, with the ReputeCast environment variables that set them and their defaults.

ReputeCast builds its configuration from five layers; a later layer overrides an earlier one:

  1. Built-in defaults (the Default column below).
  2. The YAML file named by --config or REPUTECAST_CONFIG.
  3. REPUTECAST_* environment variables. A double underscore separates levels: REPUTECAST_HTTP__PUBLIC_URL sets http.public_url.
  4. DATABASE_URL, only when REPUTECAST_DATABASE__URL is not set.
  5. Command-line flags you pass explicitly: --role, --addr, --database-url and --log-level.

For list keys (roles, http.trusted_proxies, secrets.previous_keys, dns.servers), separate the values in an environment variable with commas. ReputeCast refuses to start when a value can’t be parsed, a role is not web, worker or ingest, http.public_url is not an absolute URL, secrets.key is not a base64-encoded 32-byte key, or auth.password_min_length is below 8. Configure ReputeCast explains the layers with a complete YAML example.

KeyEnvironment variableDefaultDescription
envstringREPUTECAST_ENVproductionRun mode: production or development. development enables the seed and demo commands, the demo's simulated providers, DNS and other services, delivery of the demo's mail to mail.dev_smtp and the pseudo-locale. Use production for every real instance.
roleslistREPUTECAST_ROLESweb,worker,ingestRoles this process runs: web (app, API, public pages, MCP and the SMTP relay), ingest (provider webhooks) and worker (background jobs). The --role flag of serve overrides it. As an environment variable, separate roles with commas.
KeyEnvironment variableDefaultDescription
http.addrstringREPUTECAST_HTTP__ADDR:8080Address the HTTP server listens on. The --addr flag of serve overrides it.
http.public_urlstringREPUTECAST_HTTP__PUBLIC_URLhttp://localhost:8080Address people and sending providers use to reach this instance. ReputeCast builds provider webhook URLs, sign-in redirects, passkeys, public pages and links in emails from it, so providers must be able to reach it from the internet. Must be an absolute URL; an https:// address turns on HSTS and Secure cookies. A public URL saved in Instance admin › Instance & updates replaces it.
http.trusted_proxieslistREPUTECAST_HTTP__TRUSTED_PROXIES—IP addresses or CIDR ranges of your reverse proxies. Only requests from them may set the client address with X-Forwarded-For or X-Real-IP, which rate limits and the audit log use. As an environment variable, separate entries with commas.
http.rate_limit_authintREPUTECAST_HTTP__RATE_LIMIT_AUTH30Requests per minute each client IP address may make to the sign-in endpoints (/api/v1/auth/*).
http.rate_limit_apiintREPUTECAST_HTTP__RATE_LIMIT_API600Requests per minute each API key may make to the API, or each IP address for browser sessions. 0 or less turns off both this limit and http.rate_limit_auth.
http.read_timeoutdurationREPUTECAST_HTTP__READ_TIMEOUT30sLongest time the server waits to read a whole request, body included.
http.write_timeoutdurationREPUTECAST_HTTP__WRITE_TIMEOUT60sLongest time the server spends writing a response.
http.shutdown_timeoutdurationREPUTECAST_HTTP__SHUTDOWN_TIMEOUT20sHow long a stopping process waits for open requests to finish.
KeyEnvironment variableDefaultDescription
database.urlstringREPUTECAST_DATABASE__URLpostgres://reputecast:reputecast@localhost:5432/reputecast?sslmode=disablePostgreSQL connection URL. When REPUTECAST_DATABASE__URL is unset, DATABASE_URL is used instead. The --database-url flag overrides both. The default matches the development database.
database.max_connsintREPUTECAST_DATABASE__MAX_CONNS20Size of each process's connection pool. Keep the total over all processes below PostgreSQL's max_connections.
KeyEnvironment variableDefaultDescription
secrets.keystringREPUTECAST_SECRETS__KEY—Base64-encoded 32-byte key that encrypts provider credentials and other secrets in the database (AES-256-GCM). Create one with reputecast secrets generate-key. When it is empty, the key is read from secrets.key_file. Back it up with the database: without it, stored credentials can't be decrypted.
secrets.previous_keyslistREPUTECAST_SECRETS__PREVIOUS_KEYS—Earlier keys, still accepted for decrypting while you rotate. To rotate, move the current key here and set a new secrets.key. As an environment variable, separate keys with commas.
secrets.key_filestringREPUTECAST_SECRETS__KEY_FILEdata/secret.keyFile that holds the key when secrets.key is empty, relative to the working directory unless absolute. If the file doesn't exist, ReputeCast creates it with a new key (mode 0600) and logs a warning to back it up. The Docker image sets /var/lib/reputecast/secret.key.
KeyEnvironment variableDefaultDescription
log.levelstringREPUTECAST_LOG__LEVELinfoLowest level logged: debug, info, warn or error. The --log-level flag overrides it.
log.formatstringREPUTECAST_LOG__FORMATtextLog format, text or json. Logs go to standard error. The Docker image sets json.
KeyEnvironment variableDefaultDescription
auth.session_idledurationREPUTECAST_AUTH__SESSION_IDLE12hIdle timeout used only when the authentication policy can't be read from the database. Set the idle timeout in Instance admin › Authentication.
auth.cookie_namestringREPUTECAST_AUTH__COOKIE_NAMErc_sessionName of the session cookie.
auth.cookie_secureboolREPUTECAST_AUTH__COOKIE_SECUREtrueMark the session cookie Secure, so browsers send it over HTTPS only. Ignored in development. An http.public_url that starts with https:// always makes the cookie Secure.
auth.password_min_lengthintREPUTECAST_AUTH__PASSWORD_MIN_LENGTH12Minimum length of passwords set with reputecast install and reputecast user reset-password --password. At least 8. Passwords set in the app follow the policy in Instance admin › Authentication.
KeyEnvironment variableDefaultDescription
worker.concurrencyintREPUTECAST_WORKER__CONCURRENCY50Background jobs a worker process runs at once on its sending queue. The other queues get a share of it: events half, default a quarter and system a fifth, at least 2 each. Values below 4 count as 4.
KeyEnvironment variableDefaultDescription
updates.checkboolREPUTECAST_UPDATES__CHECKtrueAllow the daily check for a newer ReputeCast release on GitHub and for a newer WordPress plugin. false turns both off for the whole instance. When it is true, instance admins can still turn the check off in Instance admin › Instance & updates.
updates.repostringREPUTECAST_UPDATES__REPOhostrepute/reputecastGitHub repository the release check reads, as owner/name.
KeyEnvironment variableDefaultDescription
metrics.enabledboolREPUTECAST_METRICS__ENABLEDtrueServe Prometheus metrics at /metrics.
metrics.addrstringREPUTECAST_METRICS__ADDR—Separate listen address for /metrics, such as :9090. Empty serves /metrics on the main HTTP listener. A process that runs only the worker role has no main listener, so set this to collect its metrics.
KeyEnvironment variableDefaultDescription
webhooks.allow_private_networksboolREPUTECAST_WEBHOOKS__ALLOW_PRIVATE_NETWORKSfalseLet URLs that ReputeCast sends webhooks to (webhook endpoints, the audit log stream, integration hooks such as a private n8n, and referral reward webhooks) resolve to loopback and private (RFC 1918) addresses. Off by default, so users can't reach internal services. Link-local and cloud metadata addresses are always blocked.
KeyEnvironment variableDefaultDescription
providers.allow_private_networksboolREPUTECAST_PROVIDERS__ALLOW_PRIVATE_NETWORKSfalseLet addresses that workspace admins enter for outside services resolve to loopback and private (RFC 1918) addresses: sending provider APIs and SMTP servers, community adapter processes, AI model servers, importers, feeds, verification services, seed mailboxes and other connected services. Off by default, so users can't reach internal services. Link-local and cloud metadata addresses are always blocked. Community adapters on such addresses may use plain http://.
KeyEnvironment variableDefaultDescription
hostrepute.api_urlstringREPUTECAST_HOSTREPUTE__API_URLhttps://api.hostrepute.com/v1HostRepute API base URL for new connections.
hostrepute.auth_urlstringREPUTECAST_HOSTREPUTE__AUTH_URLhttps://app.hostrepute.com/oauth/authorizeHostRepute OAuth authorization endpoint.
hostrepute.token_urlstringREPUTECAST_HOSTREPUTE__TOKEN_URLhttps://api.hostrepute.com/oauth/tokenHostRepute OAuth token endpoint.
hostrepute.revoke_urlstringREPUTECAST_HOSTREPUTE__REVOKE_URLhttps://api.hostrepute.com/oauth/revokeHostRepute OAuth token revocation endpoint, called when a workspace disconnects.
hostrepute.client_idstringREPUTECAST_HOSTREPUTE__CLIENT_IDreputecastOAuth client ID. ReputeCast connects as a public client with PKCE; set this and hostrepute.client_secret only if you registered your own client with HostRepute.
hostrepute.client_secretstringREPUTECAST_HOSTREPUTE__CLIENT_SECRET—OAuth client secret of your own registered client. Leave it empty for the default public client.
hostrepute.demoboolREPUTECAST_HOSTREPUTE__DEMOfalseUse a built-in offline HostRepute with sample data and instant OAuth approval, for development and screenshots.
KeyEnvironment variableDefaultDescription
dns.serverslistREPUTECAST_DNS__SERVERS—DNS resolvers for authentication checks and blocklist lookups, as host or host:port. Empty uses the system resolvers. Blocklists such as Spamhaus refuse queries that come through public resolvers, so use your own resolver. As an environment variable, separate servers with commas.
dns.timeoutdurationREPUTECAST_DNS__TIMEOUT4sTimeout of one DNS lookup.
KeyEnvironment variableDefaultDescription
mail.dev_smtpstringREPUTECAST_MAIL__DEV_SMTPlocalhost:1025Development only: SMTP address (host:port) of a mail catcher such as Mailpit, where mail for the demo's sample providers goes instead of a real provider.
KeyEnvironment variableDefaultDescription
connect.ses_template_urlstringREPUTECAST_CONNECT__SES_TEMPLATE_URLhttps://reputecast.com/cf/reputecast-ses.yamlCloudFormation template that the Launch stack link opens when you connect Amazon SES. Point it at your own published copy to use a different template.
KeyEnvironment variableDefaultDescription
i18n.pseudo_localeboolREPUTECAST_I18N__PSEUDO_LOCALEfalseOffer the Pseudo (+40%) app language outside development, to check layouts on a staging instance. Every string is accented, about 40% longer and wrapped in ⟦ ⟧. Development always offers it.
KeyEnvironment variableDefaultDescription
files.dirstringREPUTECAST_FILES__DIR—Folder for uploaded files such as digital products and lead magnets. Empty uses a files folder next to secrets.key_file (/var/lib/reputecast/files in the Docker image). When you split roles across machines, every web and worker process needs the same folder.
Environment variableDefaultDescription
REPUTECAST_CONFIGstring—Path to a YAML config file, read when the --config flag is not passed.
DATABASE_URLstring—PostgreSQL connection URL, used when REPUTECAST_DATABASE__URL is unset. It overrides database.url from the config file.
REPUTECAST_AUTO_MIGRATEboolfalseDefault of reputecast serve --auto-migrate: true applies pending migrations at start. The Docker image's start command passes the flag, and the shipped docker-compose.yml sets the variable to true.
REPUTECAST_AUTO_INSTALLboolfalseDefault of reputecast serve --auto-install: true creates the first Owner at start when the database has no users. The Docker image's start command passes the flag, and the shipped docker-compose.yml sets the variable to true.
REPUTECAST_ADMIN_EMAILstring—Email of the first Owner, read by reputecast install when --email is not passed and by serve --auto-install. The shipped docker-compose.yml passes [email protected] when you don't set it.
REPUTECAST_ADMIN_NAMEstring—Name of the first Owner, read by reputecast install when --name is not passed and by serve --auto-install.
REPUTECAST_ADMIN_PASSWORDstring—Password of the first Owner, read by reputecast install when --password is not passed and by serve --auto-install. When it is unset, a temporary password is printed instead.
REPUTECAST_IMAGEstringghcr.io/hostrepute/reputecastRead by the shipped docker-compose.yml, not by ReputeCast: the image the app service runs. Set it to reputecast with REPUTECAST_VERSION=local to run an image built from a checkout with make docker VERSION=local.
REPUTECAST_VERSIONstringlatestRead by the shipped docker-compose.yml, not by ReputeCast: the image tag the app service runs.
REPUTECAST_PORTint8080Read by the shipped docker-compose.yml, not by ReputeCast: the host port published to the app container's port 8080.
REPUTECAST_PUBLIC_URLstringhttp://localhost:8080Read by the shipped docker-compose.yml, which passes it to the app as REPUTECAST_HTTP__PUBLIC_URL. Setting it on a binary you run yourself does nothing; set REPUTECAST_HTTP__PUBLIC_URL there.
POSTGRES_PASSWORDstringreputecastRead by the shipped docker-compose.yml: the password of the postgres service's reputecast user, also used in the app's database URL. Set your own before the first start.
REPUTECAST_ADAPTER_SECRETlist—Read by community adapter processes built with the adapter SDK: the signing secret that reputecast adapter install or reputecast adapter secret printed. During a rotation, set several secrets separated by commas.
REPUTECAST_ADAPTER_ALLOW_HOSTSlist—Read by community adapter processes built with the adapter SDK: extra hosts the adapter may call on top of those in its manifest, separated by commas, for example a local fake provider in tests.
REPUTECAST_ADAPTER_LOG_LEVELstringinfoRead by community adapter processes built with the adapter SDK: the lowest level logged, debug, info, warn or error.
PORTint4600Read by community adapter processes built with the adapter SDK: the port the adapter listens on.
HOSTstring127.0.0.1Read by community adapter processes built with the adapter SDK: the address the adapter listens on. The adapter template's Docker image sets 0.0.0.0.