Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions content/docs/configuration/dotenv.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3549,6 +3549,26 @@ Properly setting cache headers is crucial for optimizing the performance and eff

> **Markdown example:** `CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)`

#### Theme Colors

<OptionTable
options={[
[
'REACT_APP_THEME_<TOKEN>',
'string',
'Overrides one theme color token at build time. The value is a space-separated `R G B` triplet.',
'# REACT_APP_THEME_SURFACE_SUBMIT=4 120 87',
],
]}
/>

**Behaviour:**

- Every color token in the theme engine can be set this way: drop the `rgb-` prefix from the token name and upper-snake-case the rest, so `rgb-surface-submit` becomes `REACT_APP_THEME_SURFACE_SUBMIT` and `rgb-status-error-border` becomes `REACT_APP_THEME_STATUS_ERROR_BORDER`. The token list is the `IThemeRGB` interface in [`packages/client/src/theme/types/index.ts`](https://github.com/LibreChat-AI/LibreChat/blob/canary/packages/client/src/theme/types/index.ts).
- Values are inlined into the client when it is built, so the client has to be rebuilt after changing them. Setting them on a prebuilt Docker image has no effect.
- The same colors apply in light and dark mode, and they only change colors, not shape.
- [`interface.theme`](/docs/configuration/librechat_yaml/object_structure/theme) in `librechat.yaml` outranks these colors, and the high-contrast modes outrank both. `interface.theme` also needs no rebuild and can change shape, so prefer it for new deployments.

#### Birthday Hat

<OptionTable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ The `interface` object allows for customization of various user interface elemen

These are fields under `interface`:

- `theme`
- `mcpServers`
- `privacyPolicy`
- `termsOfService`
Expand Down Expand Up @@ -63,6 +64,7 @@ See [Access Control](/docs/features/access_control) for the full permission mode

```yaml filename="interface"
interface:
theme: librechat
mcpServers:
placeholder: 'MCP Servers'
use: true
Expand Down Expand Up @@ -136,6 +138,36 @@ interface:
- mcp
```

## theme

Sets the deployment theme applied to every user, in both light and dark mode. Either the name of a bundled theme (`librechat` or `clickhouse`) or an inline theme definition with its own colors, radii, fonts, shadows and motion.

It outranks the `REACT_APP_THEME_*` build-time colors and users' stored themes, yields to the high-contrast modes, and is never saved to the user's browser. Removing it restores each user's own stored theme, or the `REACT_APP_THEME_*` colors when the client was built with them.

**Key:**

<OptionTable
options={[
[
'theme',
'String or Object',
'A bundled theme name, or an inline theme definition with `version`, `name`, `modes` and `brands`.',
'theme: clickhouse',
],
]}
/>

**Default:** _None (the default LibreChat theme, or the user's own theme)_

**Example:**

```yaml filename="interface / theme"
interface:
theme: clickhouse
```

See [Theme](/docs/configuration/librechat_yaml/object_structure/theme) for the inline definition format, every appearance key with its default, the ClickHouse reference theme and how shared links pick their theme.

## mcpServers

> **Deprecated for permission management.** The `use`, `create`, `share`, and `public` sub-keys seed role permissions at startup. Prefer the [Admin Panel](/docs/features/admin_panel) for managing MCP server permissions per role/group/user. The `placeholder` and `trustCheckbox` sub-keys are unaffected.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"---General---",
"config",
"interface",
"theme",
"registration",
"turnstile",
"---Models & Specs---",
Expand Down
Loading
Loading