Reference Environment variables

Environment variables

Every environment variable teriac reads, for the CLI and the server, with defaults.

Every secret can also be read from a file: set <NAME>_FILE to the file's path, for example TERIAC_GITHUB_PRIVATE_KEY_FILE=/run/secrets/app.pem.

CLI

Variable Default
TERIAC_HOME ~/.teriac Where versions, the active binaries and caches live
TERIAC_HASHICORP_MIRROR Replaces https://releases.hashicorp.com (Terraform)
TERIAC_GITHUB_MIRROR Replaces https://github.com (OpenTofu, Terragrunt)
TERIAC_VERIFY_SIGNATURES true Check the vendor's PGP signature on downloads; false for mirrors without .sig files.
TERIAC_RETRY_DELAY_MS 2s, 5s, 10s Fixed wait between retries of a failed download (up to 4 attempts)
GITHUB_TOKEN / GH_TOKEN Raises GitHub's API limit for OpenTofu and Terragrunt version lists
TF_PLUGIN_CACHE_DIR Read by Terraform; teriac plugin-cache status reports it
NO_COLOR Plain help output

Server: GitHub

Variable Default
TERIAC_GITHUB_APP_ID Required. The GitHub App's ID
TERIAC_GITHUB_PRIVATE_KEY Required. The App's private key (PEM). \n is turned into newlines
TERIAC_GITHUB_WEBHOOK_SECRET Required. The App's webhook secret
TERIAC_GITHUB_API_URL https://api.github.com GitHub Enterprise Server, e.g. https://ghe.acme.com/api/v3

Server: repos and rules

Variable Default
TERIAC_REPO_ALLOWLIST Comma-separated repo globs, e.g. github.com/acme/*. Needed unless repos.yaml lists repos
TERIAC_REPOS_CONFIG <data dir>/repos.yaml The rules file. When set, it must exist
TERIAC_REQUIRE_APPLY_PROJECT false Refuse a bare teriac apply

Server: runs

Variable Default
TERIAC_PARALLELISM 4 Plans and applies at once, across all PRs
TERIAC_PR_PARALLELISM parallelism − 1 One PR's share
TERIAC_RUN_TIMEOUT_SECONDS 3600 Time limit per Terraform command (minimum 60)
TERIAC_DEFAULT_VERSION latest Tool version when a project pins none
TERIAC_PREINSTALL Tools to install at start-up, e.g. terraform@1.9.8,tofu@1.8.5
TERIAC_HASHICORP_MIRROR / TERIAC_GITHUB_MIRROR Download mirrors, as for the CLI
GITHUB_TOKEN github.com token for OpenTofu/Terragrunt lists on GitHub Enterprise
TERIAC_DRIFT true Run drift schedules
TERIAC_VERIFY_SIGNATURES true Check the vendor's signature on downloaded tools.

Server: comments

Variable Default
TERIAC_ACK_REACTION eyes eyes, rocket, +1, heart, hooray, laugh, confused, -1 or none
TERIAC_PROGRESS_REPLY false Spinning "Running…" reply, edited into the result
TERIAC_COMMENT_MODE new new or update

Server: dashboard

Variable Default
TERIAC_PUBLIC_URL http://localhost:<port> The server's public URL
TERIAC_SESSION_SECRET random Signs sessions; 32+ characters
TERIAC_SESSION_HOURS 12 Session length
TERIAC_API_TOKEN Admin token for /api
TERIAC_DASHBOARD_USERS_FILE YAML list of dashboard users
TERIAC_OIDC_ISSUER Turns on OIDC sign-in
TERIAC_OIDC_CLIENT_ID Required with OIDC
TERIAC_OIDC_CLIENT_SECRET Required with OIDC
TERIAC_OIDC_NAME Okta / single sign-on Sign-in button label
TERIAC_OIDC_SCOPES openid,profile,email,groups
TERIAC_OIDC_GROUPS_CLAIM groups
TERIAC_OIDC_ADMIN_GROUPS Comma-separated admin groups
TERIAC_OIDC_ALLOWED_GROUPS Comma-separated viewer groups

Server: backups

New in 0.2.1. See Backups.

Variable Default
TERIAC_BACKUP_ENABLED false Scheduled database backups, and restore onto an empty volume
TERIAC_BACKUP_SCHEDULE Cron, e.g. 0 3 * * *. Required
TERIAC_BACKUP_TIMEZONE UTC Time zone of the schedule
TERIAC_BACKUP_BACKEND s3, gcs or azure. Required
TERIAC_BACKUP_BUCKET Bucket (Azure: container) name only. Required
TERIAC_BACKUP_PATH teriac Folder in the bucket
TERIAC_BACKUP_S3_REGION
TERIAC_BACKUP_S3_ENDPOINT S3-compatible services only (MinIO, R2, B2, …)
TERIAC_BACKUP_S3_STORAGE_CLASS e.g. STANDARD_IA
TERIAC_BACKUP_AZURE_ACCOUNT Storage account. Required for Azure
TERIAC_BACKUP_AZURE_KEY Account key, if not using workload identity. Also _FILE
TERIAC_BACKUP_NOTIFY Comma-separated channels from repos.yaml

Without workload identity, S3 uses AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, and GCS uses GOOGLE_APPLICATION_CREDENTIALS.

Server: process

Variable Default
TERIAC_PORT 8080 HTTP port
TERIAC_DATA_DIR /data Checkouts, plans, binaries, provider cache, database
TERIAC_LOG_LEVEL info debug, info, warn, error. Logs are JSON lines

Chat tokens

repos.yaml names the variables that hold chat secrets, so you choose the names. Common ones:

Variable Used by
TERIAC_SLACK_TOKEN channels.<name>.token_env (Slack bot token)
TERIAC_TEAMS_WEBHOOK channels.<name>.webhook_url_env

Set by teriac during runs

These are given to Terraform and Terragrunt (every other TERIAC_* variable is removed):

Variable
TERIAC_REPO owner/name
TERIAC_PR_NUMBER The PR number
TERIAC_HEAD_SHA The commit being planned
TERIAC_PROJECT The project's name
TERIAC_WORKSPACE The workspace
TERIAC_USER Who started the run
TERIAC_BRANCH The branch (drift checks)
TF_IN_AUTOMATION, TF_INPUT=0, CHECKPOINT_DISABLE=1 Non-interactive Terraform
TG_NON_INTERACTIVE, TG_NO_COLOR (and TERRAGRUNT_* forms) Non-interactive Terragrunt
TF_PLUGIN_CACHE_DIR The shared provider cache