Skip to content

[Docs] UI - Guide on how to set logo - #23556

Merged
ishaan-jaff merged 1 commit into
mainfrom
litellm_docs_ui_logo
Mar 13, 2026
Merged

[Docs] UI - Guide on how to set logo#23556
ishaan-jaff merged 1 commit into
mainfrom
litellm_docs_ui_logo

Conversation

@ishaan-jaff

Copy link
Copy Markdown
Contributor

[Docs] UI - Guide on how to set logo

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have Added testing in the tests/test_litellm/ directory, Adding at least 1 test is a hard requirement - see details
  • My PR passes all unit tests on make test-unit
  • My PR's scope is as isolated as possible, it only solves 1 specific problem
  • I have requested a Greptile review by commenting @greptileai and received a Confidence Score of at least 4/5 before requesting a maintainer review

CI (LiteLLM team)

CI status guideline:

  • 50-55 passing tests: main is stable with minor issues.
  • 45-49 passing tests: acceptable but needs attention
  • <= 40 passing tests: unstable; be careful with your merges and assess the risk.
  • Branch creation CI run
    Link:

  • CI run for the last commit
    Link:

  • Merge / cherry-pick CI run
    Links:

Type

🆕 New Feature
🐛 Bug Fix
🧹 Refactoring
📖 Documentation
🚄 Infrastructure
✅ Test

Changes

@vercel

vercel Bot commented Mar 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
litellm Building Building Preview, Comment Mar 13, 2026 3:44pm

Request Review

@ishaan-jaff
ishaan-jaff merged commit 2b61f2a into main Mar 13, 2026
25 of 75 checks passed
@greptile-apps

greptile-apps Bot commented Mar 13, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a new documentation page (ui_edit_logo.md) that guides users through customizing the LiteLLM dashboard logo and favicon via the UI, the REST API, and proxy_config.yaml, and registers the page in the sidebar under Admin UI → Setup & SSO.

Key findings:

  • Missing prerequisite warning: The API section documents PATCH /settings/update/ui_theme_settings without noting that STORE_MODEL_IN_DB=True must be set — the endpoint returns a 500 error without it, which will block users following the guide.
  • Unused import: import Image from '@theme/IdealImage' is present at the top of the file but never used; all images use plain markdown syntax.
  • Incorrect keyboard shortcut: Step 7 instructs users to press Cmd + Left to switch browser tabs, but that shortcut moves the text cursor to the start of a line; Cmd + [ or clicking the tab is the correct approach.
  • Incomplete env var example: The proxy_config.yaml environment variables snippet only shows UI_LOGO_PATH but omits LITELLM_FAVICON_URL, which is the actual env var used for the favicon.

Confidence Score: 3/5

  • Safe to merge after fixing the missing STORE_MODEL_IN_DB prerequisite note and minor documentation inaccuracies.
  • The change is documentation-only with no production code impact. However, the missing STORE_MODEL_IN_DB prerequisite in the API section will actively mislead users into hitting a 500 error, and the incorrect keyboard shortcut and missing LITELLM_FAVICON_URL env var reduce the guide's accuracy and usefulness.
  • docs/my-website/docs/proxy/ui/ui_edit_logo.md requires attention for the missing API prerequisite, unused import, incorrect shortcut, and incomplete env var example.

Important Files Changed

Filename Overview
docs/my-website/docs/proxy/ui/ui_edit_logo.md New documentation page for customizing the UI logo. Contains an unused import, a missing critical prerequisite (STORE_MODEL_IN_DB=True) for the API section, an incorrect keyboard shortcut, and an incomplete environment variables example missing LITELLM_FAVICON_URL.
docs/my-website/sidebars.js Sidebar entry added for the new ui_edit_logo page under "Setup & SSO". Change is correct and well-placed.

Sequence Diagram

sequenceDiagram
    participant Admin
    participant LiteLLMProxy
    participant Config as proxy_config.yaml / DB

    Note over Admin,Config: Via API (requires STORE_MODEL_IN_DB=True)
    Admin->>LiteLLMProxy: PATCH /settings/update/ui_theme_settings<br/>{logo_url, favicon_url}
    LiteLLMProxy->>Config: Save litellm_settings.ui_theme_config
    LiteLLMProxy->>LiteLLMProxy: Set UI_LOGO_PATH env var
    LiteLLMProxy->>LiteLLMProxy: Set LITELLM_FAVICON_URL env var
    LiteLLMProxy-->>Admin: 200 OK

    Note over Admin,Config: Read theme settings (public endpoint)
    Admin->>LiteLLMProxy: GET /settings/get/ui_theme_settings
    LiteLLMProxy->>Config: Read litellm_settings.ui_theme_config
    LiteLLMProxy-->>Admin: UIThemeSettingsResponse

    Note over Admin,Config: Via proxy_config.yaml
    Admin->>Config: Set litellm_settings.ui_theme_config.logo_url
    Config->>LiteLLMProxy: Loaded on startup → UI_LOGO_PATH env var
Loading

Last reviewed commit: 5af05cc

@@ -0,0 +1,138 @@
import Image from '@theme/IdealImage';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import

import Image from '@theme/IdealImage'; is imported on line 1 but never used in the file. All screenshots use standard markdown image syntax (![alt](url)), not the <Image /> component. This will likely produce a linting warning in the Docusaurus build.

Suggested change
import Image from '@theme/IdealImage';

(remove the unused import entirely)

Comment on lines +65 to +96
## Via the API

### Set a Custom Logo

```bash
curl -X PATCH 'http://localhost:4000/settings/update/ui_theme_settings' \
-H 'Authorization: Bearer <your-admin-key>' \
-H 'Content-Type: application/json' \
-d '{
"logo_url": "https://example.com/your-company-logo.png"
}'
```

### Set a Custom Favicon

You can also customize the browser tab favicon:

```bash
curl -X PATCH 'http://localhost:4000/settings/update/ui_theme_settings' \
-H 'Authorization: Bearer <your-admin-key>' \
-H 'Content-Type: application/json' \
-d '{
"logo_url": "https://example.com/your-company-logo.png",
"favicon_url": "https://example.com/your-favicon.ico"
}'
```

### Get Current Theme Settings

```bash
curl -X GET 'http://localhost:4000/settings/get/ui_theme_settings'
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing STORE_MODEL_IN_DB prerequisite

The PATCH /settings/update/ui_theme_settings endpoint (and consequently all write API examples in this section) will return a 500 error if STORE_MODEL_IN_DB is not set to True. Looking at the implementation in proxy_setting_endpoints.py (lines 806–812):

if store_model_in_db is not True:
    raise HTTPException(
        status_code=500,
        detail={
            "error": "Set `'STORE_MODEL_IN_DB='True'` in your env to enable this feature."
        },
    )

Users following this guide without that env var will get a cryptic 500 error. The prerequisite should be documented before the API examples, for example:

> **Prerequisite:** The `/update/ui_theme_settings` endpoint requires `STORE_MODEL_IN_DB=True` to be set in your environment.


### 7. Switch Back to LiteLLM

Navigate back to the LiteLLM UI tab (e.g., press **Cmd + Left** or click the tab).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect keyboard shortcut

"Cmd + Left" moves the cursor to the beginning of a line in text fields — it does not switch browser tabs. The intended shortcut to navigate back in browser history is Cmd + [ (macOS) or simply asking the user to click the tab would be more reliable cross-platform.

Suggested change
Navigate back to the LiteLLM UI tab (e.g., press **Cmd + Left** or click the tab).
Navigate back to the LiteLLM UI tab (e.g., press **Cmd + [** or click the tab).

Comment on lines +122 to +127
Or set it as an environment variable:

```yaml
environment_variables:
UI_LOGO_PATH: "https://example.com/your-company-logo.png"
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing LITELLM_FAVICON_URL environment variable

The environment variables section only documents UI_LOGO_PATH but omits the favicon equivalent. Looking at the implementation, the favicon is stored as LITELLM_FAVICON_URL (see proxy_setting_endpoints.py line 860). The section should include both for completeness:

Suggested change
Or set it as an environment variable:
```yaml
environment_variables:
UI_LOGO_PATH: "https://example.com/your-company-logo.png"
```
Or set them as environment variables:
```yaml
environment_variables:
UI_LOGO_PATH: "https://example.com/your-company-logo.png"
LITELLM_FAVICON_URL: "https://example.com/your-favicon.ico" # optional

RheagalFire pushed a commit that referenced this pull request Mar 13, 2026
…#23568)

* bump: version 1.82.1 → 1.82.2

* fix(gemini): preserve toolConfig on native generate_content (#23493)

* chore: regenerate poetry.lock to match pyproject.toml (#23514)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix claude.md

* ui logo (#23556)

* fix(proxy): prevent OOM/Prisma connection loss from unbounded managed-object poll (#23472)

* fix(proxy): cap managed-object poll size + expire stale rows + kill-switch flag to prevent OOM/Prisma connection loss

* fix(constants): simplify PROXY_BATCH_POLLING_ENABLED readability

* docs+test: document new polling env vars, add pagination+stale-cleanup tests

* fix: exclude stale_expired from batch poll queries; fix update_many assertions in tests

* fix: scope stale cleanup to file_purpose, fix file_object mocks, add CheckBatchCost tests

* fix: avoid duplicate cost logging in fallback path; guard integer constants against zero/negative values

* fix: cache _has_batch_processed_column; guard cleanup from aborting poll; narrow fallback except

* fix: add complete/completed to primary query not_in; fix vacuous test assertion

- Primary find_many was missing "complete" and "completed" in its not_in
  filter, creating asymmetry with the fallback query. A job whose status
  was set to "complete" but whose batch_processed flag update failed would
  be silently re-fetched and re-processed every cycle, emitting duplicate
  cost logs.

- test_fallback_completion_update_omits_batch_processed patched
  _is_base64_encoded_unified_file_id to return None, causing an immediate
  continue — so update() was never called and the assertion looped over an
  empty list (vacuously true). Rewrote the test to mock the full
  completion pipeline, verify update() is called exactly once, and assert
  batch_processed is absent from the update data.

- Added symmetric test (primary path) proving batch_processed IS included
  when the column exists.

Made-with: Cursor

* fix(huggingface): forward extra_headers to embedding handler (#23502)

The huggingface branch in litellm.embedding() did not pass the headers
kwarg to huggingface_embed.embedding(), silently dropping user-provided
extra_headers like X-HF-Bill-To.

Fixes #23502

Made-with: Cursor

---------

Co-authored-by: yuneng-jiang <yuneng.jiang@gmail.com>
Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ishaan Jaffer <ishaanjaffer0324@gmail.com>
fzowl pushed a commit to fzowl/litellm that referenced this pull request Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant