Using App Configuration for Branding
Configure User Portal branding and Agent Portal themes directly in Azure App Configuration.
Overview
Branding and theme settings are plain Azure App Configuration key-values. Setting them directly is useful for deployment automation and for keeping environments consistent. The Themes page in the Management Portal reads and writes the same keys.
User Portal Branding Keys
All branding keys follow the pattern FoundationaLLM:Branding:{SettingName}. See the Branding Reference for the defaults.
Text and image settings
| Key | Description |
|---|---|
FoundationaLLM:Branding:CompanyName |
Organization name |
FoundationaLLM:Branding:PageTitle |
Browser tab title |
FoundationaLLM:Branding:LogoText |
Text shown next to or instead of the logo |
FoundationaLLM:Branding:LogoUrl |
Logo image URL or relative path |
FoundationaLLM:Branding:FavIconUrl |
Favicon URL or relative path |
FoundationaLLM:Branding:AgentIconUrl |
Default agent icon (URL, relative path, or base64 value) |
FoundationaLLM:Branding:FooterText |
Footer HTML |
FoundationaLLM:Branding:NoAgentsMessage |
HTML shown when a user has no agents |
FoundationaLLM:Branding:DefaultAgentWelcomeMessage |
HTML shown when the selected agent has no welcome message |
Color settings
| Key | Format |
|---|---|
FoundationaLLM:Branding:PrimaryColor |
Hex or RGB |
FoundationaLLM:Branding:PrimaryTextColor |
Hex or RGB |
FoundationaLLM:Branding:SecondaryColor |
Hex or RGB |
FoundationaLLM:Branding:SecondaryTextColor |
Hex or RGB |
FoundationaLLM:Branding:AccentColor |
Hex or RGB |
FoundationaLLM:Branding:AccentTextColor |
Hex or RGB |
FoundationaLLM:Branding:BackgroundColor |
Hex or RGB |
FoundationaLLM:Branding:PrimaryButtonBackgroundColor |
Hex or RGB |
FoundationaLLM:Branding:PrimaryButtonTextColor |
Hex or RGB |
FoundationaLLM:Branding:SecondaryButtonBackgroundColor |
Hex or RGB |
FoundationaLLM:Branding:SecondaryButtonTextColor |
Hex or RGB |
Mode settings
| Key | Values |
|---|---|
FoundationaLLM:Branding:KioskMode |
true or false |
FoundationaLLM:Branding:ManagementPortalDefaultTheme |
Optional. dark, light, or system. Defaults to dark. |
Agent Portal Theme Keys
| Key | Content type | Value |
|---|---|---|
FoundationaLLM:AgentPortal:Themes:Manifest |
application/json |
Catalog manifest |
FoundationaLLM:AgentPortal:Themes:{ThemeId} |
application/json |
One theme document per theme id (first letter of the id capitalized in the key) |
When you add a theme, write the theme document first and then update the manifest so that themeIds (and, if users may choose it, allowedThemeIds) include the new id. See the Branding Reference for the validation rules.
Tip
Use Export theme on the Themes page to get a valid theme document as a starting point.
Set Values in the Azure Portal
- Open your Azure App Configuration resource.
- Select Configuration explorer.
- Select + Create > Key-value.
- Enter the key (for example
FoundationaLLM:Branding:CompanyName) and the value. - For Agent Portal theme keys, set Content type to
application/json. - Select Apply.
Set Values with the Azure CLI
# Text value
az appconfig kv set \
--name <app-config-name> \
--key "FoundationaLLM:Branding:CompanyName" \
--value "Contoso"
# Color value
az appconfig kv set \
--name <app-config-name> \
--key "FoundationaLLM:Branding:PrimaryColor" \
--value "#1a2b3c"
# Agent Portal theme document
az appconfig kv set \
--name <app-config-name> \
--key "FoundationaLLM:AgentPortal:Themes:Contoso" \
--content-type "application/json" \
--value @contoso-theme.json
Set Values with Bicep
resource appConfig 'Microsoft.AppConfiguration/configurationStores@2023-03-01' existing = {
name: appConfigName
}
resource brandingCompanyName 'Microsoft.AppConfiguration/configurationStores/keyValues@2023-03-01' = {
parent: appConfig
name: 'FoundationaLLM:Branding:CompanyName'
properties: {
value: 'Contoso'
}
}
Value Format Notes
- Colors:
#RRGGBB,#RGB, orrgb(R, G, B). - Rich text fields (
FooterText,NoAgentsMessage,DefaultAgentWelcomeMessage): valid HTML. - Theme documents: valid JSON that matches the theme schema. Unknown properties are rejected.
Picking Up Changes
The portals read these values when they load configuration. Refresh the browser after changing values. Some branding values are bound by the Core API at startup, so restart the Core API if a direct App Configuration change does not appear in the User Portal.