Skip to content

Injected environment variables

A link sets the main variables below. When your code reads one of the also names instead of the main one, that name is set as well. Variables you set yourself always win. See How linking works.

Service Main variables Also
Postgres DATABASE_URL POSTGRES_URL, POSTGRES_URI, POSTGRESQL_URL, PG_URL, DB_URL, DATABASE_URI, DATABASE_CONNECTION_STRING
MySQL DATABASE_URL, MYSQL_URL, MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE DB_HOST, DB_PORT, DB_USER, DB_USERNAME, DB_PASSWORD, DB_PASS, DB_NAME, DB_DATABASE, DATABASE_HOST…
Valkey REDIS_URL VALKEY_URL, REDIS_URI, CACHE_URL, REDIS_CONNECTION_STRING
Object storage S3_ENDPOINT, S3_PUBLIC_ENDPOINT, S3_REGION, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_FORCE_PATH_STYLE AWS_ENDPOINT_URL, AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_S3_BUCKET, BUCKET_NAME, S3_ENDPOINT_URL…
LiteLLM OPENAI_BASE_URL, OPENAI_API_BASE, OPENAI_API_KEY, LLM_GATEWAY_URL ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, LITELLM_URL, LITELLM_PROXY_URL, LITELLM_API_KEY, LLM_API_KEY
Secrets Each key you added, under its own name
Observability OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_SERVICE_NAME
Another app <LABEL>_URL (its private address)

Apps built from code also get PORT, the port they should listen on.

On a link, Also inject adds another account’s variables with the account name as a suffix (DATABASE_URL_READONLY), and Also inject URLs for adds other Postgres databases as DATABASE_URL_<NAME>.

Your own variables can use ${label.field} for a linked node, and ${self.host} / ${self.url} for the app itself. Common fields: uri, host, port, user, password, name. zc describe kind <subtype> lists each service’s fields.