Skip to main content

UI Customization & Branding

This guide covers all environment variables for customizing the CAIPE UI appearance, including branding, themes, fonts, gradients, and personalization defaults. These variables allow platform teams to white-label the UI without changing code.

How It Works

All customization env vars are read at runtime (not build time) via getServerConfig(), serialized into window.__APP_CONFIG__, and injected by the root layout. This means you can change branding by simply restarting the container with new env vars — no rebuild required.

┌──────────────────────────────┐
│ Environment Variables │
│ (runtime, per deployment) │
└──────────────┬───────────────┘

┌──────────────────────────────┐
│ getServerConfig() │
│ (reads process.env) │
└──────────────┬───────────────┘

┌──────────────────────────────┐
│ window.__APP_CONFIG__ │
│ (injected into HTML) │
└──────────────┬───────────────┘

┌──────────────────────────────┐
│ UI components read config │
│ (getConfig('appName')) │
└──────────────────────────────┘

All env vars also accept a NEXT_PUBLIC_ prefix for backward compatibility (e.g., NEXT_PUBLIC_APP_NAME). The non-prefixed version takes priority when both are set.

Branding

Control the application name, logo, tagline, and other branding elements.

VariableDefaultDescription
APP_NAMECAIPEApplication name displayed in the header, browser tab, and throughout the UI
TAGLINEMulti-Agent Workflow AutomationMain tagline shown on the login page and metadata
DESCRIPTIONWhere Humans and AI agents collaborate...Description text used in metadata and UI
LOGO_URL/logo.svgLogo image path (relative to public/ or absolute URL)
LOGO_STYLEdefaultLogo rendering: default (original colors) or white (inverted for dark backgrounds)
FAVICON_URL/favicon.icoBrowser tab favicon (relative or absolute URL)
SUPPORT_EMAILsupport@example.comContact email shown in support/help links
SHOW_POWERED_BYtrueShow "Powered by OSS caipe.io" footer (true or false)
PREVIEW_MODEfalseShow preview/beta badge in the UI

Example: Custom Branding

APP_NAME=Grid
TAGLINE=Enterprise AI Platform
DESCRIPTION=Intelligent automation for platform engineering teams
LOGO_URL=/grid-logo.svg
LOGO_STYLE=white
FAVICON_URL=/grid-favicon.png
SUPPORT_EMAIL=support@grid.cisco.com
SHOW_POWERED_BY=false

Gradient Colors

Control the primary gradient used throughout the UI (header accents, buttons, text highlights).

VariableDefaultDescription
GRADIENT_FROMhsl(173,80%,40%)Gradient start color (any valid CSS color)
GRADIENT_TOhsl(270,75%,60%)Gradient end color (any valid CSS color)
SPINNER_COLOR(theme default)Loading spinner/indicator color (any valid CSS color)

These colors are injected as CSS custom properties (--gradient-from, --gradient-to, --spinner-color) and apply to all gradient utilities in the UI.

Example: Corporate Blue Gradient

GRADIENT_FROM=#1a73e8
GRADIENT_TO=#174ea6
SPINNER_COLOR=#1a73e8

UI Personalization Defaults

These variables set the initial defaults for new users who haven't yet customized their preferences in the UI Personalization panel. Once a user makes a selection, their preference (stored in localStorage or MongoDB) takes precedence.

The precedence order is:

  1. Server preferences (MongoDB, synced across devices) — highest priority
  2. localStorage (per-browser cache)
  3. Environment variable defaults (set by platform team)
  4. Built-in defaults (hardcoded fallbacks) — lowest priority

Font Size

VariableDefaultAllowed ValuesDescription
DEFAULT_FONT_SIZEmediumsmall, medium, large, x-largeDefault base font size for new users

Available sizes:

ValuePixel SizeBest For
small14pxDense information displays
medium16pxGeneral use (browser default)
large18pxImproved readability
x-large20pxAccessibility, presentations

Font Family

VariableDefaultAllowed ValuesDescription
DEFAULT_FONT_FAMILYinterinter, source-sans, ibm-plex, systemDefault font family for new users

Available font families:

ValueFontDescription
interInterClean and modern (used by OpenAI)
source-sansSource Sans 3Highly readable (by Adobe)
ibm-plexIBM Plex SansProfessional (IBM Carbon design system)
systemSystem UINative OS font (San Francisco, Segoe UI, etc.)

Theme

VariableDefaultAllowed ValuesDescription
DEFAULT_THEMEdarklight, dark, midnight, nord, tokyo, cyberpunk, tron, matrixDefault color theme for new users

Available themes:

ValueDescription
lightBright and clean, white backgrounds
darkDark backgrounds, easy on the eyes
midnightPure black (optimized for OLED displays)
nordArctic cool tones (inspired by Nord color palette)
tokyoVibrant purple tones (inspired by Tokyo Night)
cyberpunkNeon pink and cyan on deep purple-black, dystopian vibes
tronGlowing electric cyan on near-black, digital frontier aesthetic
matrixGreen phosphor on black, digital rain aesthetic

Gradient Theme

VariableDefaultAllowed ValuesDescription
DEFAULT_GRADIENT_THEMEdefaultdefault, minimal, professional, ocean, sunset, cyberpunk, tron, matrixDefault gradient style for new users

Available gradient themes:

ValueColorsDescription
defaultTeal → PurpleOriginal vibrant gradient
minimalGray → Dark GraySubtle, understated
professionalBlue → NavyCorporate, trustworthy
oceanCyan → BlueCool, calming
sunsetOrange → PinkWarm, energetic
cyberpunkPink → CyanNeon-soaked, high-contrast
tronCyan → BlueElectric glow, digital frontier
matrixGreen → Dark GreenPhosphor glow, digital rain
info

The gradient theme selected by the user in the UI Personalization panel overrides both the DEFAULT_GRADIENT_THEME and the GRADIENT_FROM/GRADIENT_TO env vars. The env-level gradient colors only apply when no gradient theme is active.

Example: Professional Defaults

DEFAULT_FONT_SIZE=medium
DEFAULT_FONT_FAMILY=ibm-plex
DEFAULT_THEME=light
DEFAULT_GRADIENT_THEME=professional

Example: Accessibility-Focused Defaults

DEFAULT_FONT_SIZE=large
DEFAULT_FONT_FAMILY=source-sans
DEFAULT_THEME=light
DEFAULT_GRADIENT_THEME=minimal

Control which links appear in the application header.

VariableDefaultDescription
DOCS_URL(hidden)Documentation URL shown in the header. If not set, the docs link is hidden
SOURCE_URL(hidden)Source code / repository URL shown in the header. If not set, the link is hidden
DOCS_URL=https://docs.caipe.example.com
SOURCE_URL=https://github.com/cnoe-io/ai-platform-engineering

Login Page Customization

VariableDefaultDescription
ENABLED_INTEGRATION_ICONS(all icons)Comma-separated list of integration icons to show on the login page orbit. If not set, all icons are displayed

Available icons: argocd, aws, github, gitlab, jira, splunk, confluence, webex, kubernetes, slack, backstage, command line, workflows, pagerduty, linux

Example: Show Only Relevant Integrations

ENABLED_INTEGRATION_ICONS=github,slack,aws,kubernetes,jira

Feature Flags

VariableDefaultDescription
WORKFLOW_RUNNER_ENABLEDfalseEnable the dedicated workflow runner UI. When false, the "Run Workflow" button and Multi-Step Workflows card are hidden; "Run in Chat" remains functional

Validation

All personalization default variables (DEFAULT_FONT_SIZE, DEFAULT_FONT_FAMILY, DEFAULT_THEME, DEFAULT_GRADIENT_THEME) are validated against their allowed values. If an invalid value is provided, the built-in default is silently used instead. No error is thrown and no warning is logged — this ensures the UI always renders correctly even with misconfigured env vars.

# This is fine — falls back to "medium" silently
DEFAULT_FONT_SIZE=huge

# This is fine — falls back to "dark" silently
DEFAULT_THEME=solarized

Complete Example

A fully customized deployment:

# Branding
APP_NAME=Grid
TAGLINE=Enterprise AI Platform
LOGO_URL=/grid-logo.svg
LOGO_STYLE=white
FAVICON_URL=/grid-favicon.png
SUPPORT_EMAIL=support@grid.cisco.com
SHOW_POWERED_BY=false

# Gradient
GRADIENT_FROM=#1a1a2e
GRADIENT_TO=#16213e
SPINNER_COLOR=#4ecdc4

# Personalization defaults
DEFAULT_FONT_SIZE=medium
DEFAULT_FONT_FAMILY=ibm-plex
DEFAULT_THEME=dark
DEFAULT_GRADIENT_THEME=professional

# Header links
DOCS_URL=https://docs.grid.cisco.com
SOURCE_URL=https://github.com/cisco/grid

# Login page
ENABLED_INTEGRATION_ICONS=github,slack,aws,kubernetes,jira,argocd

# Features
WORKFLOW_RUNNER_ENABLED=true

Docker and Kubernetes

Docker Compose

Add customization variables to your docker-compose.yaml:

services:
caipe-ui:
image: ghcr.io/cnoe-io/caipe-ui:latest
environment:
- APP_NAME=Grid
- LOGO_STYLE=white
- DEFAULT_THEME=dark
- DEFAULT_FONT_FAMILY=ibm-plex
- DEFAULT_GRADIENT_THEME=professional
- GRADIENT_FROM=#1a1a2e
- GRADIENT_TO=#16213e
- SHOW_POWERED_BY=false

Kubernetes ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
name: caipe-ui-customization
namespace: caipe
data:
APP_NAME: "Grid"
LOGO_STYLE: "white"
DEFAULT_THEME: "dark"
DEFAULT_FONT_FAMILY: "ibm-plex"
DEFAULT_GRADIENT_THEME: "professional"
GRADIENT_FROM: "#1a1a2e"
GRADIENT_TO: "#16213e"
SHOW_POWERED_BY: "false"
DOCS_URL: "https://docs.grid.cisco.com"

Reference in your Deployment:

spec:
containers:
- name: caipe-ui
envFrom:
- configMapRef:
name: caipe-ui-customization

Helm Values

If using the CAIPE Helm chart, pass customization via values:

ui:
env:
APP_NAME: Grid
LOGO_STYLE: white
DEFAULT_THEME: dark
DEFAULT_FONT_FAMILY: ibm-plex
DEFAULT_GRADIENT_THEME: professional

Next Steps