Configuration Reference

Global configuration is provided through environment variables or a YAML config file. When deploying on Kubernetes, use a ConfigMap.

Required Variables

These variables must be set for Outpost to start:

VariableDescription
AES_ENCRYPTION_SECRET16, 24, or 32 byte key for AES encryption of sensitive data
API_JWT_SECRETSecret for signing and verifying JWTs
API_KEYAPI key for authenticating requests to the Outpost API
REDIS_HOSTHostname of the Redis server (default: 127.0.0.1)
REDIS_PORTPort of the Redis server (default: 6379)
REDIS_DATABASERedis database number (default: 0)

Message Queue

Choose one message queue provider. The selected provider is used for both event delivery and log queues.

RabbitMQ:

VariableDescription
RABBITMQ_SERVER_URLRabbitMQ connection URL (e.g., amqp://user:pass@host/vhost)
RABBITMQ_EXCHANGEExchange name (default: outpost)

AWS SQS:

VariableDescription
AWS_SQS_ACCESS_KEY_IDAWS Access Key ID
AWS_SQS_SECRET_ACCESS_KEYAWS Secret Access Key
AWS_SQS_REGIONAWS Region

GCP Pub/Sub:

VariableDescription
GCP_PUBSUB_PROJECTGCP Project ID
GCP_PUBSUB_SERVICE_ACCOUNT_CREDENTIALSService account JSON string or file path

Azure Service Bus:

VariableDescription
AZURE_SERVICEBUS_NAMESPACEAzure Service Bus namespace
AZURE_SERVICEBUS_TENANT_IDAzure Active Directory tenant ID
AZURE_SERVICEBUS_CLIENT_IDService principal client ID
AZURE_SERVICEBUS_CLIENT_SECRETService principal client secret

Log Storage

Choose one for event log persistence:

VariableDescription
POSTGRES_URLPostgreSQL connection URL
CLICKHOUSE_ADDRClickHouse address (e.g., localhost:9000)

Delivery

VariableDefaultDescription
DELIVERY_MAX_CONCURRENCY1Max concurrent delivery attempts
DELIVERY_TIMEOUT_SECONDS5HTTP request timeout for webhook delivery
MAX_RETRY_LIMIT10Max retry attempts before giving up
RETRY_INTERVAL_SECONDS30Base interval for exponential backoff retries
RETRY_SCHEDULEComma-separated retry delays in seconds (overrides interval/limit)

Topics

VariableDescription
TOPICSComma-separated list of topics your instance supports

Portal

VariableDefaultDescription
PORTAL_REFERER_URLRequired. URL to redirect users to when JWT expires
PORTAL_REFRESH_URLURL in your app to silently re-authenticate and generate a new JWT
PORTAL_ORGANIZATION_NAMEOrganization name shown in the portal header
PORTAL_ACCENT_COLORPrimary brand color (hex code, e.g., #6122E7)
PORTAL_LOGOURL for the light-mode portal logo
PORTAL_LOGO_DARKURL for the dark-mode portal logo
PORTAL_FAVICON_URLURL for the portal favicon
PORTAL_FORCE_THEMEForce portal theme: light or dark
PORTAL_DISABLE_OUTPOST_BRANDINGfalseRemove the "Powered by Outpost" footer
PORTAL_ENABLE_DESTINATION_FILTERfalseShow filter configuration UI per destination
PORTAL_ENABLE_WEBHOOK_CUSTOM_HEADERSfalseAllow tenants to set custom HTTP headers on webhook destinations

Alerts

VariableDefaultDescription
ALERT_CALLBACK_URLURL to POST to when an alert fires
ALERT_CONSECUTIVE_FAILURE_COUNT20Consecutive failures before alert triggers
ALERT_AUTO_DISABLE_DESTINATIONtrueAuto-disable destination when failure count reaches 100%

Destinations

VariableDefaultDescription
MAX_DESTINATIONS_PER_TENANT20Maximum destinations each tenant may create. Set as low as is practical for your product to limit abuse and load; lowering this value later does not remove destinations that already exist.
DESTINATIONS_METADATA_PATHOptional. Filesystem path to a directory of custom destination metadata (per-type metadata.json and instructions.md). Non-core fields such as label, description, icon, and instructions can be customized; config_fields and credential_fields cannot be overridden.

Webhook Behavior

VariableDefaultDescription
DESTINATIONS_WEBHOOK_MODEdefaultSet to standard for Standard Webhooks compliance
DESTINATIONS_WEBHOOK_HEADER_PREFIXx-outpost-Prefix for all webhook headers
DESTINATIONS_WEBHOOK_DISABLE_EVENT_ID_HEADERfalseDisable the event ID header
DESTINATIONS_WEBHOOK_DISABLE_TIMESTAMP_HEADERfalseDisable the timestamp header
DESTINATIONS_WEBHOOK_DISABLE_TOPIC_HEADERfalseDisable the topic header
DESTINATIONS_WEBHOOK_DISABLE_SIGNATURE_HEADERfalseDisable the signature header
DESTINATIONS_WEBHOOK_SIGNATURE_ALGORITHMhmac-sha256Signature algorithm
DESTINATIONS_WEBHOOK_SIGNATURE_ENCODINGhexEncoding: hex or base64

Observability

VariableDescription
OTEL_SERVICE_NAMEEnables OpenTelemetry metrics export when set
LOG_LEVELLog verbosity: trace, debug, info, warn, error (default: info)
DISABLE_TELEMETRYSet to true to disable anonymous usage telemetry to Hookdeck

YAML Configuration

All environment variables can also be specified in a YAML config file using snake_case keys:

aes_encryption_secret: "your-secret-here"
api_jwt_secret: "your-jwt-secret"
api_key: "your-api-key"

topics: "user.created,user.updated,order.placed"

redis:
  host: "127.0.0.1"
  port: 6379
  database: 0

# Choose one message queue:
rabbitmq:
  server_url: "amqp://user:pass@localhost/vhost"

delivery:
  max_concurrency: 5
  timeout_seconds: 10

portal:
  referer_url: "https://yourapp.com/settings/webhooks"
  organization_name: "Acme Corp"
  accent_color: "#6122E7"

alerts:
  callback_url: "https://yourapp.com/api/outpost-alerts"
  consecutive_failure_count: 50