From c146b294fbe2bfe4ebc1cdbafc9ec795337f8828 Mon Sep 17 00:00:00 2001 From: Joshua Mo Date: Wed, 8 Jul 2026 14:40:48 +0100 Subject: [PATCH] feat: add support for Venice AI --- components/icons/providers/index.ts | 1 + components/icons/providers/venice.tsx | 20 ++++++++++ .../librechat_yaml/ai_endpoints/meta.json | 1 + .../librechat_yaml/ai_endpoints/venice.mdx | 39 +++++++++++++++++++ .../configuration/librechat_yaml/example.mdx | 11 ++++++ .../object_structure/custom_endpoint.mdx | 1 + lib/icons.tsx | 2 + public/starters-hashes.json | 5 ++- public/starters.json | 5 +++ 9 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 components/icons/providers/venice.tsx create mode 100644 content/docs/configuration/librechat_yaml/ai_endpoints/venice.mdx diff --git a/components/icons/providers/index.ts b/components/icons/providers/index.ts index 5cc73e4ba..2dcc9a2c8 100644 --- a/components/icons/providers/index.ts +++ b/components/icons/providers/index.ts @@ -45,6 +45,7 @@ export { default as ShuttleAIIcon } from './shuttleai' export { default as TogetherAIIcon } from './togetherai' export { default as TraefikIcon } from './traefik' export { default as TrueFoundryIcon } from './truefoundry' +export { default as VeniceIcon } from './venice' export { default as VLLMIcon } from './vllm' export { default as VultrIcon } from './vultr' export { default as WolframIcon } from './wolfram' diff --git a/components/icons/providers/venice.tsx b/components/icons/providers/venice.tsx new file mode 100644 index 000000000..e51c65bf1 --- /dev/null +++ b/components/icons/providers/venice.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +export default function VeniceIcon({ className, ...props }: React.SVGProps) { + return ( + + + + + ) +} diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json index cfde5c3eb..236bfdb1f 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json @@ -26,6 +26,7 @@ "shuttleai", "togetherai", "truefoundry", + "venice", "vllm", "vultrcloudinference", "xai" diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/venice.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/venice.mdx new file mode 100644 index 000000000..b7be04f60 --- /dev/null +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/venice.mdx @@ -0,0 +1,39 @@ +--- +title: Venice +icon: Venice +description: Configure Venice as a custom endpoint in LibreChat. +--- + +Venice provides OpenAI-compatible chat completions for its model catalog through a single API key. Add it to LibreChat as a custom endpoint. + +## Get an API key + +Create a key from the [Venice API dashboard](https://venice.ai/settings/api). Add it to your `.env` file: + +```bash filename=".env" +VENICE_API_KEY=your-api-key +``` + +## Configuration + +Add the endpoint under `endpoints.custom` in your `librechat.yaml`: + +```yaml filename="librechat.yaml" + - name: 'Venice' + apiKey: '${VENICE_API_KEY}' + baseURL: 'https://api.venice.ai/api/v1' + models: + default: ['zai-org-glm-5'] + fetch: true + titleConvo: true + titleModel: 'zai-org-glm-5' + modelDisplayLabel: 'Venice' +``` + +To let each user supply their own key through the LibreChat UI instead of reading one from `.env`, set `apiKey: "user_provided"`. Users then see a key input field when they select the endpoint. + +## Notes + +- Venice exposes an OpenAI-compatible `/models` endpoint, so `fetch: true` keeps the LibreChat model list synced with available Venice models. The `default` array is used as the initial fallback. +- Use `addParams` for Venice-specific options such as `venice_parameters` when you need features like web search or custom Venice behavior. +- Venice does not support the OpenAI Assistants API through this custom endpoint path. diff --git a/content/docs/configuration/librechat_yaml/example.mdx b/content/docs/configuration/librechat_yaml/example.mdx index c4d59b3a4..7f0fbb3e6 100644 --- a/content/docs/configuration/librechat_yaml/example.mdx +++ b/content/docs/configuration/librechat_yaml/example.mdx @@ -236,6 +236,17 @@ endpoints: modelDisplayLabel: 'ShuttleAI' dropParams: ['user'] + # Venice + - name: 'Venice' + apiKey: '${VENICE_API_KEY}' + baseURL: 'https://api.venice.ai/api/v1' + models: + default: ['zai-org-glm-5'] + fetch: true + titleConvo: true + titleModel: 'zai-org-glm-5' + modelDisplayLabel: 'Venice' + # together.ai - name: 'together.ai' apiKey: '${TOGETHERAI_API_KEY}' diff --git a/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx b/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx index 77874fe3a..99727dd2e 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/custom_endpoint.mdx @@ -251,6 +251,7 @@ iconURL: openAI - "ShuttleAI" - "together.ai" - "Unify" + - "Venice" - "xai" ## models diff --git a/lib/icons.tsx b/lib/icons.tsx index 3a5ce9dc7..9c79c5615 100644 --- a/lib/icons.tsx +++ b/lib/icons.tsx @@ -47,6 +47,7 @@ import { TogetherAIIcon, TraefikIcon, TrueFoundryIcon, + VeniceIcon, VLLMIcon, VultrIcon, WolframIcon, @@ -280,6 +281,7 @@ const icons: Record = { TogetherAI: , Traefik: , TrueFoundry: , + Venice: , VLLM: , Vultr: , Wolfram: , diff --git a/public/starters-hashes.json b/public/starters-hashes.json index 858e8c20a..919a162a5 100644 --- a/public/starters-hashes.json +++ b/public/starters-hashes.json @@ -52,10 +52,11 @@ "/docs/configuration/librechat_yaml/ai_endpoints/shuttleai": "e88896a0d6feb8628bbec4d32d5fc1ddebd861719506a3bc9dc7dc756532ef4f", "/docs/configuration/librechat_yaml/ai_endpoints/togetherai": "489e879b8c74bb43ca03e5734c7bfaa439a6b75c6e8564638e987e8cd51f6605", "/docs/configuration/librechat_yaml/ai_endpoints/truefoundry": "16bf9048fb116aba7a600eb49a5a222942bac089b95791031dbcbec043eeb068", + "/docs/configuration/librechat_yaml/ai_endpoints/venice": "303acf8c0170423937a0d95dcddd26813e1bbc7ec75bf95049742edff58ac38a", "/docs/configuration/librechat_yaml/ai_endpoints/vllm": "4d7d3cd10e539d8a1aa5b6b2ab04ba83e375bc32abcf37cad29ef1bfaeb6a543", "/docs/configuration/librechat_yaml/ai_endpoints/vultrcloudinference": "27b4079eee0bc98807ec85e8cd64aecb819a84a5104298d41ed103d5f55be018", "/docs/configuration/librechat_yaml/ai_endpoints/xai": "8276d37d68206f665035ce015e54090ae286c21d8707be59a923981ff9d76a9e", - "/docs/configuration/librechat_yaml/example": "af9dd8fcd1b52a2c34370f1ecce5924f7f58ddccde764b6d4ab4f8246f2f8d05", + "/docs/configuration/librechat_yaml/example": "ae1421dd1eeafffd4709d9e81c3902886dcf3ecebabaa7f69eea8124e2af42fe", "/docs/configuration/librechat_yaml/object_structure/actions": "1d31b104a0544a55eb0da386aea81ea08f1f6e621f32f051c91295f42330abe6", "/docs/configuration/librechat_yaml/object_structure/agents": "302e154f9125281753e9653ebee9eabe09b4299b35b511fc4a7614963bdaa1c2", "/docs/configuration/librechat_yaml/object_structure/anthropic_vertex": "4a9ea459f218ea7a6be77b711b0403934cbacf7392b5e2807f9df2a5cfd89490", @@ -64,7 +65,7 @@ "/docs/configuration/librechat_yaml/object_structure/azure_openai": "86faf9feed6f5e92f73760dfb7807434f3f967ab93a919faed8c7743e577155e", "/docs/configuration/librechat_yaml/object_structure/balance": "c5cf299069acb64322106d3610dff6c6decbf04fb1a288dc53d2e518b0104a89", "/docs/configuration/librechat_yaml/object_structure/config": "45bca33b3a1cffc5aa6a9a9a0f48c09e87fdcaa56acb9e3aa9610cb2ec5f8a0b", - "/docs/configuration/librechat_yaml/object_structure/custom_endpoint": "8b1ca305012687576122425e899e48706a5a1c1a895c683221e8646dac3de180", + "/docs/configuration/librechat_yaml/object_structure/custom_endpoint": "a8c0b99c472e6d1496059214c7507a206705972be799f38f610fd7795ea0fc4c", "/docs/configuration/librechat_yaml/object_structure/custom_params": "415cabbfe176d3515f820ca1b38655759b3ff06b7d2d3083d4c52881478f6e49", "/docs/configuration/librechat_yaml/object_structure/default_params": "2ed6dd6b30b2e9df22f187492e7efa5f91b1203507ed2f7ea78dde9afd4c4436", "/docs/configuration/librechat_yaml/object_structure/file_config": "2515b9d991293224ea15b308c2f4a3d01e98f2e55c2e7c7da7f011bdc9b48c9f", diff --git a/public/starters.json b/public/starters.json index 8eaaeafa4..f0b102c0f 100644 --- a/public/starters.json +++ b/public/starters.json @@ -264,6 +264,11 @@ "What model names should I use in TrueFoundry YAML?", "Do I need fetch: true for TrueFoundry models?" ], + "/docs/configuration/librechat_yaml/ai_endpoints/venice": [ + "How do I configure Venice in librechat.yaml?", + "Can Venice models be fetched automatically?", + "How do I let users provide their own Venice API key?" + ], "/docs/configuration/librechat_yaml/ai_endpoints/vllm": [ "What baseURL should vLLM use for local server?", "Why set titleMessageRole to user?",