Is your feature request related to a problem? Please describe.
In self-hosted deployments of Temporal UI, cluster endpoints and URLs often use internal cluster names or infrastructure identifiers that don't clearly reflect their underlying environment tier (such as dev, staging, or production).
When engineers operate across multiple cluster tabs simultaneously, the lack of explicit, in-UI environment indicators creates visual ambiguity. Without clear signals distinguishing high-risk production clusters from non-production environments, teams face an increased risk of human error—such as executing destructive actions (e.g., terminating or resetting workflows) in the wrong tier.
Describe the solution you'd like
Add a server-side config option / environment variable (consistent with the existing TEMPORAL_UI_* convention used for plugin config) that lets an operator set free-form banner text, e.g.:
TEMPORAL_UI_BANNER_TEXT="PRODUCTION"
When set, the UI renders a persistent banner (such as at the top of the page or navigation bar) displaying that text. Leaving it unset renders no banner, preserving the current default behavior.
This provides a simple, direct mechanism to surface custom environment labels without requiring complex environment-matching logic or opinionated styling.
Note: There is already a BannerText field in src/fixtures/settings.json, but it isn't currently wired to any configuration source or rendered anywhere in the codebase—this request is to implement that functionality.
Describe alternatives you've considered
- Relying on distinct URLs/domains per environment: Does not adequately prevent operational errors when engineers quickly switch between multiple open tabs.
- Custom browser extensions or proxy injection: Requires additional client-side setup and maintenance across engineering teams rather than being handled cleanly at the deployment layer.
Is your feature request related to a problem? Please describe.
In self-hosted deployments of Temporal UI, cluster endpoints and URLs often use internal cluster names or infrastructure identifiers that don't clearly reflect their underlying environment tier (such as dev, staging, or production).
When engineers operate across multiple cluster tabs simultaneously, the lack of explicit, in-UI environment indicators creates visual ambiguity. Without clear signals distinguishing high-risk production clusters from non-production environments, teams face an increased risk of human error—such as executing destructive actions (e.g., terminating or resetting workflows) in the wrong tier.
Describe the solution you'd like
Add a server-side config option / environment variable (consistent with the existing
TEMPORAL_UI_*convention used for plugin config) that lets an operator set free-form banner text, e.g.:TEMPORAL_UI_BANNER_TEXT="PRODUCTION"When set, the UI renders a persistent banner (such as at the top of the page or navigation bar) displaying that text. Leaving it unset renders no banner, preserving the current default behavior.
This provides a simple, direct mechanism to surface custom environment labels without requiring complex environment-matching logic or opinionated styling.
Note: There is already a
BannerTextfield insrc/fixtures/settings.json, but it isn't currently wired to any configuration source or rendered anywhere in the codebase—this request is to implement that functionality.Describe alternatives you've considered