> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r5d.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Branding

> White-label the installation with your own product name, logo, favicon, and colors at runtime.

Branding is stored in the database and applied at runtime, so changes take
effect immediately without rebuilding an image or redeploying the chart.

Administrators set it from the admin settings page.

## Available settings

<ResponseField name="Product name" type="string" default="r5d.chat">
  Shown in the interface and page titles. 1 to 60 characters.
</ResponseField>

<ResponseField name="Tagline" type="string" default="Your persistent AI agent workspace">
  Short description on the login and setup screens. Up to 140 characters.
</ResponseField>

<ResponseField name="Logo" type="image">
  PNG, JPEG, WebP, or SVG, stored as a data URL up to roughly 300 KB. An SVG
  scales best across densities.
</ResponseField>

<ResponseField name="Favicon" type="image">
  PNG, JPEG, WebP, SVG, or ICO, stored as a data URL up to roughly 300 KB.
</ResponseField>

<ResponseField name="Primary color" type="string" default="#6d5bd0">
  Six-digit hex color used for primary buttons and accents.
</ResponseField>

<ResponseField name="Primary foreground color" type="string" default="#ffffff">
  Six-digit hex color for text and icons drawn on the primary color. Choose it
  for contrast against your primary color.
</ResponseField>

<Tip>
  Aim for at least a 4.5:1 contrast ratio between the primary and primary
  foreground colors so button labels stay readable for everyone.
</Tip>

## How the agent sees your brand

The product name is injected into the agent's system prompt, so the assistant
refers to itself by your product name rather than r5d.chat.

## Reading the current branding

Branding is served by an unauthenticated endpoint, because the login and setup
screens need it before a session exists:

```bash theme={null}
curl -fsS https://chat.example.com/api/public-config
```

```json theme={null}
{
  "setup": { "required": false, "claimRequired": true },
  "brand": {
    "name": "Acme Assistant",
    "tagline": "Your persistent AI agent workspace",
    "primaryColor": "#0f62fe",
    "primaryForegroundColor": "#ffffff"
  },
  "auth": {
    "oidcEnabled": true,
    "oidcLabel": "Sign in with Okta",
    "providerKey": "okta"
  }
}
```

<Note>
  This endpoint is public by design and returns only presentation and
  setup-state data. It never includes credentials or user information.
</Note>

## Notes for operators

* Branding lives in the database, so it is covered by your database backup and
  survives chart upgrades.
* Images are stored as data URLs rather than files, which keeps the deployment
  stateless but means very large images bloat every page load. Compress them.
* The response is served with `cache-control: no-store`, so brand changes appear
  on the next page load without a cache purge.
