From 2255998e4fc8d7fb78ba5ae63b23172203307e0d Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Sun, 6 Sep 2026 20:45:39 +0200 Subject: [PATCH 1/2] docs: add AMD Lemonade custom endpoint provider --- components/icons/providers/index.ts | 1 + components/icons/providers/lemonade.tsx | 23 ++++++++ .../librechat_yaml/ai_endpoints/lemonade.mdx | 59 +++++++++++++++++++ .../librechat_yaml/ai_endpoints/meta.json | 1 + lib/icons.tsx | 2 + 5 files changed, 86 insertions(+) create mode 100644 components/icons/providers/lemonade.tsx create mode 100644 content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx diff --git a/components/icons/providers/index.ts b/components/icons/providers/index.ts index 5cc73e4ba..e287de290 100644 --- a/components/icons/providers/index.ts +++ b/components/icons/providers/index.ts @@ -21,6 +21,7 @@ export { default as GroqIcon } from './groq' export { default as HeliconeIcon } from './helicone' export { default as HuggingFaceIcon } from './huggingface' export { default as KeycloakIcon } from './keycloak' +export { default as LemonadeIcon } from './lemonade' export { default as LiteLLMIcon } from './litellm' export { default as MeilisearchIcon } from './meilisearch' export { default as MistralIcon } from './mistral' diff --git a/components/icons/providers/lemonade.tsx b/components/icons/providers/lemonade.tsx new file mode 100644 index 000000000..25a4326b6 --- /dev/null +++ b/components/icons/providers/lemonade.tsx @@ -0,0 +1,23 @@ +import React from 'react' + +// Monochrome silhouette from https://github.com/lemonade-sdk/lemonade/blob/main/src/app/assets/logo.svg +export default function LemonadeIcon({ className, ...props }: React.SVGProps) { + return ( + + ) +} diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx new file mode 100644 index 000000000..31a8e148b --- /dev/null +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx @@ -0,0 +1,59 @@ +--- +title: AMD Lemonade +icon: Lemonade +description: Configure AMD Lemonade as a custom endpoint in LibreChat to run chat models locally. +--- + +AMD Lemonade (Lemonade Server) runs models locally and exposes an OpenAI-compatible API, so you can connect LibreChat to your own machine. Follow the [Lemonade documentation](https://lemonade-server.ai/docs/) to install and start Lemonade, then download a chat model before configuring LibreChat. + +## Configuration + +Lemonade requires no API key. The `apiKey: 'lemonade'` value below is a placeholder that satisfies the OpenAI client, not an authentication credential. Add this endpoint under `endpoints.custom` in your `librechat.yaml`: + +```yaml filename="librechat.yaml" + - name: 'lemonade' + apiKey: 'lemonade' + baseURL: 'http://localhost:13305/v1' + models: + default: ['Qwen3-0.6B-GGUF'] + fetch: true + titleConvo: true + titleModel: 'current_model' + modelDisplayLabel: 'AMD Lemonade' + iconURL: 'lemonade' +``` + +Replace `Qwen3-0.6B-GGUF` with the ID of a chat model installed locally in Lemonade. With `fetch: true`, LibreChat discovers models from your Lemonade server. Setting `titleModel: 'current_model'` reuses the conversation's model for title generation. + +If you haven't created `librechat.yaml` yet, follow the [Custom Endpoints Quick Start Guide](/docs/quick_start/custom_endpoints). Restart LibreChat after changing the configuration. + +## Docker and Network Access + +When LibreChat runs in Docker, `localhost` refers to the LibreChat container, not your host machine. Replace it with `host.docker.internal` or a Lemonade hostname reachable from the container, keeping the port and `/v1` path: + +```yaml filename="librechat.yaml" +baseURL: 'http://host.docker.internal:13305/v1' +``` + +Make sure Lemonade listens on an interface reachable from LibreChat and that your firewall permits the connection. + +### User-Provided Base URLs + +If you let users supply their own base URL, add the local Lemonade server's exact `host:port` to [`endpoints.allowedAddresses`](/docs/configuration/librechat_yaml/object_structure/config#endpoints). For example, merge this into your existing `endpoints` object alongside `custom`: + +```yaml filename="librechat.yaml" +endpoints: + allowedAddresses: + - 'host.docker.internal:13305' +``` + +Use the host and port from the user-provided URL, without `http://` or `/v1`. This permits that private service through LibreChat's SSRF protection; it is not required for the fixed, administrator-configured `baseURL` in the first example. + +## Branding + +LibreChat's built-in branding recognizes `lemonade`, `AMD Lemonade`, and `Lemonade Server`. Keep `iconURL: 'lemonade'` to preserve the Lemonade logo when renaming the endpoint. + +## Notes + +- Configuration, model discovery, and branding were verified. Live inference was not tested. +- See the [Lemonade documentation](https://lemonade-server.ai/docs/) for installation, model downloads, and server settings. diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json index cfde5c3eb..c46fe3dfd 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json @@ -13,6 +13,7 @@ "groq", "helicone", "huggingface", + "lemonade", "litellm", "mistral", "mlx", diff --git a/lib/icons.tsx b/lib/icons.tsx index 3a5ce9dc7..71e187c54 100644 --- a/lib/icons.tsx +++ b/lib/icons.tsx @@ -23,6 +23,7 @@ import { HeliconeIcon, HuggingFaceIcon, KeycloakIcon, + LemonadeIcon, LiteLLMIcon, MeilisearchIcon, MistralIcon, @@ -256,6 +257,7 @@ const icons: Record = { Helicone: , HuggingFace: , Keycloak: , + Lemonade: , LiteLLM: , Meilisearch: , Mistral: , From 7a2e84f80211c1dc1923f58ce7c9ca13d9fb6932 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Sun, 6 Sep 2026 21:14:18 +0200 Subject: [PATCH 2/2] docs: align Lemonade guide with other AI endpoints --- .../librechat_yaml/ai_endpoints/lemonade.mdx | 42 ++++--------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx index 31a8e148b..74cfe49c9 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/lemonade.mdx @@ -1,14 +1,14 @@ --- title: AMD Lemonade icon: Lemonade -description: Configure AMD Lemonade as a custom endpoint in LibreChat to run chat models locally. +description: Configure AMD Lemonade as a custom endpoint in LibreChat. --- -AMD Lemonade (Lemonade Server) runs models locally and exposes an OpenAI-compatible API, so you can connect LibreChat to your own machine. Follow the [Lemonade documentation](https://lemonade-server.ai/docs/) to install and start Lemonade, then download a chat model before configuring LibreChat. +AMD Lemonade runs models locally through an OpenAI-compatible API. Follow the [Lemonade documentation](https://lemonade-server.ai/docs/) to install and start the server, then download a chat model. ## Configuration -Lemonade requires no API key. The `apiKey: 'lemonade'` value below is a placeholder that satisfies the OpenAI client, not an authentication credential. Add this endpoint under `endpoints.custom` in your `librechat.yaml`: +Lemonade requires no API key; the placeholder below satisfies the OpenAI client. Add the endpoint under `endpoints.custom` in your `librechat.yaml`: ```yaml filename="librechat.yaml" - name: 'lemonade' @@ -23,37 +23,9 @@ Lemonade requires no API key. The `apiKey: 'lemonade'` value below is a placehol iconURL: 'lemonade' ``` -Replace `Qwen3-0.6B-GGUF` with the ID of a chat model installed locally in Lemonade. With `fetch: true`, LibreChat discovers models from your Lemonade server. Setting `titleModel: 'current_model'` reuses the conversation's model for title generation. - -If you haven't created `librechat.yaml` yet, follow the [Custom Endpoints Quick Start Guide](/docs/quick_start/custom_endpoints). Restart LibreChat after changing the configuration. - -## Docker and Network Access - -When LibreChat runs in Docker, `localhost` refers to the LibreChat container, not your host machine. Replace it with `host.docker.internal` or a Lemonade hostname reachable from the container, keeping the port and `/v1` path: - -```yaml filename="librechat.yaml" -baseURL: 'http://host.docker.internal:13305/v1' -``` - -Make sure Lemonade listens on an interface reachable from LibreChat and that your firewall permits the connection. - -### User-Provided Base URLs - -If you let users supply their own base URL, add the local Lemonade server's exact `host:port` to [`endpoints.allowedAddresses`](/docs/configuration/librechat_yaml/object_structure/config#endpoints). For example, merge this into your existing `endpoints` object alongside `custom`: - -```yaml filename="librechat.yaml" -endpoints: - allowedAddresses: - - 'host.docker.internal:13305' -``` - -Use the host and port from the user-provided URL, without `http://` or `/v1`. This permits that private service through LibreChat's SSRF protection; it is not required for the fixed, administrator-configured `baseURL` in the first example. - -## Branding - -LibreChat's built-in branding recognizes `lemonade`, `AMD Lemonade`, and `Lemonade Server`. Keep `iconURL: 'lemonade'` to preserve the Lemonade logo when renaming the endpoint. - ## Notes -- Configuration, model discovery, and branding were verified. Live inference was not tested. -- See the [Lemonade documentation](https://lemonade-server.ai/docs/) for installation, model downloads, and server settings. +- Replace `Qwen3-0.6B-GGUF` with a locally installed chat model. With `fetch: true`, LibreChat retrieves the model list from Lemonade. `titleModel: 'current_model'` reuses the conversation's model for titles. +- For Docker, replace `localhost` with `host.docker.internal` or a reachable Lemonade hostname. +- For user-provided base URLs, add the local server's exact `host:port` (e.g. `host.docker.internal:13305`) to [`endpoints.allowedAddresses`](/docs/configuration/librechat_yaml/object_structure/config#endpoints). +- Built-in branding recognizes `lemonade`, `AMD Lemonade`, and `Lemonade Server`. Keep `iconURL: 'lemonade'` to preserve the logo when renaming the endpoint.