Skip to content

White-label branding

Customize how the UI looks for each company (or globally via environment variables).

Per company

Admin → Companies → open a company → Branding & white-label:

Field Effect
Application name Sidebar, top bar, browser title, login heading
Tagline Login subtitle
Logo URL (light) Sidebar / login in light mode
Logo URL (dark) Logo in dark mode; if empty, the light logo is used
Header logo height (px) Logo height in the admin shell sidebar (default 68 when 0; matches the 60px main header row plus padding)
Show app name in header When off, only the logo (or default tile) shows in the sidebar / top bar
Favicon URL Browser tab icon
Primary color Accent palette (buttons, links, default logo tile)
Font family UI typeface — pick from curated Google Fonts (empty = Inter; global default via PYVELM_FONT_FAMILY)
Copyright Footer legal line
Support email / URL Footer links
Show powered by pyvelm Hide the small “Powered by pyvelm” line when off
Navigation layout Shell chrome: apps (sidebar icons + top bar) or sidebar (3-level tree). Empty = use global PYVELM_MENU_LAYOUT. See Navigation.

Branding follows the active company cookie (pyvelm_company), same as theme accent.

Environment variables (deploy-wide defaults)

Set before starting the server; company fields override these when filled in:

PYVELM_APP_NAME="Acme ERP"
PYVELM_APP_TAGLINE="Sign in to your workspace"
PYVELM_LOGO_URL="/api/attachment/12/download"
PYVELM_LOGO_URL_DARK="/api/attachment/14/download"
PYVELM_HEADER_LOGO_HEIGHT=48
PYVELM_SHOW_HEADER_BRAND_TEXT=0
PYVELM_FAVICON_URL="/api/attachment/13/download"
PYVELM_COPYRIGHT="© 2026 Acme Corp. All rights reserved."
PYVELM_SUPPORT_EMAIL="help@acme.example"
PYVELM_SUPPORT_URL="https://acme.example/support"
PYVELM_SHOW_POWERED_BY=0
PYVELM_FONT_FAMILY="Roboto"

Requires base module 0.21.0+ (run Apps → base → Sync after upgrade).

Per-company font family (font_family) requires base 0.32.0+.

Header logo height and show app name in header require base 0.33.0+.

Per-company navigation layout (menu_layout) requires base 0.31.0+; middleware is registered automatically via base.web:register_routes.

API

Templates receive brand, company_theme_style, and font keys (company_font_stylesheet_url, company_font_style, company_font_family) from pyvelm.branding.branding_context(env).