Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Banner

Display announcements and notices to your users

Display important messages to all your users at the top of the app. Perfect for announcements, maintenance notices, or updates.

Quick Overview

  • Only one banner can be active at a time
  • Schedule banners to appear and disappear automatically
  • Choose whether users can dismiss the banner or not
  • Show banners to everyone, or only logged-in users

Creating a Banner

Run this command to create or update a banner:

npm run update-banner

With Docker, run the script inside the api container instead:

docker compose exec api npm run update-banner

You'll be guided through a few simple prompts:

--------------------------
Update the banner!
--------------------------
Display From (Format: yyyy-mm-ddTHH:MM:SSZ, Default: now):
> 2025-12-02T09:00:00Z

Display To (Format: yyyy-mm-ddTHH:MM:SSZ, Default: not specified):
> 2025-12-31T23:59:59Z

Enter your message (Enter a single dot "." on a new line to finish):
> 🎉 Welcome to LibreChat! Check out our new features.
> .

Is public (y/N):
> n

Is persistable (cannot be dismissed) (y/N):
> n

What do these options mean?

  • Display From/To: When the banner should appear and disappear. Press Enter at the prompt to use "now" and "forever"
  • Is public: Show to visitors who aren't logged in (like on the login page)
  • Is persistable: If yes, users can't dismiss the banner (use it for important notices)

Running this again replaces the existing banner

There is only ever one banner. update-banner looks for an existing banner and overwrites it in place, creating one only when none exists, so you cannot queue up a second banner for a later date, and you cannot have two scheduled windows overlap. Running the command again discards the previous banner's message and schedule.

To change a banner, run update-banner again. To take one down before its Display To time, use delete-banner below.


Deleting a Banner

npm run delete-banner

With Docker, run docker compose exec api npm run delete-banner.

You'll see the current banner and be asked to confirm before deleting.

Only an active banner can be deleted

delete-banner only finds a banner that is currently active: its Display From time must have passed, and its Display To time must be in the future or not set. A banner scheduled for a later date, or one whose Display To has already passed, is reported as "No banner found to delete" and stays in the database. To replace such a banner, run update-banner again.

Removing a banner this way is also how you take one down early: there is no "disable" flag. A banner otherwise disappears on its own once Display To passes, and one saved with no Display To stays up until you delete it.


Example Banners

A simple welcome message that users can dismiss:

npm run update-banner "" "" "👋 Welcome to LibreChat!" "false" "false"

A scheduled maintenance notice that can't be dismissed:

npm run update-banner "2025-12-20T00:00:00Z" "2025-12-21T06:00:00Z" "⚠️ Scheduled maintenance on Dec 20th, 2-6 AM UTC" "true" "true"

An urgent security notice visible to everyone:

npm run update-banner "" "" "🔒 Please update your password by January 1st" "true" "true"

Empty date arguments still prompt

An empty string ("") for a date is treated as missing, so the script still asks for Display From and Display To interactively. Press Enter at each prompt to accept the default, or pass ISO dates (yyyy-mm-ddTHH:MM:SSZ) as the first two arguments to run the command without prompts. The message argument is also required to skip the message prompt, and the isPublic and persistable arguments must be given as true or false to skip theirs.


Date Format

Use this format for dates: yyyy-mm-ddTHH:MM:SSZ

Examples:

  • 2025-12-25T09:00:00Z → December 25, 2025 at 9:00 AM (UTC)
  • 2025-01-01T00:00:00Z → January 1, 2025 at midnight (UTC)

When prompted, press Enter without typing a date to use the current time for Display From, or no end date for Display To.

How is this guide?