# YOU MIGHT LIKE TO MODIFY THESE VARIABLES SESSION_SECRET=abcdef1234 MAGIC_LINK_SECRET=abcdef1234 ENCRYPTION_KEY=ae13021afef0819c3a307ad487071c06 # Must be a random 16 byte hex string. You can generate an encryption key by running `openssl rand -hex 16` in your terminal LOGIN_ORIGIN=http://localhost:3030 DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres?schema=public # This sets the URL used for direct connections to the database and should only be needed in limited circumstances # See: https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#fields:~:text=the%20shadow%20database.-,directUrl,-No DIRECT_URL=${DATABASE_URL} # Dedicated run-ops database (@internal/run-ops-database). Only needed to run prisma commands # against it or to enable the run-ops split; start it with `docker compose --profile runops up`. RUN_OPS_DATABASE_URL=postgresql://postgres:postgres@localhost:5434/postgres?schema=public REMIX_APP_PORT=3030 # Dev-only: stream the webapp's logs over a local telnet/TCP socket (nc localhost 6767). Uncomment to enable. # WEBAPP_TELNET_LOGS_PORT=6767 APP_ENV=development APP_ORIGIN=http://localhost:3030 ELECTRIC_ORIGIN=http://localhost:3060 NODE_ENV=development # Clickhouse CLICKHOUSE_URL=http://default:password@localhost:8123 RUN_REPLICATION_CLICKHOUSE_URL=http://default:password@localhost:8123 RUN_REPLICATION_ENABLED=1 # Store task run spans/traces in ClickHouse so the dashboard trace view is # populated in local dev. The local stack is ClickHouse-backed (see above), so # leaving this unset falls back to the "postgres" store and dev run traces show # up empty even though the run itself appears. EVENT_REPOSITORY_DEFAULT_STORE=clickhouse_v2 # Set this to UTC because Node.js uses the system timezone TZ="UTC" # Redis is used for the v3 queuing and v2 concurrency control REDIS_HOST="localhost" REDIS_PORT="6379" REDIS_TLS_DISABLED="true" DEV_OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:3030/otel" DEV_OTEL_BATCH_PROCESSING_ENABLED="0" # Realtime streams v2 (Sessions, chat.agent, large stream backfills) backed # by S2 (https://s2.dev). The `s2` service in docker/docker-compose.yml runs # the open-source s2-lite binary and pre-creates a basin named `trigger-local` # (see docker/config/s2-spec.json). Comment these out to fall back to v1 # (Redis-only) streams; Sessions and chat.agent then become unavailable. REALTIME_STREAMS_S2_BASIN=trigger-local REALTIME_STREAMS_S2_ACCESS_TOKEN=ignored REALTIME_STREAMS_S2_ENDPOINT=http://localhost:4566/v1 REALTIME_STREAMS_S2_SKIP_ACCESS_TOKENS=true REALTIME_STREAMS_DEFAULT_VERSION=v2 # Running multiple instances side by side (worktrees, branch experiments) # # Every host port in docker/docker-compose.yml is `${VAR:-default}` and the # project name comes from `COMPOSE_PROJECT_NAME`. To stand up a second stack # alongside the default one, uncomment the block below in this clone's `.env` # (pick any offset that doesn't clash with anything else running), then update # the URL/PORT vars further up to match. Default values are commented for # reference. # # --- core (pnpm run docker) --- # COMPOSE_PROJECT_NAME=triggerdotdev-docker-alt # CONTAINER_PREFIX=alt- # POSTGRES_HOST_PORT=15432 # default 5432 # REDIS_HOST_PORT=16379 # default 6379 # ELECTRIC_HOST_PORT=13060 # default 3060 # MINIO_API_HOST_PORT=19005 # default 9005 # MINIO_CONSOLE_HOST_PORT=19006 # default 9006 # CLICKHOUSE_HTTP_HOST_PORT=18123 # default 8123 # CLICKHOUSE_TCP_HOST_PORT=19000 # default 9000 # S2_HOST_PORT=14566 # default 4566 # REMIX_APP_PORT=13030 # default 3030 # --- extras (only needed if you also run `pnpm run docker:full`) --- # ELECTRIC_SHARD_1_HOST_PORT=13061 # default 3061 # CH_UI_HOST_PORT=15521 # default 5521 # TOXIPROXY_PROXY_HOST_PORT=40303 # default 30303 # TOXIPROXY_API_HOST_PORT=18474 # default 8474 # NGINX_H2_HOST_PORT=18443 # default 8443 # OTEL_GRPC_HOST_PORT=14317 # default 4317 # OTEL_HTTP_HOST_PORT=14318 # default 4318 # OTEL_PROMETHEUS_HOST_PORT=18889 # default 8889 # PROMETHEUS_HOST_PORT=19090 # default 9090 # GRAFANA_HOST_PORT=13001 # default 3001 # (and update DATABASE_URL / CLICKHOUSE_URL / REDIS_PORT / APP_ORIGIN / # LOGIN_ORIGIN / ELECTRIC_ORIGIN / REALTIME_STREAMS_S2_ENDPOINT to match) # When the domain is set to `localhost` the CLI deploy command will only --load the image by default and not --push it DEPLOY_REGISTRY_HOST=localhost:5000 # OPTIONAL VARIABLES # This is used for validating emails that are allowed to log in. Every email that do not match this regex will be rejected. # WHITELISTED_EMAILS="^(authorized@yahoo\.com|authorized@gmail\.com)$" # Accounts with these emails will get global admin rights. This grants access to the admin UI. # ADMIN_EMAILS="^(admin@example\.com|another-admin@example\.com)$" # This is used for logging in via GitHub. You can leave these commented out if you don't want to use GitHub for authentication. # AUTH_GITHUB_CLIENT_ID= # AUTH_GITHUB_CLIENT_SECRET= # Configure an email transport to allow users to sign in to Trigger.dev via a Magic Link. # If none are configured, emails will print to the console instead. # Uncomment one of the following blocks to allow delivery of # Resend ### Visit https://resend.com, create an account and get your API key. Then insert it below along with your From and Reply To email addresses. Visit https://resend.com/docs for more information. # EMAIL_TRANSPORT=resend # FROM_EMAIL= # REPLY_TO_EMAIL= # RESEND_API_KEY= # Generic SMTP ### Enter the configuration provided by your mail provider. Visit https://nodemailer.com/smtp/ for more information ### SMTP_SECURE = false will use STARTTLS when connecting to a server that supports it (usually port 587) # EMAIL_TRANSPORT=smtp # FROM_EMAIL= # REPLY_TO_EMAIL= # SMTP_HOST= # SMTP_PORT=587 # SMTP_SECURE=false # SMTP_USER= # SMTP_PASSWORD= # AWS Simple Email Service ### Authentication is configured using the default Node.JS credentials provider chain (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain) # EMAIL_TRANSPORT=aws-ses # FROM_EMAIL= # REPLY_TO_EMAIL= # CLOUD VARIABLES POSTHOG_PROJECT_KEY= # DEPOT_ORG_ID= # DEPOT_TOKEN= # DEV_OTEL_EXPORTER_OTLP_ENDPOINT="http://0.0.0.0:4318" # These are needed for the object store (for handling large payloads/outputs) # # Default provider # OBJECT_STORE_BASE_URL=http://localhost:9005 # OBJECT_STORE_BUCKET=packets # OBJECT_STORE_ACCESS_KEY_ID=minioadmin # OBJECT_STORE_SECRET_ACCESS_KEY=minioadmin # OBJECT_STORE_REGION=us-east-1 # OBJECT_STORE_SERVICE=s3 # # OBJECT_STORE_DEFAULT_PROTOCOL=s3 # Only specify this if you're going to migrate object storage and set protocol values below # Named providers (protocol-prefixed data) - optional for multi-provider support # OBJECT_STORE_S3_BASE_URL=https://s3.amazonaws.com # OBJECT_STORE_S3_ACCESS_KEY_ID= # OBJECT_STORE_S3_SECRET_ACCESS_KEY= # OBJECT_STORE_S3_REGION=us-east-1 # OBJECT_STORE_S3_SERVICE=s3 # # OBJECT_STORE_R2_BASE_URL=https://{bucket}.{accountId}.r2.cloudflarestorage.com # OBJECT_STORE_R2_ACCESS_KEY_ID= # OBJECT_STORE_R2_SECRET_ACCESS_KEY= # OBJECT_STORE_R2_REGION=auto # OBJECT_STORE_R2_SERVICE=s3 # CHECKPOINT_THRESHOLD_IN_MS=10000 # These control the server-side internal telemetry # INTERNAL_OTEL_TRACE_EXPORTER_URL= # INTERNAL_OTEL_TRACE_LOGGING_ENABLED=1 # INTERNAL_OTEL_TRACE_INSTRUMENT_PRISMA_ENABLED=0 # Enable local observability stack (requires `pnpm run docker:full` to bring up otel-collector + prometheus + grafana) # Uncomment these to send metrics to the local Prometheus via OTEL Collector: # INTERNAL_OTEL_METRIC_EXPORTER_ENABLED=1 # INTERNAL_OTEL_METRIC_EXPORTER_URL=http://localhost:4318/v1/metrics # INTERNAL_OTEL_METRIC_EXPORTER_INTERVAL_MS=15000