Is there an existing issue for this?
Summary
Self-hosted operators need runtime instance branding (name, logo, favicon, support email, website) without rebuilding frontend images. Config should live on the instance (God Mode + optional Docker env seed), expose via GET /api/instances/, and drive login/sidebar/emails. Empty values keep Plane defaults. Prefer HIDE_PLANE_MARKETING=0/1 over an inverted isBranding flag.
Why should this be worked on?
Many self-hosters white-label Plane for internal teams. Today instance_name exists, but logos and support links are hardcoded (PlaneLogo, plane.so, email header assets). Build-time VITE_* is a poor fit for Docker operators who expect .env + restart. Runtime InstanceConfiguration (same pattern as ENABLE_SIGNUP) fixes chrome without rewriting LICENSE, package names, or test fixtures.
Proposed approach
- Seed keys:
BRAND_LOGO_URL, BRAND_LOGO_DARK_URL, BRAND_FAVICON_URL, BRAND_SUPPORT_EMAIL, BRAND_WEBSITE_URL, HIDE_PLANE_MARKETING
- Expose on public instance GET config
- God Mode general form editors
- Shared
BrandMark (custom img or PlaneLogo)
- Email templates receive
brand_name / brand_logo_url
- Optional hide of Plane marketing / powered-by / upsell CTAs
- i18n:
{{brand}} placeholders (not wholesale locale rewrites)
Is there an existing issue for this?
Summary
Self-hosted operators need runtime instance branding (name, logo, favicon, support email, website) without rebuilding frontend images. Config should live on the instance (God Mode + optional Docker env seed), expose via
GET /api/instances/, and drive login/sidebar/emails. Empty values keep Plane defaults. PreferHIDE_PLANE_MARKETING=0/1over an invertedisBrandingflag.Why should this be worked on?
Many self-hosters white-label Plane for internal teams. Today
instance_nameexists, but logos and support links are hardcoded (PlaneLogo,plane.so, email header assets). Build-timeVITE_*is a poor fit for Docker operators who expect.env+ restart. Runtime InstanceConfiguration (same pattern asENABLE_SIGNUP) fixes chrome without rewriting LICENSE, package names, or test fixtures.Proposed approach
BRAND_LOGO_URL,BRAND_LOGO_DARK_URL,BRAND_FAVICON_URL,BRAND_SUPPORT_EMAIL,BRAND_WEBSITE_URL,HIDE_PLANE_MARKETINGBrandMark(custom img or PlaneLogo)brand_name/brand_logo_url{{brand}}placeholders (not wholesale locale rewrites)