Hadrian is experimental alpha software. Do not use in production.
Hadrian
Configuration

UI Branding

Brand the gateway UI — colors, dark mode palettes, fonts, and logos

The [ui.branding] section customizes the gateway UI with your organization's name, logos, color palette, and fonts.

Overview

[ui.branding]
title = "Acme AI Gateway"
tagline = "LLM access for Acme engineering"
logo_url = "https://cdn.acme-corp.com/brand/logo.svg"
logo_dark_url = "https://cdn.acme-corp.com/brand/logo-dark.svg"
favicon_url = "https://cdn.acme-corp.com/brand/favicon.png"
footer_text = "© Acme Corp"

[ui.branding.colors]
primary = "#7c3aed"

[ui.branding.colors_dark]
primary = "#a78bfa"
SettingTypeDescription
titlestringApplication title, shown in the header and browser tab.
taglinestringShort line shown below the title.
logo_urlstringLogo image URL.
logo_dark_urlstringLogo used in dark mode. Falls back to logo_url.
favicon_urlstringBrowser favicon URL.
colorstableLight mode palette and brand identity. See below.
colors_darktablePer-key dark mode overrides. See below.
fontstableTypography configuration. See Fonts.
footer_textstringFooter text.
footer_linksarrayFooter links ({ label, url }).
show_versionboolShow the gateway version in the footer.
logintableLogin page customization (title, subtitle, background_image).

Color Palette Keys

Every color accepts any CSS color literal (#7c3aed, rgb(124, 58, 237), oklch(0.54 0.25 293)).

KeySets CSS variablesScope
primary--color-primary, focus ring; accent text in light modeIdentity
primary_foreground--color-primary-foreground (text on primary buttons)Identity
secondary--color-secondaryMode-scoped
secondary_foreground--color-secondary-foregroundMode-scoped
accent--color-accentMode-scoped
background--color-backgroundMode-scoped
foreground--color-foregroundMode-scoped
muted--color-mutedMode-scoped
border--color-border, --color-inputMode-scoped

When primary is set without primary_foreground, text on primary surfaces defaults to white (#ffffff).

Light and Dark Palettes

colors defines the light mode palette and your brand identity. colors_dark overrides individual keys for dark mode. The two tiers behave differently:

  • Identity keys (primary, primary_foreground) carry into dark mode automatically. Set them once in colors and both themes show your brand color; override them in colors_dark if your brand needs a brighter variant on dark surfaces.
  • Mode-scoped keys (everything else) apply only to the palette they are set in. A background or border in colors affects light mode only — dark mode keeps the built-in dark theme for any surface key you don't explicitly set in colors_dark.

If you set a surface key like colors.border without a matching colors_dark.border, the gateway logs a startup warning: "colors.border is set but colors_dark.border is not; dark mode will use the default dark border." This is safe — dark mode falls back to the built-in dark theme — but set the key in colors_dark if you want fully branded dark surfaces.

Minimal: one brand color, both themes

[ui.branding.colors]
primary = "#7c3aed"

Light and dark mode both use the brand purple for buttons, links, and focus rings. All surfaces keep the built-in palettes.

Full dark re-theme

[ui.branding.colors]
primary = "#7c3aed"
background = "#f8f7ff"
foreground = "#1e1b2e"
border = "#e2ddf5"
muted = "#efecfa"

[ui.branding.colors_dark]
primary = "#a78bfa"     # brighter variant for contrast on dark surfaces
background = "#13111c"
foreground = "#ece9f8"
border = "#2a2640"
muted = "#1d1a2b"

Every surface key set in colors has a counterpart in colors_dark, so both themes are fully branded.

Fonts

[ui.branding.fonts]
heading = "Archivo"
body = "Inter"
mono = "JetBrains Mono"

[[ui.branding.fonts.custom]]
name = "Archivo"
url = "https://cdn.acme-corp.com/fonts/archivo.woff2"
weight = "100 900"
style = "normal"
SettingTypeDescription
headingstringFont family for headings.
bodystringFont family for body text.
monostringFont family for code.
customarrayFonts loaded via @font-face (name, url, weight, style).

Custom font URLs must be https: or data: URLs. Named families fall back to the built-in system font stacks.

Next Steps

On this page