🪪mkdocs: social cards (#1428)

* mkdocs plugins: add plugin for social cards and plugin that allow to exclude a folder

* docs: fix hyperlinks

* mkdocs: social cards (descriptions) for 'contributions' and 'deployment' guides

* mkdocs: social cards (descriptions) for all 'index.md'

* mkdocs: social cards (descriptions) for 'features' and 'plugins'

* mkdocs: social cards (descriptions) for 'general_info'

* mkdocs: social cards (descriptions) for 'configuration'

* mkdocs: social cards (descriptions) for 'installation'

* mkdocs: minor fixes

* update librechat.svg

* update how_to_contribute.md

add reference to the official GitHub documentation
This commit is contained in:
Fuegovic 2023-12-28 17:10:06 -05:00 committed by GitHub
parent 18cd02d44e
commit bce4f41fae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
62 changed files with 393 additions and 329 deletions

View file

@ -22,4 +22,6 @@ jobs:
mkdocs-material-
- run: pip install mkdocs-material
- run: pip install mkdocs-nav-weight
- run: pip install mkdocs-publisher
- run: pip install mkdocs-exclude
- run: mkdocs gh-deploy --force

View file

@ -1,12 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="1024" height="1024" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="512" height="512" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linearGradient22708">
<stop stop-color="#21facf" offset="0"/>
<stop stop-color="#0970ef" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient6949" x1="68.454" x2="198.59" y1="246.73" y2="96.35" gradientTransform="translate(-5.754 -56.594)" gradientUnits="userSpaceOnUse">
<linearGradient id="linearGradient6949" x1="68.454" x2="198.59" y1="246.73" y2="96.35" gradientTransform="translate(-5.754,-56.594)" gradientUnits="userSpaceOnUse">
<stop stop-color="#72004e" offset="0"/>
<stop stop-color="#0015b1" offset="1"/>
</linearGradient>
@ -22,13 +20,13 @@
</linearGradient>
<linearGradient id="linearGradient918" x1="39.468" x2="154.99" y1="204.22" y2="124.47" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient22708"/>
</defs>
<g transform="matrix(4.946 0 0 4.946 -9.798 -9.7983)">
<path transform="translate(-5.7543 -56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient22718)"/>
<path transform="translate(-5.754 -56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient23463)"/>
<g transform="matrix(2.473 0 0 2.473 -4.8978 -4.8812)">
<path transform="translate(-5.5496,-57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" display="none" fill="url(#linearGradient903)"/>
<path transform="translate(-5.5498,-57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" fill="url(#linearGradient918)"/>
<g transform="translate(0 2.0218e-5)">
<path transform="translate(-5.7543,-56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient22718)"/>
<path transform="translate(-5.754,-56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient23463)"/>
<path d="m105.5 24.43c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" fill="url(#linearGradient6949)"/>
</g>
<g transform="matrix(4.946 0 0 4.946 -9.798 -9.7984)">
<path transform="translate(-5.5496 -57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" display="none" fill="url(#linearGradient903)"/>
<path transform="translate(-5.5498 -57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" fill="url(#linearGradient918)"/>
</g>
</svg>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

View file

@ -1,5 +1,6 @@
---
title: 🧑‍💻 Code Standards and Conventions
description: This guide covers the best practices for JavaScript coding, such as following the Airbnb Style Guide, using CommonJS modules, structuring the API using Express, Mongoose, and services, and testing and documenting the code using Jest, Supertest, Playwright, JSDoc, and TypeScript.
weight: -7
---
# Coding Conventions
@ -67,7 +68,7 @@ Defines Mongoose models to represent data entities and their relationships.
### 4. Database Access (MongoDB and Mongoose)
- Use Mongoose (https://mongoosejs.com) as the MongoDB ODM.
- Use Mongoose ([https://mongoosejs.com](https://mongoosejs.com)) as the MongoDB ODM.
- Create separate model files for each entity and ensure clear separation of concerns.
- Use Mongoose schema validation to enforce data integrity.
- Handle database connections efficiently and avoid connection leaks.

View file

@ -1,5 +1,6 @@
---
title: 📝 Documentation Guidelines
description: Learn how to write and format documentation for LibreChat.
weight: -9
---
# Documentation Guidelines
@ -26,6 +27,7 @@ This document explains how to write and format documentation for LibreChat.
```bash
---
title: Document Title
description: This description will be used in social cards
weight: 0
---
```

View file

@ -1,8 +1,11 @@
---
title: 🙌 Beginner's Guide to Contributions
description: Learn how to use GitHub Desktop, VS Code extensions, and Git rebase to contribute in a quick and easy way.
weight: -10
---
# How to Contribute in a Quick and Easy Way
> **❗Note:** If you are not familiar with the concept of repo, PR (pull request), fork and branch, start by looking at the official GitHub documentation on the subject:
[https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models)
## Installation of Tools

View file

@ -1,5 +1,6 @@
---
title: Contributing to LibreChat
description: "🙌 How to contribute to LibreChat: Get started, Documentation and code standards, Translate the app into different languages, Test the app during development, Ensure the security of the app, Stay updated with the project roadmap"
weight: 5
---
# Contributing to LibreChat

View file

@ -1,5 +1,6 @@
---
title: 🧪 Testing During Development
description: How to locally test the app during development.
weight: -6
---

View file

@ -1,5 +1,6 @@
---
title: 🌍 Contribute a Translation
description: How to add a new language to LibreChat.
weight: -8
---
# How to add a new language to LibreChat 🌍

View file

@ -1,5 +1,6 @@
---
title: ⚡ Azure
description: How to deploy LibreChat in Azure using Terraform.
weight: -6
---
# Azure deployment

View file

@ -1,5 +1,6 @@
---
title: ☁️ Cloudflare
description: How to setup a domain with Cloudflare and use Cloudflare Tunnels to securely expose your local web servers or services to the internet.
weight: -7
---
<img src="https://github.com/danny-avila/LibreChat/assets/32828263/cfbc7ca5-b51e-4f1d-aa89-b9b4cb13eead" width="350">
@ -9,12 +10,12 @@ weight: -7
## Google Domains and Cloudflare
- buy a domain at https://domains.google.com/
- register a Cloudflare account at https://dash.cloudflare.com/sign-up
- buy a domain at **[https://domains.google.com/](https://domains.google.com)**
- register a Cloudflare account at **[https://dash.cloudflare.com/sign-up](https://dash.cloudflare.com/sign-up)**
- click on `add site` and add your domain
- select `Free` and tap `continue` twice
- copy the 2 Cloudflare's nameservers
- go to https://domains.google.com/registrar/ and select your domain
- go to **[https://domains.google.com/registrar/](https://domains.google.com/registrar)** and select your domain
- in the dns tab select `Custom name servers`
- click on `Switch to these settings` and enter the two Cloudflare nameservers that you copied before, then save
- return to the cloudflare tab and tap on `Done, check nameservers`, then `finish later` and `Check nameservers` (this process can take about 5 minutes)
@ -73,7 +74,7 @@ Here's a straightforward guide on how to install it!
### Installation Steps
1. Go to `https://dash.cloudflare.com/`.
1. Go to **[https://dash.cloudflare.com/](https://dash.cloudflare.com/)**.
2. On the left side, click on **Zero Trust**.
3. Provide a casual name (which you can change later).
4. Select the free plan and proceed to payment (if you choose the free plan, you will not be charged).

View file

@ -1,5 +1,6 @@
---
title: 🌊 DigitalOcean ✨(Recommended)
description: These instructions are designed for someone starting from scratch for a Docker Installation on a remote Ubuntu server using one of the cheapest tiers (6 USD/mo)
weight: -10
---
# Digital Ocean (Ubuntu/Docker) Setup
@ -366,7 +367,7 @@ It's safe to close the terminal if you wish -- the docker app will continue to r
>If you are setting up a domain to be used with LibreChat, this compose file is using the nginx file located in client/nginx.conf. Instructions on this below in part V.
### **4. Once the app is running, you can access it at http://yourserverip**
### **4. Once the app is running, you can access it at `http://yourserverip`**
### Go back to the DigitalOcean droplet page to get your server ip, copy it, and paste it into your browser!

View file

@ -1,5 +1,6 @@
---
title: 🌈 Heroku
description: Instructions for deploying LibreChat on Heroku
weight: -1
---
# Heroku Deployment
@ -10,8 +11,8 @@ Heroku only supports running a single process within a Docker container. The Doc
If you want to deploy both these services to Heroku, you will need to create two separate Dockerfiles: one for the API and one for the client. The heroku.yml should be configured separately for each app, and then you need to create and deploy two different Heroku apps.
- Sign up for a Heroku account: If you don't already have a Heroku account, sign up at https://signup.heroku.com/.
- Install the Heroku CLI: Download and install the Heroku CLI from https://devcenter.heroku.com/articles/heroku-cli.
- Sign up for a Heroku account: If you don't already have a Heroku account, sign up at: **[https://signup.heroku.com](https://signup.heroku.com)**
- Install the Heroku CLI: Download and install the Heroku CLI from: **[https://devcenter.heroku.com/articles/heroku-cli](https://devcenter.heroku.com/articles/heroku-cli)**
Here are the steps to deploy on Heroku:
@ -126,7 +127,7 @@ Remember to replace `your-api-app-name` and `your-client-app-name` with the actu
---
⚠️ If you have issues, see this discussion first: https://github.com/danny-avila/LibreChat/discussions/339
⚠️ If you have issues, see this discussion first: **[https://github.com/danny-avila/LibreChat/discussions/339](https://github.com/danny-avila/LibreChat/discussions/339)**
## Using Heroku Dashboard:
@ -136,7 +137,7 @@ Remember to replace `your-api-app-name` and `your-client-app-name` with the actu
## Setting up MongoDB Atlas:
Sign up for a MongoDB Atlas account: If you don't have an account, sign up at https://www.mongodb.com/cloud/atlas/signup.
Sign up for a MongoDB Atlas account: If you don't have an account, sign up at: **[https://www.mongodb.com/cloud/atlas/signup](https://www.mongodb.com/cloud/atlas/signup)**
Create a new cluster: After signing in, create a new cluster by following the on-screen instructions. For a free tier cluster, select the "Shared" option and choose the "M0 Sandbox" tier.
@ -148,7 +149,7 @@ Get the connection string: Once the cluster is created, click the "Connect" butt
## Deploying MeiliSearch on Heroku:
Install the Heroku CLI: If you haven't already, download and install the Heroku CLI from https://devcenter.heroku.com/articles/heroku-cli.
Install the Heroku CLI: If you haven't already, download and install the Heroku CLI from: **[https://devcenter.heroku.com/articles/heroku-cli](https://devcenter.heroku.com/articles/heroku-cli)**
Login to Heroku: Open Terminal and run heroku login. Follow the instructions to log in to your Heroku account.
## Create a new Heroku app for MeiliSearch:

View file

@ -1,5 +1,6 @@
---
title: 🏗️ Hetzner
description: LibreChat Ubuntu installation from scratch on Hetzner.
weight: -2
---
# Hetzner Ubuntu Setup
@ -8,24 +9,24 @@ weight: -2
## Starting from Zero:
### 1. Login to Hetzner Cloud Console (https://console.hetzner.cloud/projects) and Create a new Ubuntu 20 Project with 4GB Ram. Do not worry about SSH keys *yet*.
1. Login to Hetzner Cloud Console (**[https://console.hetzner.cloud/projects](https://console.hetzner.cloud/projects)**) and Create a new Ubuntu 20 Project with 4GB Ram. Do not worry about SSH keys *yet*.
Hetzner will email you the root password.
### 2. Once you have that, you can login with any SSH terminal with:
2. Once you have that, you can login with any SSH terminal with:
```
ssh root@<yourserverip>
```
### 3. Once you have logged in, immediately create a new, non-root user:
3. Once you have logged in, immediately create a new, non-root user:
```
adduser <yourusername>
usermod -aG sudo <yourusername>
```
### 4. Make sure you have done this correctly by double-checking you have sudo permissions:
4. Make sure you have done this correctly by double-checking you have sudo permissions:
```
getent group sudo | cut -d: -f4
@ -33,7 +34,7 @@ getent group sudo | cut -d: -f4
Now, quit the terminal connection.
### 5. Create a local ssh key:
5. Create a local ssh key:
```
ssh-keygen -t ed25519
@ -51,13 +52,13 @@ ssh <yourusername>@<yourserverip>
When you login, now and going forward, it will ask you for the password for your ssh key now, not your user password. Sudo commands will always want your user password.
### 6. Add SSH to the universal server firewall and activate it.
6. Add SSH to the universal server firewall and activate it.
- Run `sudo ufw allow OpenSSH`
- Run `sudo ufw enable`
### 7. Then, we need to install docker, update the system packages, and reboot the server:
7. Then, we need to install docker, update the system packages, and reboot the server:
```
sudo apt install docker
sudo apt install docker-compose
@ -132,7 +133,7 @@ MEILI_HTTP_ADDR=meilisearch
**NOTE: You may need to run these commands with sudo permissions.**
## Once the app is running, you can access it at http://yourserverip:3080
## Once the app is running, you can access it at `http://yourserverip:3080`
It is safe to close the terminal -- the docker app will continue to run.

View file

@ -1,27 +1,23 @@
---
title: 🤗 HuggingFace
description: Easily deploy LibreChat on Hugging Face Spaces
weight: -9
---
# Hugging Face Deployment 🤗
>#### ⚠️ Note - Some features are not supported by HuggingFace:
>- Meilisearch
>- Social Logins
> #### ❗Also:
>- You will have to create an online MongoDB Atlas Database to be able to properly deploy
## Create and Configure your Database (Required)
The first thing you need is to create a MongoDB Atlas Database and get your connection string.
Follow the instructions in this document: [Online MongoDB Database](../install/configuration/mongodb.md)
Follow the instructions in this document: **[Online MongoDB Database](../install/configuration/mongodb.md)**
## Getting Started
**1.** Login or Create an account on [Hugging Face](https://huggingface.co/)
**1.** Login or Create an account on **[Hugging Face](https://huggingface.co/)**
**2.** Visit [[https://huggingface.co/spaces/LibreChat/template](https://huggingface.co/spaces/LibreChat/template)]and click on `Duplicate this Space` to copy the LibreChat template into your profile
**2.** Visit **[https://huggingface.co/spaces/LibreChat/template](https://huggingface.co/spaces/LibreChat/template)** and click on `Duplicate this Space` to copy the LibreChat template into your profile.
> Note: It is normal for this template to have a runtime error, you will have to configure it using the following guide to make it functional.
![image](https://github.com/fuegovic/LibreChat/assets/32828263/fd684254-cbe0-4039-ba4a-7c492b16a453)
@ -48,10 +44,10 @@ You will need to fill these values:
> ⬆️ **Leave the value field blank for any endpoints that you wish to disable.**
>⚠️ setting the API keys and token to `user_provided` allows you to provide them safely from the webUI
> ⚠️ setting the API keys and token to `user_provided` allows you to provide them safely from the webUI
>* For `CREDS_KEY`, `CREDS_IV` and `JWT_SECRET` use this tool: [https://replit.com/@daavila/crypto#index.js](https://replit.com/@daavila/crypto#index.js).
>* Run the tool a second time and use the new `JWT_SECRET` value for the `JWT_REFRESH_SECRET`
> * For `CREDS_KEY`, `CREDS_IV` and `JWT_SECRET` use this tool: **[https://replit.com/@daavila/crypto#index.js](https://replit.com/@daavila/crypto#index.js)**
> * Run the tool a second time and use the new `JWT_SECRET` value for the `JWT_REFRESH_SECRET`
| Variables | Values |
| --- | --- |

View file

@ -1,5 +1,6 @@
---
title: Deployment
description: 🌐 Step-by-step guides on how to deploy LibreChat on various cloud platforms.
weight: 3
---

View file

@ -1,5 +1,6 @@
---
title: 🐧 Linode
description: How to deploy LibreChat on Linode.
weight: -8
---
<img src="https://github.com/danny-avila/LibreChat/assets/32828263/d6e430db-518a-4779-83d3-a2d177907df1" width="250">
@ -9,7 +10,7 @@ weight: -8
⚠️**Note: Payment is required**
## Create a Linode Account and a Linode Server
- Go to the Linode website (https://www.linode.com/) and click on the "Sign Up" or "Get Started" button.
- Go to the Linode website (**[https://www.linode.com/](https://www.linode.com/)**) and click on the "Sign Up" or "Get Started" button.
- Follow the instructions to create a new account by providing your personal details and payment information.
- Once your account is created, you will have access to the Linode Cloud Manager.
- Click on the "Create" button to create a new Linode server.

View file

@ -1,12 +1,13 @@
---
title: 🔎 Meilisearch in Render
description: Setup Meilisearch on Render (for use with the Render deployment guide)
weight: -3
---
# Utilize Meilisearch by running LibreChat on Render
## Create a new account or a new project on Render
**1.** Visit [https://render.com/](https://render.com/) and click on `Start Free` to create an account and sign in
**1.** Visit **[https://render.com/](https://render.com/)** and click on `Start Free` to create an account and sign in
**2.** Access your control panel

View file

@ -1,5 +1,6 @@
---
title: 🪨 Ngrok
description: Use Ngrok to tunnel your local server to the internet.
weight: -5
---
# Ngrok Installation
@ -8,44 +9,43 @@ To use Ngrok for tunneling your local server to the internet, follow these steps
## Sign up
1. Go to https://ngrok.com/ and sign up for an account.
1. Go to **[https://ngrok.com/](https://ngrok.com/)** and sign up for an account.
## Docker Installation 🐳
1. Copy your auth token from https://dashboard.ngrok.com/get-started/your-authtoken.
1. Copy your auth token from: **[https://dashboard.ngrok.com/get-started/your-authtoken](https://dashboard.ngrok.com/get-started/your-authtoken)**
2. Open a terminal and run the following command: `docker run -d -it -e NGROK_AUTHTOKEN=<your token> ngrok/ngrok http 80`
## Windows Installation 💙
1. Download the ZIP file from https://ngrok.com/download.
1. Download the ZIP file from: **[https://ngrok.com/download](https://ngrok.com/download)**
2. Extract the contents of the ZIP file using 7zip or WinRar.
3.
4. Run `ngrok.exe`.
5. Copy your auth token from https://dashboard.ngrok.com/get-started/your-authtoken.
6. In the `ngrok.exe` terminal, run the following command: `ngrok config add-authtoken <your token>`
7. If you haven't done so already, start LibreChat normally.
8. In the `ngrok.exe` terminal, run the following command: `ngrok http 3080`
3. Run `ngrok.exe`.
4. Copy your auth token from: **[https://dashboard.ngrok.com/get-started/your-authtoken](https://dashboard.ngrok.com/get-started/your-authtoken)**
5. In the `ngrok.exe` terminal, run the following command: `ngrok config add-authtoken <your token>`
6. If you haven't done so already, start LibreChat normally.
7. In the `ngrok.exe` terminal, run the following command: `ngrok http 3080`
You will see a link that can be used to access LibreChat.
![ngrok-1](https://github.com/danny-avila/LibreChat/assets/32828263/3cb4b063-541f-4f0a-bea8-a04dd36e6bf4)
## Linux Installation 🐧
1. Copy the command from https://ngrok.com/download choosing the **correct** architecture.
1. Copy the command from: **[https://ngrok.com/download](https://ngrok.com/download)** choosing the **correct** architecture.
2. Run the command in the terminal
3. Copy your auth token from https://dashboard.ngrok.com/get-started/your-authtoken.
3. Copy your auth token from: **[https://dashboard.ngrok.com/get-started/your-authtoken](https://dashboard.ngrok.com/get-started/your-authtoken)**
4. run the following command: `ngrok config add-authtoken <your token>`
5. If you haven't done so already, start LibreChat normally.
6. run the following command: `ngrok http 3080`
## Mac Installation 🍎
1. Download the ZIP file from https://ngrok.com/download.
1. Download the ZIP file from: **[https://ngrok.com/download](https://ngrok.com/download)**
2. Extract the contents of the ZIP file using a suitable Mac application like Unarchiver.
3. Open Terminal.
4. Navigate to the directory where you extracted ngrok using the `cd` command.
5. Run ngrok by typing `./ngrok`.
6. Copy your auth token from https://dashboard.ngrok.com/get-started/your-authtoken.
6. Copy your auth token from: **[https://dashboard.ngrok.com/get-started/your-authtoken](https://dashboard.ngrok.com/get-started/your-authtoken)**
7. In the terminal where you ran ngrok, enter the following command: `ngrok authtoken <your token>`
8. If you haven't done so already, start LibreChat normally.
9. In the terminal where you ran ngrok, enter the following command: `./ngrok http 3080`

View file

@ -1,5 +1,6 @@
---
title: ⏹️ Render
description: How to deploy LibreChat on Render
weight: -4
---
# Render Deployment

View file

@ -4,9 +4,9 @@ weight: 6
---
# Dev Resources
Please consult: [Contributing to LibreChat](../contributions/index.md) for more information on the subject.
Please consult: **[Contributing to LibreChat](../contributions/index.md)** for more information on the subject.
This directory: [./docs/dev](https://github.com/danny-avila/LibreChat/tree/main/docs/dev), contains files used for developer work.
This directory: **[./docs/dev](https://github.com/danny-avila/LibreChat/tree/main/docs/dev)**, contains files used for developer work.
#### `Dockerfile-app`
- used to build the DockerHub image
@ -28,7 +28,7 @@ This directory: [./docs/dev](https://github.com/danny-avila/LibreChat/tree/main/
#### `deploy-compose.yml`
- Similar to above, but with basic configuration for deployment to a cloud provider where multi-container compose works
- Tested and working on a $6 droplet on DigitalOcean, just by visiting the http://server-ip/9000.
- Tested and working on a $6 droplet on DigitalOcean, just by visiting the `http://server-ip/9000`.
- Not a scalable solution, but ideal for quickly hosting on a remote linux server.
- You should adjust `server_name localhost;` to match your domain name, replacing localhost, as needed.
- From root dir of the project, run `docker-compose -f ./docs/dev/deploy-compose.yml up --build`

View file

@ -1,5 +1,6 @@
---
title: 😈 Bing Jailbreak
description: Quick overview of the Bing jailbreak and Sydney's system message
weight: -3
---
@ -31,6 +32,6 @@ using internet slang often. Answer using the same language as the user."
## References
For more info on the Bing Jailbreak and general jailbreaking guidelines:
https://github.com/waylaidwanderer/node-chatgpt-api
[https://github.com/waylaidwanderer/node-chatgpt-api](https://github.com/waylaidwanderer/node-chatgpt-api)
https://www.make-safe-ai.com/is-bing-chat-safe/
[https://www.make-safe-ai.com/is-bing-chat-safe/](https://www.make-safe-ai.com/is-bing-chat-safe/)

View file

@ -1,5 +1,6 @@
---
title: Features
description: "✨ In-depth guides about various LibreChat features: plugins, presets, automated moderation, logging..."
weight: 2
---

View file

@ -1,5 +1,6 @@
---
title: 🪵 Logging System
description: This doc explains how to use the logging feature of LibreChat, which saves error and debug logs in the `/api/logs` folder. You can use these logs to troubleshoot issues, monitor your server, and report bugs. You can also disable debug logs if you want to save space.
weight: -5
---
@ -9,9 +10,9 @@ LibreChat has central logging built into its backend (api).
Log files are saved in `/api/logs`. Error logs are saved by default. Debug logs are enabled by default but can be turned off if not desired.
This allows you to monitor your server through external tools that inspect log files, such as [the ELK stack](https://aws.amazon.com/what-is/elk-stack/).
This allows you to monitor your server through external tools that inspect log files, such as **[the ELK stack](https://aws.amazon.com/what-is/elk-stack/)**.
Debug logs are essential for developer work and fixing issues. If you encounter any problems running LibreChat, reproduce as close as possible, and [report the issue](https://github.com/danny-avila/LibreChat/issues) with your logs found in `./api/logs/debug-%DATE%.log`.
Debug logs are essential for developer work and fixing issues. If you encounter any problems running LibreChat, reproduce as close as possible, and **[report the issue](https://github.com/danny-avila/LibreChat/issues)** with your logs found in `./api/logs/debug-%DATE%.log`.
Errors logs are also saved in the same location: `./api/logs/error-%DATE%.log`. If you have meilisearch configured, there is a separate log file for this as well.

View file

@ -1,5 +1,6 @@
---
title: 🍃 Manage Your Database
description: How to install and configure Mongo Express to securely access and manage your MongoDB database in Docker.
weight: -6
---

View file

@ -1,5 +1,6 @@
---
title: 🔨 Automated Moderation
description: The Automated Moderation System uses a scoring mechanism to track user violations. As users commit actions like excessive logins, registrations, or messaging, they accumulate violation scores. Upon reaching a set threshold, the user and their IP are temporarily banned. This system ensures platform security by monitoring and penalizing rapid or suspicious activities.
weight: -8
---
## Automated Moderation System (optional)
@ -33,7 +34,7 @@ The project's current rate limiters are as follows (see below under setup for de
### Setup
The following are all of the related env variables to make use of and configure the mod system. Note this is also found in the [/.env.example](/.env.example) file, to be set in your own `.env` file.
The following are all of the related env variables to make use of and configure the mod system. Note this is also found in the [/.env.example](https://github.com/danny-avila/LibreChat/blob/main/.env.example) file, to be set in your own `.env` file.
```bash
BAN_VIOLATIONS=true # Whether or not to enable banning users for violations (they will still be logged)

View file

@ -1,5 +1,6 @@
---
title: 📦 PandoraNext
description: How to deploy PandoraNext to enable the `CHATGPT_REVERSE_PROXY` for use with LibreChat.
weight: -4
---
@ -18,37 +19,38 @@ You can use it locally in docker or deploy it onthe web for remote access.
For local deployment using Docker, the steps are as follows:
### 1. **Clone or Download the Repository:**
Get the latest release from the [PandoraNext GitHub repository](https://github.com/pandora-next/deploy).
Get the latest release from the [PandoraNext GitHub repository](https://github.com/pandora-next/deploy).
```bash
git clone https://github.com/pandora-next/deploy.git
```
```bash
git clone https://github.com/pandora-next/deploy.git
```
### 2. Get your PandoraNext license id here: [PandoraNext Dashboard](https://dash.pandoranext.com/)
### 2. Get your PandoraNext `License ID`
Visit the **[PandoraNext Dashboard](https://dash.pandoranext.com/)** to get your `license ID`
### 3. **Configure `config.json`:**
Within the cloned repository, in the `data` folder, edit `config.json`. Specify your `license_id` and `proxy_api_prefix`. For the `proxy_api_prefix`, use at least 8 characters, avoid characters that can't be used in a URL and make sure it's unique.
Within the cloned repository, in the `data` folder, edit `config.json`. Specify your `license_id` and `proxy_api_prefix`. For the `proxy_api_prefix`, use at least 8 characters, avoid characters that can't be used in a URL and make sure it's unique.
Here's the `config.json` for your reference:
Here's the `config.json` for your reference:
```json
{
"bind": "0.0.0.0:8181",
"tls": {
```json
{
"bind": "0.0.0.0:8181",
"tls": {
"enabled": false,
"cert_file": "",
"key_file": ""
},
"timeout": 600,
"proxy_url": "",
"license_id": "",
"public_share": false,
"site_password": "",
"setup_password": "",
"server_tokens": true,
"proxy_api_prefix": "",
"isolated_conv_title": "*",
"captcha": {
},
"timeout": 600,
"proxy_url": "",
"license_id": "",
"public_share": false,
"site_password": "",
"setup_password": "",
"server_tokens": true,
"proxy_api_prefix": "",
"isolated_conv_title": "*",
"captcha": {
"provider": "",
"site_key": "",
"site_secret": "",
@ -56,25 +58,25 @@ For local deployment using Docker, the steps are as follows:
"setup_login": false,
"oai_username": false,
"oai_password": false
},
"whitelist": null
}
```
},
"whitelist": null
}
```
### 4. **Set Up the LibreChat `.env` Filer:**
In the `.env` file within your LibreChat directory, you'll need to set the `CHATGPT_REVERSE_PROXY` variable:
In the `.env` file within your LibreChat directory, you'll need to set the `CHATGPT_REVERSE_PROXY` variable:
```bash
CHATGPT_REVERSE_PROXY=http://host.docker.internal:8181/your_proxy_api_prefix_here/backend-api/conversation
```
- Replace `your_proxy_api_prefix_here` with the actual proxy API prefix.
```bash
CHATGPT_REVERSE_PROXY=http://host.docker.internal:8181/your_proxy_api_prefix_here/backend-api/conversation
```
- Replace `your_proxy_api_prefix_here` with the actual proxy API prefix.
### 5. **Start Docker Containers:**
From the PandoraNext directory, run the following command to launch the Docker containers:
From the PandoraNext directory, run the following command to launch the Docker containers:
```bash
docker-compose up -d
```
```bash
docker-compose up -d
```
---
@ -82,31 +84,32 @@ For local deployment using Docker, the steps are as follows:
To deploy PandoraNext online by duplicating the Hugging Face Space, follow these steps:
### 1. Get your PandoraNext license id here: [PandoraNext Dashboard](https://dash.pandoranext.com/)
### 1. Get your PandoraNext `License ID`
Visit the **[PandoraNext Dashboard](https://dash.pandoranext.com/)** to get your `license ID`
### 2. **Configure `config.json`:**
Edit the following `config.json`. Specify your `license_id` and `proxy_api_prefix`. For the `proxy_api_prefix`, use at least 8 characters, avoid characters that can't be used in a URL and make sure it's unique.
Edit the following `config.json`. Specify your `license_id` and `proxy_api_prefix`. For the `proxy_api_prefix`, use at least 8 characters, avoid characters that can't be used in a URL and make sure it's unique.
Here's the `config.json` for your reference:
Here's the `config.json` for your reference:
```json
{
"bind": "0.0.0.0:8181",
"tls": {
```json
{
"bind": "0.0.0.0:8181",
"tls": {
"enabled": false,
"cert_file": "",
"key_file": ""
},
"timeout": 600,
"proxy_url": "",
"license_id": "",
"public_share": false,
"site_password": "",
"setup_password": "",
"server_tokens": true,
"proxy_api_prefix": "",
"isolated_conv_title": "*",
"captcha": {
},
"timeout": 600,
"proxy_url": "",
"license_id": "",
"public_share": false,
"site_password": "",
"setup_password": "",
"server_tokens": true,
"proxy_api_prefix": "",
"isolated_conv_title": "*",
"captcha": {
"provider": "",
"site_key": "",
"site_secret": "",
@ -114,23 +117,23 @@ To deploy PandoraNext online by duplicating the Hugging Face Space, follow these
"setup_login": false,
"oai_username": false,
"oai_password": false
},
"whitelist": null
}
```
},
"whitelist": null
}
```
### 3. **Hugging Face Space:**
Visit the [PandoraNext LibreChat Space](https://huggingface.co/spaces/LibreChat/PandoraNext) on Hugging Face.
Visit the [PandoraNext LibreChat Space](https://huggingface.co/spaces/LibreChat/PandoraNext) on Hugging Face.
### 4. **Duplicate the Space:**
Utilize the available options to duplicate or fork the space into your own Hugging Face account.
Utilize the available options to duplicate or fork the space into your own Hugging Face account.
### 5. **Fill the required secrets**
When asked for the `SECRETS`,
- for `CONFIG_JSON` use the whole content of the `config.json` you just modified,
- for `TOKENS_JSON` use the following default `token.json`:
```json
{
When asked for the `SECRETS`,
- for `CONFIG_JSON` use the whole content of the `config.json` you just modified,
- for `TOKENS_JSON` use the following default `token.json`:
```json
{
"test-1": {
"token": "access token / session token / refresh token",
"shared": true,
@ -146,21 +149,21 @@ To deploy PandoraNext online by duplicating the Hugging Face Space, follow these
"token": "access token / session token / refresh token / share token",
"password": "12345"
}
}
```
}
```
### 6. **Configure LibreChat:**
In the .env file (or secrets settings if you host LibreChat on Hugging Face), set the `CHATGPT_REVERSE_PROXY` variable using the following format:
In the .env file (or secrets settings if you host LibreChat on Hugging Face), set the `CHATGPT_REVERSE_PROXY` variable using the following format:
```bash
CHATGPT_REVERSE_PROXY=http://your_server_domain.com/your_proxy_api_prefix_here/backend-api/conversation
```
```bash
CHATGPT_REVERSE_PROXY=http://your_server_domain.com/your_proxy_api_prefix_here/backend-api/conversation
```
- Replace `your_server_domain.com` with the domain of your deployed space.
- Replace `your_server_domain.com` with the domain of your deployed space.
- you can use this format: `https://username-pandoranext.hf.space` (replace `username` with your Huggingface username)
- Replace `your_proxy_api_prefix_here` with the `proxy_api_prefix` you have set in your `config.json`.
- The resulting URL should look similar to:
`https://username-pandoranext.hf.space/your_proxy_api_prefix_here/backend-api/conversation`
- Replace `your_proxy_api_prefix_here` with the `proxy_api_prefix` you have set in your `config.json`.
- The resulting URL should look similar to:
`https://username-pandoranext.hf.space/your_proxy_api_prefix_here/backend-api/conversation`
## Final Notes

View file

@ -1,5 +1,6 @@
---
title: ⚡ Azure AI Search
description: How to configure Azure AI Search for answers to your questions with assistance from GPT.
weight: -4
---
# Azure AI Search Plugin
@ -34,7 +35,7 @@ This is the authentication key to use when utilizing the search endpoint. Please
## Create or log in to your account on Azure Portal
**1.** Visit [https://azure.microsoft.com/en-us/](https://azure.microsoft.com/en-us/) and click on `Get started` or `Try Azure for Free` to create an account and sign in.
**1.** Visit **[https://azure.microsoft.com/en-us/](https://azure.microsoft.com/en-us/)** and click on `Get started` or `Try Azure for Free` to create an account and sign in.
**2.** Choose pay per use or Azure Free with $200.
@ -76,7 +77,7 @@ Now select the free option or select your preferred option (may incur charges).
![image](https://github.com/itzraiss/images/blob/main/Captura%20de%20tela%202023-11-26%20152107.png)
**2.** Follow the Microsoft tutorial.[https://learn.microsoft.com/en-us/azure/search/search-get-started-portal](https://learn.microsoft.com/en-us/azure/search/search-get-started-portal), after finishing, save the name given to the index somewhere.
**2.** Follow the Microsoft tutorial: **[https://learn.microsoft.com/en-us/azure/search/search-get-started-portal](https://learn.microsoft.com/en-us/azure/search/search-get-started-portal)**, after finishing, save the name given to the index somewhere.
**3.** Now you have your `AZURE_AI_SEARCH_INDEX_NAME`, copy and save it in a local safe place.
@ -117,7 +118,7 @@ The following are configuration values that are not required but can be specifie
If there are concerns that the search result data may be too large and exceed the prompt size, consider reducing the size of the search result data by using AZURE_AI_SEARCH_SEARCH_OPTION_TOP and AZURE_AI_SEARCH_SEARCH_OPTION_SELECT.
For details on each parameter, please refer to the following document:
https://learn.microsoft.com/en-us/rest/api/searchservice/search-documents
**[https://learn.microsoft.com/en-us/rest/api/searchservice/search-documents](https://learn.microsoft.com/en-us/rest/api/searchservice/search-documents)**
```env
AZURE_AI_SEARCH_API_VERSION=2023-10-01-Preview

View file

@ -1,16 +1,17 @@
---
title: 🧑‍💼 Official ChatGPT Plugins
description: How to add official OpenAI Plugins to LibreChat
weight: -8
---
# Using official ChatGPT Plugins / OpenAPI specs
ChatGPT plugins are API integrations for OpenAI models that extend their capabilities. They are structured around three key components: an API, an **OpenAPI specification** (spec for short), and a JSON **Plugin Manifest** file.
To learn more about them, or how to make your own, read here: [ChatGPT Plugins: Getting Started](https://platform.openai.com/docs/plugins/getting-started).
To learn more about them, or how to make your own, read here: **[ChatGPT Plugins: Getting Started](https://platform.openai.com/docs/plugins/getting-started)**
Thanks to the introduction of [OpenAI Functions](https://openai.com/blog/function-calling-and-other-api-updates) and their utilization in [Langchain](https://js.langchain.com/docs/modules/chains/openai_functions/openapi), it's now possible to directly use OpenAI Plugins through LibreChat, without building any custom langchain tools. The main use case we gain from integrating them to LibreChat is to allow use of plugins with gpt-3.5 models, and without ChatGPT Plus. They also find a great use case when you want to limit your own private API's interactions with chat.openai.com and their servers in favor of a self-hosted LibreChat instance.
Thanks to the introduction of **[OpenAI Functions](https://openai.com/blog/function-calling-and-other-api-updates)** and their utilization in **[Langchain](https://js.langchain.com/docs/modules/chains/openai_functions/openapi)**, it's now possible to directly use OpenAI Plugins through LibreChat, without building any custom langchain tools. The main use case we gain from integrating them to LibreChat is to allow use of plugins with gpt-3.5 models, and without ChatGPT Plus. They also find a great use case when you want to limit your own private API's interactions with chat.openai.com and their servers in favor of a self-hosted LibreChat instance.
### Table of Contents
<!-- ### Table of Contents
- [Using official ChatGPT Plugins / OpenAPI specs](#using-official-chatgpt-plugins--openapi-specs)
- [Table of Contents](#table-of-contents)
- [Intro](#intro)
@ -23,7 +24,7 @@ Thanks to the introduction of [OpenAI Functions](https://openai.com/blog/functio
- [Custom OpenAPI Spec files](#custom-openapi-spec-files)
- [Plugins with Authentication](#plugins-with-authentication)
- [Showcase](#showcase)
- [Disclaimers](#disclaimers)
- [Disclaimers](#disclaimers) -->
## Intro
@ -32,11 +33,11 @@ Before continuing, it's important to fully distinguish what a Manifest file is v
### **[Plugin Manifest File:](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest)**
- Usually hosted on the APIs domain as `https://example.com/.well-known/ai-plugin.json`
- The manifest file is required for LLMs to connect with your plugin. If there is no file found, the plugin cannot be installed.
- Has required properties, and will error if they are missing. Check what they are in the [OpenAI Docs](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest)
- Has required properties, and will error if they are missing. Check what they are in the **[OpenAI Docs](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest)**
- Has optional properties, specific to LibreChat, that will enable them to work consistently, or for customizing headers/params made by every API call (see below)
### **[OpenAPI Spec](https://platform.openai.com/docs/plugins/getting-started/openapi-definition)**
- The OpenAPI specification is used to document the API that the plugin will interact with. It is a [universal format](https://www.openapis.org/) meant to standardize API definitions.
- The OpenAPI specification is used to document the API that the plugin will interact with. It is a **[universal format](https://www.openapis.org/)** meant to standardize API definitions.
- Referenced by the Manifest file in its `api.url` property
- Usually as `https://example.com/openapi.yaml` or `.../swagger.yaml`
- Can be a .yaml or .json file
@ -53,7 +54,7 @@ Download the Plugin manifest file, or copy the raw JSON data into a new file, an
`api\app\clients\tools\.well-known`
You should see multiple manifest files that have been tested, or edited, to work with LibreChat. ~~I've renamed them by their `name_for_model` property and it's recommended, but not required, that you do the same.~~ As of v0.5.8, It's **required** to name the manifest JSON file after its `name_for_model` property should you add one yourself.
You should see multiple manifest files that have been tested, or edited, to work with LibreChat. As of v0.5.8, It's **required** to name the manifest JSON file after its `name_for_model` property should you add one yourself.
After doing so, start/re-start the project server and they should now load in the Plugin store.
@ -152,7 +153,7 @@ curl -H "Authorization: Bearer ffc5226d1af346c08a98dee7deec9f76" https://example
As of now, LibreChat only supports plugins using Bearer Authentication, like in the example above.
If your plugin requires authentication, it's necessary to have these fields filled in your manifest file according to [OpenAI definitions](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest), which for Bearer Authentication must follow the schema above.
If your plugin requires authentication, it's necessary to have these fields filled in your manifest file according to **[OpenAI definitions](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest)**, which for Bearer Authentication must follow the schema above.
Important: Some ChatGPT plugins may use Bearer Auth., but have either stale verification tokens in their manifest, or only support calls from OpenAI servers. Web Pilot is one with the latter case, and thankfully it has a required header field for allowing non-OpenAI origination. See above for editing headers.
@ -168,16 +169,16 @@ Important: Some ChatGPT plugins may use Bearer Auth., but have either stale veri
## Disclaimers
Use of ChatGPT Plugins is only possible with official OpenAI models and their use of [Functions](https://platform.openai.com/docs/api-reference/chat/create#chat/create-functions). If you are accessing OpenAI models via reverse proxy through some 3rd party service, function calling may not be supported.
Use of ChatGPT Plugins is only possible with official OpenAI models and their use of **[Functions](https://platform.openai.com/docs/api-reference/chat/create#chat/create-functions)**. If you are accessing OpenAI models via reverse proxy through some 3rd party service, function calling may not be supported.
This implementation depends on the [LangChain OpenAPI Chain](https://js.langchain.com/docs/modules/chains/openai_functions/openapi) and general improvements to its use here will have to be made to the LangChainJS library.
This implementation depends on the **[LangChain OpenAPI Chain](https://js.langchain.com/docs/modules/chains/openai_functions/openapi)** and general improvements to its use here will have to be made to the LangChainJS library.
Custom Langchain Tools are preferred over ChatGPT Plugins/OpenAPI specs as this can be more token-efficient, especially with OpenAI Functions. A better alternative may be to make a Langchain tool modelled after an OpenAPI spec, for which I'll make a guide soon.
LibreChat's implementation is not 1:1 with ChatGPT's, as OpenAI has a robust, exclusive, and restricted authentication pipeline with its models & specific plugins, which are not as limited by context windows and token usage. Furthermore, some of their hosted plugins requiring authentication will not work, especially those with OAuth or stale verification tokens, and some may not be handled by the LLM in the same manner, especially those requiring multi-step API calls.
Some plugins may detect that the API call does not originate from OpenAI's servers, will either be defunct outside of chat.openai.com or need special handling, and/or editing of their manifest/spec files. This is not to say plugin use will not improve and more closely mirror how ChatGPT handles plugins, but there is still work to this end. In short, some will work perfectly while others may not work at all.
Some plugins may detect that the API call does not originate from OpenAI's servers, will either be defunct outside of **[chat.openai.com](https://chat.openai.com/)** or need special handling, and/or editing of their manifest/spec files. This is not to say plugin use will not improve and more closely mirror how ChatGPT handles plugins, but there is still work to this end. In short, some will work perfectly while others may not work at all.
The use of ChatGPT Plugins with LibreChat does not violate OpenAI's [Terms of Service](https://openai.com/policies/terms-of-use). According to their [Service Terms](https://openai.com/policies/service-terms) and [Usage Policies](https://openai.com/policies/usage-policies), the host, in this case OpenAI, is not responsible for the plugins hosted on their site and their usage outside of their platform, chat.openai.com. Furthermore, there is no explicit mention of restrictions on accessing data that is not directly displayed to the user. Therefore, accessing the payload of their plugins for display purposes is not in violation of their Terms of Service.
The use of ChatGPT Plugins with LibreChat does not violate OpenAI's **[Terms of Service](https://openai.com/policies/terms-of-use)**. According to their **[Service Terms](https://openai.com/policies/service-terms)** and **[Usage Policies](https://openai.com/policies/usage-policies)**, the host, in this case OpenAI, is not responsible for the plugins hosted on their site and their usage outside of their platform, **[chat.openai.com](https://chat.openai.com/)**. Furthermore, there is no explicit mention of restrictions on accessing data that is not directly displayed to the user. Therefore, accessing the payload of their plugins for display purposes is not in violation of their Terms of Service.
Please note that the ChatGPT Plugins integration is currently in an alpha state, and you may encounter errors. Although preliminary testing has been conducted, not all plugins have been thoroughly tested, and you may find that some I haven't added will not work for any one of the reasons I've mentioned above. Some of the errors may be caused by the plugin itself, and will also not work on https://chat.openai.com/. If you encounter any errors, double checking if they work on the official site is advisable before reporting them as a GitHub issue. I can only speak for the ones I tested and included, and the date of inclusion.
Please note that the ChatGPT Plugins integration is currently in an alpha state, and you may encounter errors. Although preliminary testing has been conducted, not all plugins have been thoroughly tested, and you may find that some I haven't added will not work for any one of the reasons I've mentioned above. Some of the errors may be caused by the plugin itself, and will also not work on **[chat.openai.com](https://chat.openai.com/)**. If you encounter any errors, double checking if they work on the official site is advisable before reporting them as a GitHub issue. I can only speak for the ones I tested and included, and the date of inclusion.

View file

@ -1,5 +1,6 @@
---
title: 🔎 Google Search
description: How to set up and use the Google Search Plugin, which allows you to query Google with GPT's help.
weight: -7
---
@ -10,9 +11,9 @@ GOOGLE_API_KEY="...."
GOOGLE_CSE_ID="...."
```
You first need to create a programmable search engine and get the search engine ID: https://developers.google.com/custom-search/docs/tutorial/creatingcse
You first need to create a programmable search engine and get the search engine ID: **[https://developers.google.com/custom-search/docs/tutorial/creatingcse](https://developers.google.com/custom-search/docs/tutorial/creatingcse)**
Then you can get the API key, click the "Get a key" button on this page: https://developers.google.com/custom-search/v1/introduction
Then you can get the API key, click the "Get a key" button on this page: **[https://developers.google.com/custom-search/v1/introduction](https://developers.google.com/custom-search/v1/introduction)**
<!-- You can limit the max price that is charged for a single search request by setting `MAX_SEARCH_PRICE` in your `.env` file. -->

View file

@ -1,5 +1,6 @@
---
title: Plugins
description: 🔌 All about plugins, how to make them, how use the official ChatGPT plugins, and how to configure custom plugins.
weight: -10
---

View file

@ -1,5 +1,6 @@
---
title: 🔌 Introduction
description: This doc introduces the plugins endpoint, which enables you to use different LLMs and tools with more flexibility and control. You can change your settings and plugins on the fly, and use plugins to access various sources of information and assistance.
weight: -10
---
# Plugins Endpoint
@ -9,7 +10,7 @@ weight: -10
The plugins endpoint opens the door to prompting LLMs in new ways other than traditional input/output prompting.
The first step is using chain-of-thought prompting & ["agency"](https://zapier.com/blog/ai-agent/) for using plugins/tools in a fashion mimicing the official ChatGPT Plugins feature.
The first step is using chain-of-thought prompting & **["agency"](https://zapier.com/blog/ai-agent/)** for using plugins/tools in a fashion mimicing the official ChatGPT Plugins feature.
More than this, you can use this endpoint for changing your conversation settings mid-conversation. Unlike the official ChatGPT site and all other endpoints, you can switch models, presets, and settings mid-convo, even when you have no plugins selected. This is useful if you first want a creative response from GPT-4, and then a deterministic, lower cost response from GPT-3. Soon, you will be able to use Google, HuggingFace, local models, all in this or a similar endpoint in the same modular manner.
@ -52,8 +53,8 @@ Clicking on **"Show Agent Settings"** will allow you to modify parameters for th
- **[Stable Diffusion](./stable_diffusion.md)**
- **[Wolfram](./wolfram.md)**
- **DALL-E** - same setup as above, you just need an OpenAI key, and it's made distinct from your main API key to make Chats but it can be the same one
- **Zapier** - You need a Zapier account. Get your [API key from here](https://nla.zapier.com/credentials/) after you've made an account
- Create allowed actions - Follow step 3 in this [getting start guide](https://nla.zapier.com/start/) from Zapier
- **Zapier** - You need a Zapier account. Get your **[API key from here](https://nla.zapier.com/credentials/)** after you've made an account
- Create allowed actions - Follow step 3 in this **[Start Here guide](https://nla.zapier.com/start/)** from Zapier
- ⚠️ NOTE: zapier is known to be finicky with certain actions. I found that writing email drafts is probably the best use of it
- there are improvements that can be made to override the official NLA integration and that is TBD
- **Browser/Scraper** - This is not to be confused with 'browsing' on chat.openai.com (which is technically a plugin suite or multiple plugins)
@ -62,7 +63,7 @@ Clicking on **"Show Agent Settings"** will allow you to modify parameters for th
- A better solution for 'browsing' is planned but can't guarantuee when
- This plugin is best used in combination with google so it doesn't hallucinate webpages to visit
- **Serpapi** - an alternative to Google search but not as performant in my opinion
- You can get an API key here: https://serpapi.com/dashboard
- You can get an API key here: **[https://serpapi.com/dashboard](https://serpapi.com/dashboard)**
- For free tier, you are limited to 100 queries/month
- With google, you are limited to 100/day for free, which is a better deal, and any after may cost you a few pennies

View file

@ -1,5 +1,6 @@
---
title: 🛠️ Make Your Own
description: This doc shows you how to create custom plugins for LibreChat by extending the LangChain `Tool` class. You will learn how to use different APIs and functions with your plugins, and how to integrate them with the LangChain framework.
weight: -9
---
# Making your own Plugin
@ -8,11 +9,11 @@ Creating custom plugins for this project involves extending the `Tool` class fro
**Note:** I will use the word plugin interchangeably with tool, as the latter is specific to LangChain, and we are mainly conforming to the library.
You are essentially creating DynamicTools in LangChain speak. See the [LangChainJS docs](https://js.langchain.com/docs/modules/agents/tools/dynamic) for more info.
You are essentially creating DynamicTools in LangChain speak. See the **[LangChainJS docs](https://js.langchain.com/docs/modules/agents/tools/dynamic)** for more info.
This guide will walk you through the process of creating your own custom plugins, using the `StableDiffusionAPI` and `WolframAlphaAPI` tools as examples.
When using the Functions Agent (the default mode for plugins), tools are converted to [OpenAI functions](https://openai.com/blog/function-calling-and-other-api-updates); in any case, plugins/tools are invoked conditionally based on the LLM generating a specific format that we parse.
When using the Functions Agent (the default mode for plugins), tools are converted to **[OpenAI functions](https://openai.com/blog/function-calling-and-other-api-updates)**; in any case, plugins/tools are invoked conditionally based on the LLM generating a specific format that we parse.
The most common implementation of a plugin is to make an API call based on the natural language input from the AI, but there is virtually no limit in programmatic use case.
@ -47,7 +48,7 @@ Remember, the key to creating a custom plugin is to extend the `Tool` class and
**Multi-Input Plugins**
If you would like to make a plugin that would benefit from multiple inputs from the LLM, instead of a singular input string as we will review, you need to make a LangChain [StructuredTool](https://blog.langchain.dev/structured-tools/) instead. A detailed guide for this is in progress, but for now, you can look at how I've made StructuredTools in this directory: `api\app\clients\tools\structured\`. This guide is foundational to understanding StructuredTools, and it's recommended you continue reading to better understand LangChain tools first. The blog linked above is also helpful once you've read through this guide.
If you would like to make a plugin that would benefit from multiple inputs from the LLM, instead of a singular input string as we will review, you need to make a LangChain **[StructuredTool](https://blog.langchain.dev/structured-tools/)** instead. A detailed guide for this is in progress, but for now, you can look at how I've made StructuredTools in this directory: `api\app\clients\tools\structured\`. This guide is foundational to understanding StructuredTools, and it's recommended you continue reading to better understand LangChain tools first. The blog linked above is also helpful once you've read through this guide.
---
@ -131,7 +132,7 @@ class StableDiffusionAPI extends Tool {
The `_call` method is where the main functionality of your plugin is implemented. This method is called when the language model decides to use your plugin. It should take an `input` parameter and return a result.
> In a basic Tool, the LLM will generate one string value as an input. If your plugin requires multiple inputs from the LLM, read the [StructuredTools](#StructuredTools) section.
> In a basic Tool, the LLM will generate one string value as an input. If your plugin requires multiple inputs from the LLM, read the **[StructuredTools](#StructuredTools)** section.
```javascript
class StableDiffusionAPI extends Tool {

View file

@ -1,17 +1,18 @@
---
title: 🖌️ Stable Diffusion
description: How to set up and configure the Stable Diffusion plugin
weight: -6
---
# Stable Diffusion Plugin
To use Stable Diffusion with this project, you will either need to download and install [stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) or, for a dockerized deployment, you can also use [stable-diffusion-webui-docker](https://github.com/AbdBarho/stable-diffusion-webui-docker)
To use Stable Diffusion with this project, you will either need to download and install **[AUTOMATIC1111 - Stable Diffusion WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui)** or, for a dockerized deployment, you can also use **[stable-diffusion-webui-docker](https://github.com/AbdBarho/stable-diffusion-webui-docker)**
With the docker deployment you can skip step 2 and step 3, use the setup instructions from their repository instead.
- Note: you need a compatible GPU ("CPU-only" is possible but very slow). Nvidia is recommended, but there is no clear resource on incompatible GPUs. Any decent GPU should work.
## 1. Follow download and installation instructions from [stable-diffusion-webui readme](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
## 1. Follow download and installation instructions from **[stable-diffusion-webui readme](https://github.com/AUTOMATIC1111/stable-diffusion-webui)**
## 2. Edit your run script settings

View file

@ -1,5 +1,6 @@
---
title: 🧠 Wolfram|Alpha
description: How to set up and configure the Wolfram Alpha plugin
weight: -5
---
@ -9,18 +10,23 @@ An AppID must be supplied in all calls to the Wolfram|Alpha API.
- Note: Wolfram API calls are limited to 100 calls/day and 2000/month for regular users.
## 1. Make an account at <a href='http://products.wolframalpha.com/api/'>Wolfram|Alpha</a>
## 2. Go to the <a href='https://developer.wolframalpha.com/portal/myapps/'>Developer Portal</a> click on "Get an AppID".
## 3. Configure it in LibreChat
### Select the plugins endpoint
### Make an account
- Visit: **[products.wolframalpha.com/api/](https://products.wolframalpha.com/api/)** to create your account
### Get your AppID
- Go to the **[Developer Portal](https://developer.wolframalpha.com/portal/myapps/)** click on `Get an AppID`.
### Configure it in LibreChat
- Select the plugins endpoint
![plugins_endpoint](https://github.com/danny-avila/LibreChat/assets/32828263/7db788a5-2173-4115-b34b-43ea132dae69)
### Open the Plugin store
- Open the Plugin store
![plugin_store](https://github.com/danny-avila/LibreChat/assets/32828263/12a51feb-c030-4cf0-8429-16360270988d)
### Install Wolfram and Provide your AppID
- Install Wolfram and Provide your AppID
![wolfram-1](https://github.com/danny-avila/LibreChat/assets/32828263/bd165497-d529-441d-8372-a68db19adc3f)
- Alternatively: you (the admin) can set the value in `\.env` to bypass the prompt: `WOLFRAM_APP_ID=your_app_id`
> Alternatively: you (the admin) can set the value in `\.env` to bypass the prompt: `WOLFRAM_APP_ID=your_app_id`
## 5. Select the plugin and enjoy!
### Select the plugin and enjoy!
![wolfram-2](https://github.com/danny-avila/LibreChat/assets/32828263/2825e961-6c46-4728-96cd-1012a0862943)

View file

@ -1,5 +1,6 @@
---
title: 🔖 Presets
description: The "presets" feature in our app is a powerful tool that allows users to save and load predefined settings for their conversations. Users can import and export these presets as JSON files, set a default preset, and share them with others on Discord.
weight: -9
---
# Guide to Using the "Presets" Feature

View file

@ -1,5 +1,6 @@
---
title: ✨ Third-Party Tools and Contributions
description: Collection of third-party tools provided by the community
weight: -2
---

View file

@ -1,5 +1,6 @@
---
title: 🪙 Token Usage
description: This doc covers how to track and control your token usage for the OpenAI/Plugins endpoints in LibreChat. You will learn how to view your transactions, enable user balances, and add credits to your account.
weight: -7
---
# Token Usage

View file

@ -1,5 +1,6 @@
---
title: ⚠️ Breaking Changes
description: This doc lists the breaking changes that affect the functionality and compatibility of LibreChat. You should read this doc before updating to a new version of LibreChat, and follow the instructions to resolve any issues.
weight: -10
---
# ⚠️ Breaking Changes

View file

@ -1,5 +1,6 @@
---
title: General Information
description: 📜 This section contains information about LibreChat, such as its history, purpose, and values. You will also find the details of the tech stack, the code of conduct, and the breaking changes that affect the project.
weight: 4
---

View file

@ -1,5 +1,6 @@
---
title: 🌍 Multilingual Information
description: To set up the project, please follow the instructions in the documentation. The documentation is in English only, so you may need to use a translation tool or an AI assistant (e.g. ChatGPT) if you have difficulty understanding it.
weight: -9
---
# Multilingual Information

View file

@ -1,5 +1,6 @@
---
title: 🧭 Origin
description: How it all started...
weight: -8
---
# Origin

View file

@ -1,5 +1,6 @@
---
title: 🧑‍💻 Tech Stack
description: This doc describes the technologies and frameworks that LibreChat uses.
weight: -8
---
# Tech Stack

View file

@ -1,3 +1,9 @@
---
title: Home
description: 🪶 Introducing LibreChat
weight: -10
---
<p align="center">
<a href="https://discord.gg/NGaa9RPCft">
<img src="assets/LibreChat.svg" style="margin-left: 40px; height: 256px; width: 256px;>

View file

@ -1,5 +1,6 @@
---
title: 🤖 AI Setup
description: This doc explains how to setup your AI providers, their APIs and credentials.
weight: -8
---
@ -43,7 +44,7 @@ This doc explains how to setup your AI providers, their APIs and credentials.
For example, OpenAI, Google, Plugins, Azure OpenAI, Anthropic, are all different "endpoints". Since OpenAI was the first supported endpoint, it's listed first by default.
Using the default environment values from `.env.example` will enable several endpoints, with credentials to be provided on a per-user basis from the web app. Alternatively, you can provide credentials for all users of your instance.
Using the default environment values from [/.env.example](https://github.com/danny-avila/LibreChat/blob/main/.env.example) will enable several endpoints, with credentials to be provided on a per-user basis from the web app. Alternatively, you can provide credentials for all users of your instance.
This guide will walk you through setting up each Endpoint as needed.
@ -70,14 +71,13 @@ Note that LibreChat will use your last selected endpoint when creating a new con
To override this behavior, you need a preset and you need to set that specific preset as the default one to use on every new chat.
### Setting a Default Preset
See the **[Presets Guide](../../features/presets.md)** for more details
A preset refers to a specific Endpoint/Model/Conversation Settings that you can save.
The default preset will always be used when creating a new conversation.
Here's a video to demonstrate:
https://github.com/danny-avila/LibreChat/assets/110412045/bbde830f-18d9-4884-88e5-1bd8f7ac585d
Here's a video to demonstrate: **[Setting a Default Preset](https://github.com/danny-avila/LibreChat/assets/110412045/bbde830f-18d9-4884-88e5-1bd8f7ac585d)**
---
@ -85,7 +85,7 @@ https://github.com/danny-avila/LibreChat/assets/110412045/bbde830f-18d9-4884-88e
To get your OpenAI API key, you need to:
- Go to [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys)
- Go to **[https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys)**
- Create an account or log in with your existing one
- Add a payment method to your account (this is not free, sorry 😬)
- Copy your secret key (sk-...) and save it in ./.env as OPENAI_API_KEY
@ -98,8 +98,8 @@ Notes:
## Anthropic
- Create an account at [https://console.anthropic.com/](https://console.anthropic.com/)
- Go to [https://console.anthropic.com/account/keys](https://console.anthropic.com/account/keys) and get your api key
- Create an account at **[https://console.anthropic.com/](https://console.anthropic.com/)**
- Go to **[https://console.anthropic.com/account/keys](https://console.anthropic.com/account/keys)** and get your api key
- add it to `ANTHROPIC_API_KEY=` in the `.env` file
---
@ -123,7 +123,7 @@ Instructions for both are given below.
To use Gemini models, you'll need an API key. If you don't already have one, create a key in Google AI Studio.
<p><a class="button button-primary" href="https://makersuite.google.com/app/apikey" target="_blank" rel="noopener noreferrer">Get an API key here</a></p>
Get an API key here: **[makersuite.google.com](https://makersuite.google.com/app/apikey)**
Once you have your key, provide the key in your .env file, which allows all users of your instance to use it.
@ -147,13 +147,13 @@ Setting `GOOGLE_KEY=user_provided` in your .env file will configure both the Ver
### Vertex AI (PaLM 2 & Codey)
To setup Google LLMs (via Google Cloud Vertex AI), first, signup for Google Cloud: https://cloud.google.com/
To setup Google LLMs (via Google Cloud Vertex AI), first, signup for Google Cloud: **[cloud.google.com](https://cloud.google.com/)**
You can usually get **$300 starting credit**, which makes this option free for 90 days.
### 1. Once signed up, Enable the Vertex AI API on Google Cloud:
- Go to [Vertex AI page on Google Cloud console](https://console.cloud.google.com/vertex-ai)
- Click on "Enable API" if prompted
- Go to **[Vertex AI page on Google Cloud console](https://console.cloud.google.com/vertex-ai)**
- Click on `Enable API` if prompted
### 2. Create a Service Account with Vertex AI role:
- **[Click here to create a Service Account](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create?walkthrough_id=iam--create-service-account#step_index=1)**
- **Select or create a project**
@ -214,11 +214,11 @@ You should also consider changing the `AZURE_OPENAI_MODELS` variable to the mode
AZURE_OPENAI_MODELS=gpt-4-1106-preview,gpt-4,gpt-3.5-turbo,gpt-3.5-turbo-1106,gpt-4-vision-preview
```
Overriding the construction of the API URL will be possible but is not yet implemented. Follow progress on this feature here: [Issue #1266](https://github.com/danny-avila/LibreChat/issues/1266)
Overriding the construction of the API URL will be possible but is not yet implemented. Follow progress on this feature here: **[Issue #1266](https://github.com/danny-avila/LibreChat/issues/1266)**
### Model Deployments
*Note: a change will be developed to improve current configuration settings, to allow multiple deployments/model configurations setup with ease: [#1390](https://github.com/danny-avila/LibreChat/issues/1390)*
> Note: a change will be developed to improve current configuration settings, to allow multiple deployments/model configurations setup with ease: **[#1390](https://github.com/danny-avila/LibreChat/issues/1390)**
As of 2023-12-18, the Azure API allows only one model per deployment.
@ -297,7 +297,7 @@ As of December 18th, 2023, Vision models seem to have degraded performance with
![image](https://github.com/danny-avila/LibreChat/assets/110412045/7306185f-c32c-4483-9167-af514cc1c2dd)
*Note: a change will be developed to improve current configuration settings, to allow multiple deployments/model configurations setup with ease: [#1390](https://github.com/danny-avila/LibreChat/issues/1390)*
> Note: a change will be developed to improve current configuration settings, to allow multiple deployments/model configurations setup with ease: **[#1390](https://github.com/danny-avila/LibreChat/issues/1390)**
### Optional Variables
@ -310,7 +310,7 @@ These two variables are optional but may be used in future updates of this proje
### Using Plugins with Azure
Note: To use the Plugins endpoint with Azure OpenAI, you need a deployment supporting [function calling](https://techcommunity.microsoft.com/t5/azure-ai-services-blog/function-calling-is-now-available-in-azure-openai-service/ba-p/3879241). Otherwise, you need to set "Functions" off in the Agent settings. When you are not using "functions" mode, it's recommend to have "skip completion" off as well, which is a review step of what the agent generated.
Note: To use the Plugins endpoint with Azure OpenAI, you need a deployment supporting **[function calling](https://techcommunity.microsoft.com/t5/azure-ai-services-blog/function-calling-is-now-available-in-azure-openai-service/ba-p/3879241)**. Otherwise, you need to set "Functions" off in the Agent settings. When you are not using "functions" mode, it's recommend to have "skip completion" off as well, which is a review step of what the agent generated.
To use Azure with the Plugins endpoint, make sure the following environment variables are set:
@ -321,19 +321,19 @@ To use Azure with the Plugins endpoint, make sure the following environment vari
## [OpenRouter](https://openrouter.ai/)
[OpenRouter](https://openrouter.ai/) is a legitimate proxy service to a multitude of LLMs, both closed and open source, including:
**[OpenRouter](https://openrouter.ai/)** is a legitimate proxy service to a multitude of LLMs, both closed and open source, including:
- OpenAI models (great if you are barred from their API for whatever reason)
- Anthropic Claude models (same as above)
- Meta's Llama models
- pygmalionai/mythalion-13b
- and many more open source models. Newer integrations are usually discounted, too!
> See their available models and pricing here: [Supported Models](https://openrouter.ai/docs#models)
> See their available models and pricing here: **[Supported Models](https://openrouter.ai/docs#models)**
OpenRouter is so great, I decided to integrate it to the project as a standalone feature.
**Setup:**
- Signup to [OpenRouter](https://openrouter.ai/) and create a key. You should name it and set a limit as well.
- Signup to **[OpenRouter](https://openrouter.ai/)** and create a key. You should name it and set a limit as well.
- Set the environment variable `OPENROUTER_API_KEY` in your .env file to the key you just created.
- Set something in the `OPENAI_API_KEY`, it can be anyting, but **do not** leave it blank or set to `user_provided`
- Restart your LibreChat server and use the OpenAI or Plugins endpoints.
@ -364,12 +364,12 @@ This is not to be confused with [OpenAI's Official API](#openai)!
To get your Access token for ChatGPT Browser Access, you need to:
- Go to [https://chat.openai.com](https://chat.openai.com)
- Go to **[https://chat.openai.com](https://chat.openai.com)**
- Create an account or log in with your existing one
- Visit [https://chat.openai.com/api/auth/session](https://chat.openai.com/api/auth/session)
- Visit **[https://chat.openai.com/api/auth/session](https://chat.openai.com/api/auth/session)**
- Copy the value of the "accessToken" field and save it in ./.env as CHATGPT_ACCESS_TOKEN
Warning: There may be a chance of your account being banned if you deploy the app to multiple users with this method. Use at your own risk. 😱
Warning: There may be a chance of your account being banned if you deploy the app to multiple users with this method. Use at your own risk.
---

View file

@ -1,5 +1,6 @@
---
title: 🌍 Default Language
description: How to change LibreChat's default language
weight: -3
---

View file

@ -1,5 +1,6 @@
---
title: 🐋 Docker Compose Override
description: "How to Use the Docker Compose Override File: In Docker Compose, an override file is a powerful feature that allows you to modify the default configuration provided by the main `docker-compose.yml` without the need to directly edit or duplicate the whole file."
weight: -9
---

View file

@ -1,5 +1,6 @@
---
title: ⚙️ Environment Variables
description: Comprehensive guide for configuring your application's environment with the `.env` file. This document is your one-stop resource for understanding and customizing the environment variables that will shape your application's behavior in different contexts.
weight: -10
---
@ -98,10 +99,10 @@ NO_INDEX=true
LibreChat has built-in central logging, see [Logging System](../../features/logging_system.md) for more info.
- Debug logging is enabled by default and crucial for development.
- To report issues, reproduce the error and submit logs from `./api/logs/debug-%DATE%.log` at [LibreChat GitHub Issues](https://github.com/danny-avila/LibreChat/issues).
- To report issues, reproduce the error and submit logs from `./api/logs/debug-%DATE%.log` at: **[LibreChat GitHub Issues](https://github.com/danny-avila/LibreChat/issues)**
- Error logs are stored in the same location.
- Keep debug logs active by default or disable them by setting `DEBUG_LOGGING=false` in the environment variable.
- For more information about this feature, read our docs: https://docs.librechat.ai/features/logging_system.html
- For more information about this feature, read our docs: **[Logging System](../../features/logging_system.md)**
```bash
DEBUG_LOGGING=true
@ -197,13 +198,13 @@ PLUGINS_USE_AZURE="true"
### BingAI
Bing, also used for Sydney, jailbreak, and Bing Image Creator, see: [Bing Access token](./ai_setup.md#bingai) and [Bing Jailbreak](../../features/bing_jailbreak.md)
- Follow these instructions to get your bing access token (it's best to use the full cookie string for that purpose): [Bing Access Token](https://github.com/danny-avila/LibreChat/issues/370#issuecomment-1560382302)
- Follow these instructions to get your bing access token (it's best to use the full cookie string for that purpose): **[Bing Access Token](../configuration/ai_setup.md#bingai)**
- Leave `BINGAI_TOKEN=` blank to disable this endpoint
- Set `BINGAI_TOKEN=` to "user_provided" to allow users to provide their own API key from the WebUI
> Note: It is recommended to leave it as "user_provided" and provide the token from the WebUI.
- `BINGAI_HOST` can be necessary for some people in different countries, e.g. China (https://cn.bing.com). Leave it blank or commented out to use default server.
- `BINGAI_HOST` can be necessary for some people in different countries, e.g. China (`https://cn.bing.com`). Leave it blank or commented out to use default server.
```bash
BINGAI_TOKEN=user_provided
@ -211,7 +212,7 @@ BINGAI_HOST=
```
### ChatGPT
see: [ChatGPT Free Access token](./ai_setup.md#chatgptbrowser)
see: [ChatGPT Free Access token](../configuration/ai_setup.md#chatgptbrowser)
> **Warning**: To use this endpoint you'll have to set up your own reverse proxy. Here is the installation guide to deploy your own (based on [PandoraNext](https://github.com/pandora-next/deploy)): **[PandoraNext Deployment Guide](../../features/pandoranext.md)**
@ -219,8 +220,9 @@ see: [ChatGPT Free Access token](./ai_setup.md#chatgptbrowser)
CHATGPT_REVERSE_PROXY=<YOUR-REVERSE-PROXY>
```
> ~~Note: If you're a GPT plus user you can add gpt-4, gpt-4-plugins, gpt-4-code-interpreter, and gpt-4-browsing to the list above and use the models for these features; however, the view/display portion of these features are not supported, but you can use the underlying models, which have higher token context~~
> **Note:** The current method only works with `text-davinci-002-render-sha`
> **Note:** If you're a GPT plus user you can try adding `gpt-4`, `gpt-4-plugins`, `gpt-4-code-interpreter`, and `gpt-4-browsing` to the list above and use the models for these features; **however, the view/display portion of these features are not supported**, but you can use the underlying models, which have higher token context
> This method **might only works** with `text-davinci-002-render-sha` and **might stop working** at any moment.
- Leave `CHATGPT_TOKEN=` blank to disable this endpoint
- Set `CHATGPT_TOKEN=` to "user_provided" to allow users to provide their own API key from the WebUI
@ -348,7 +350,7 @@ DEBUG_PLUGINS=true
```
- For securely storing credentials, you need a fixed key and IV. You can set them here for prod and dev environments.
- You need a 32-byte key (64 characters in hex) and 16-byte IV (32 characters in hex) You can use this replit to generate some quickly: [Key Generator](https://replit.com/@daavila/crypto#index.js)
- You need a 32-byte key (64 characters in hex) and 16-byte IV (32 characters in hex) You can use this replit to generate some quickly: **[Key Generator](https://replit.com/@daavila/crypto#index.js)**
> Warning: If you don't set them, the app will crash on startup.
@ -379,7 +381,7 @@ AZURE_AI_SEARCH_SEARCH_OPTION_SELECT=
```
- For customization of the DALL-E-3 System prompt, uncomment the following, and provide your own prompt. **(Advanced)**
- See official prompt for reference: [DALL-E System Prompt](https://github.com/spdustin/ChatGPT-AutoExpert/blob/main/_system-prompts/dall-e.md)
- See official prompt for reference: **[DALL-E System Prompt](https://github.com/spdustin/ChatGPT-AutoExpert/blob/main/_system-prompts/dall-e.md)**
```bash
DALLE3_SYSTEM_PROMPT="Your System Prompt here"
@ -418,23 +420,23 @@ SERPAPI_API_KEY=
```
#### Stable Diffusion (Automatic1111)
See detailed instructions here: [Stable Diffusion](../../features/plugins/stable_diffusion.md)
See detailed instructions here: **[Stable Diffusion](../../features/plugins/stable_diffusion.md)**
- Use "http://127.0.0.1:7860" with local install and "http://host.docker.internal:7860" for docker
- Use `http://127.0.0.1:7860` with local install and `http://host.docker.internal:7860` for docker
```bash
SD_WEBUI_URL=http://host.docker.internal:7860
```
#### WolframAlpha
See detailed instructions here: [Wolfram Alpha](../../features/plugins/wolfram.md)
See detailed instructions here: **[Wolfram Alpha](../../features/plugins/wolfram.md)**
```bash
WOLFRAM_APP_ID=
```
#### Zapier
- You need a Zapier account. Get your API key from here: [Zapier](https://nla.zapier.com/credentials/)
- You need a Zapier account. Get your API key from here: **[Zapier](https://nla.zapier.com/credentials/)**
- Create allowed actions - Follow step 3 in this getting start guide from Zapier
> Note: zapier is known to be finicky with certain actions. Writing email drafts is probably the best use of it.
@ -488,7 +490,7 @@ This section contains the configuration for:
### Moderation
The Automated Moderation System uses a scoring mechanism to track user violations. As users commit actions like excessive logins, registrations, or messaging, they accumulate violation scores. Upon reaching a set threshold, the user and their IP are temporarily banned. This system ensures platform security by monitoring and penalizing rapid or suspicious activities.
see: [Automated Moderation](../../features/mod_system.md)
see: **[Automated Moderation](../../features/mod_system.md)**
#### Basic Moderation Settings
@ -575,7 +577,7 @@ MESSAGE_USER_WINDOW=1
### Balance
The following enables user balances for the OpenAI/Plugins endpoints, which you can add manually or you will need to build out a balance accruing system for users.
see: [Token Usage](../../features/token_usage.md)
see: **[Token Usage](../../features/token_usage.md)**
- To manually add balances, run the following command:`npm run add-balance`
- You can also specify the email and token credit amount to add, e.g.:`npm run add-balance example@example.com 1000`
@ -589,7 +591,7 @@ CHECK_BALANCE=false
```
### Registration and Login
see: [User/Auth System](../configuration/user_auth_system.md)
see: **[User/Auth System](../configuration/user_auth_system.md)**
![image](https://github.com/danny-avila/LibreChat/assets/81851188/52a37d1d-7392-4a9a-a79f-90ed2da7f841)
@ -609,7 +611,7 @@ ALLOW_SOCIAL_REGISTRATION=false
```
- Default values: session expiry: 15 minutes, refresh token expiry: 7 days
- For more information: [Refresh Token](https://github.com/danny-avila/LibreChat/pull/927)
- For more information: **[Refresh Token](https://github.com/danny-avila/LibreChat/pull/927)**
```bash
SESSION_EXPIRY=1000 * 60 * 15
@ -617,7 +619,7 @@ REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
```
- You should use new secure values. The examples given are 32-byte keys (64 characters in hex).
- Use this replit to generate some quickly: [JWT Keys](https://replit.com/@daavila/crypto#index.js)
- Use this replit to generate some quickly: **[JWT Keys](https://replit.com/@daavila/crypto#index.js)**
```bash
JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
@ -626,9 +628,9 @@ JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8
### Social Logins
#### [Discord](../configuration/user_auth_system.md#discord-authentication)
#### [Discord Authentication](../configuration/user_auth_system.md#discord)
for more information: [Discord](../configuration/user_auth_system.md#discord-authentication)
for more information: **[Discord](../configuration/user_auth_system.md#discord)**
```bash
# Discord
@ -637,9 +639,9 @@ DISCORD_CLIENT_SECRET=your_client_secret
DISCORD_CALLBACK_URL=/oauth/discord/callback
```
#### [Facebook](../configuration/user_auth_system.md#facebook-authentication)
#### [Facebook Authentication](../configuration/user_auth_system.md#facebook)
for more information: [Facebook](../configuration/user_auth_system.md#facebook-authentication)
for more information: **[Facebook Authentication](../configuration/user_auth_system.md#facebook)**
```bash
# Facebook
@ -648,9 +650,9 @@ FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URL=/oauth/facebook/callback
```
#### [GitHub](../configuration/user_auth_system.md#github-authentication)
#### [GitHub Authentication](../configuration/user_auth_system.md#github)
for more information: [GitHub](../configuration/user_auth_system.md#github-authentication)
for more information: **[GitHub Authentication](../configuration/user_auth_system.md#github)**
```bash
# GitHub
@ -659,9 +661,9 @@ GITHUB_CLIENT_SECRET=your_client_secret
GITHUB_CALLBACK_URL=/oauth/github/callback
```
#### [Google](../configuration/user_auth_system.md#google-authentication)
#### [Google Authentication](../configuration/user_auth_system.md#google)
for more information: [Google](../configuration/user_auth_system.md#google-authentication)
for more information: **[Google Authentication](../configuration/user_auth_system.md#google)**
```bash
# Google
@ -670,9 +672,9 @@ GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URL=/oauth/google/callback
```
#### [OpenID](../configuration/user_auth_system.md#openid-authentication-with-azure-ad)
#### [OpenID Authentication](../configuration/user_auth_system.md#openid-with-aws-cognito)
for more information: [Azure OpenID](../configuration/user_auth_system.md#openid-authentication-with-azure-ad) or [AWS Cognito OpenID](../configuration/user_auth_system.md#openid-authentication-with-aws-cognito)
for more information: **[Azure OpenID Authentication](../configuration/user_auth_system.md#openid-with-azure-ad)** or **[AWS Cognito OpenID Authentication](../configuration/user_auth_system.md#openid-with-aws-cognito)**
```bash
# OpenID
@ -688,7 +690,7 @@ OPENID_IMAGE_URL=
```
### Email Password Reset
Email is used for password reset. See: [Email Password Reset](../configuration/user_auth_system.md#email-and-password-reset)
Email is used for password reset. See: **[Email Password Reset](../configuration/user_auth_system.md#email-and-password-reset)**
- Note that all either service or host, username and password and the From address must be set for email to work.
@ -698,7 +700,7 @@ Email is used for password reset. See: [Email Password Reset](../configuration/u
>
> Failing to set valid values here will result in LibreChat using the unsecured password reset!
See: [nodemailer well-known-services](https://community.nodemailer.com/2-0-0-beta/setup-smtp/well-known-services/)
See: **[nodemailer well-known-services](https://community.nodemailer.com/2-0-0-beta/setup-smtp/well-known-services/)**
```bash
EMAIL_SERVICE=

View file

@ -1,5 +1,6 @@
---
title: 💸 Free AI APIs
description: There are APIs offering free/free-trial access to AI APIs via reverse proxy...
weight: -6
---
@ -7,13 +8,13 @@ weight: -6
There are APIs offering free/free-trial access to AI APIs via reverse proxy.
Here is a well-maintained public list of [Free AI APIs](https://github.com/zukixa/cool-ai-stuff) that may or may not be compatible with LibreChat
Here is a well-maintained public list of **[Free AI APIs](https://github.com/zukixa/cool-ai-stuff)** that may or may not be compatible with LibreChat
> ⚠️ [OpenRouter](./ai_setup.md#openrouter) is in a category of its own, and is highly recommended over the "free" services below. NagaAI and other 'free' API proxies tend to have intermittent issues, data leaks, and/or problems with the guidelines of the platforms they advertise on. Use the below at your own risk.
> ⚠️ **[OpenRouter](./ai_setup.md#openrouter)** is in a category of its own, and is highly recommended over the "free" services below. NagaAI and other 'free' API proxies tend to have intermittent issues, data leaks, and/or problems with the guidelines of the platforms they advertise on. Use the below at your own risk.
### NagaAI
Since NagaAI works with LibreChat, and offers Llama2 along with OpenAI models, let's start with that one: [NagaAI](https://t.me/chimera_ai)
Since NagaAI works with LibreChat, and offers Llama2 along with OpenAI models, let's start with that one: **[NagaAI](https://t.me/chimera_ai)**
> ⚠️ Never trust 3rd parties. Use at your own risk of privacy loss. Your data may be used for AI training at best or for nefarious reasons at worst; this is true in all cases, even with official endpoints: never give an LLM sensitive/identifying information. If something is free, you are the product. If errors arise, they are more likely to be due to the 3rd party, and not this project, as I test the official endpoints first and foremost.

View file

@ -1,5 +1,6 @@
---
title: Configuration
description: ⚙️ This section provides detailed guides on how to configure LibreChat to suit your needs and preferences. You will learn how to set up various environment variables, customize your Docker settings, choose your AI models and APIs, enable user authentication, connect to online MongoDB, change the default language, and more.
weight: 2
---

View file

@ -1,16 +1,15 @@
---
title: 🚅 LiteLLM
description: Using LibreChat with LiteLLM Proxy
weight: -7
---
# Using LibreChat with LiteLLM Proxy
Use [LiteLLM Proxy](https://docs.litellm.ai/docs/simple_proxy) for:
Use **[LiteLLM Proxy](https://docs.litellm.ai/docs/simple_proxy)** for:
* Calling 100+ LLMs Huggingface/Bedrock/TogetherAI/etc. in the OpenAI ChatCompletions & Completions format
* Load balancing - between Multiple Models + Deployments of the same model LiteLLM proxy can handle 1k+ requests/second during load tests
* Authentication & Spend Tracking Virtual Keys
https://docs.litellm.ai/docs/simple_proxy
## Start LiteLLM Proxy Server
### Pip install litellm
```shell
@ -18,7 +17,7 @@ pip install litellm
```
### Create a config.yaml for litellm proxy
More information on LiteLLM configurations here: https://docs.litellm.ai/docs/simple_proxy#proxy-configs
More information on LiteLLM configurations here: **[docs.litellm.ai/docs/simple_proxy](https://docs.litellm.ai/docs/simple_proxy)**
```yaml
model_list:

View file

@ -1,5 +1,6 @@
---
title: 🌀 Miscellaneous
description: As LibreChat has varying use cases and environment possibilities, this page will host niche setup/configurations, as contributed by the community, that are not better delegated to any of the other guides.
weight: -2
author: danny-avila and jerkstorecaller
---
@ -8,8 +9,6 @@ As LibreChat has varying use cases and environment possibilities, this page will
# Using LibreChat behind a reverse proxy with Basic Authentication
Written by [@danny-avila](https://github.com/danny-avila) and [@jerkstorecaller](https://github.com/jerkstorecaller)
### Basic Authentication (Basic Auth)
Basic Authentication is a simple authentication scheme built into the HTTP protocol. When a client sends a request to a server, the server can respond with a `401 Unauthorized` status code, prompting the client to provide a username and password. This username and password are then sent with subsequent requests in the HTTP header, encoded in Base64 format.

View file

@ -1,12 +1,13 @@
---
title: 🍃 Online MongoDB
description: This guide teaches you how to set up an online MongoDB database for LibreChat using MongoDB Atlas, a cloud-based service. You will learn how to create an account, a project, and a cluster, as well as how to configure your database credentials, network access, and connection string.
weight: -4
---
# Set Up an Online MongoDB Database
## Create an account
- Open a new tab and go to [https://account.mongodb.com/account/register](https://account.mongodb.com/account/register) to create an account.
- Open a new tab and go to **[account.mongodb.com/account/register](https://account.mongodb.com/account/register)** to create an account.
## Create a project
- Once you have set up your account, create a new project and name it (the name can be anything):

View file

@ -1,5 +1,6 @@
---
title: 🛂 Authentication System
description: This guide explains how to use the user authentication system of LibreChat, which offers secure and easy email and social logins. You will learn how to set up sign up, log in, password reset, and more.
weight: -5
---
@ -42,7 +43,7 @@ ALLOW_SOCIAL_REGISTRATION=false
### Session Expiry and Refresh Token
- Default values: session expiry: 15 minutes, refresh token expiry: 7 days
- For more information: [Refresh Token](https://github.com/danny-avila/LibreChat/pull/927)
- For more information: **[GitHub PR #927 - Refresh Token](https://github.com/danny-avila/LibreChat/pull/927)**
```bash
SESSION_EXPIRY=1000 * 60 * 15
@ -76,7 +77,7 @@ sequenceDiagram
### JWT Secret and Refresh Secret
- You should use new secure values. The examples given are 32-byte keys (64 characters in hex).
- Use this replit to generate some quickly: [JWT Keys](https://replit.com/@daavila/crypto#index.js)
- Use this replit to generate some quickly: **[JWT Keys](https://replit.com/@daavila/crypto#index.js)**
```bash
JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
@ -129,12 +130,12 @@ EMAIL\_ENCRYPTION defines if encryption is required at the start (`tls`) or star
EMAIL\_ENCRYPTION\_HOSTNAME allows specification of a hostname against which the certificate is validated. Use this if the mail server does have a valid certificate, but you are connecting with an IP or a different name for some reason.
EMAIL\_ALLOW\_SELFSIGNED defines whether self-signed certificates can be accepted from the server. As the mails being sent contain sensitive information, ONLY use this for testing.
NOTE: ⚠️ **Failing to perform either of the below setups will result in LibreChat using the unsecured password reset! This allows anyone to reset any password on your server immediately, without mail being sent at all!** The variable EMAIL\_FROM does not support all email providers **but is still required**. To stay updated, check the bug fixes [here](https://github.com/danny-avila/LibreChat/tags).
NOTE: ⚠️ **Failing to perform either of the below setups will result in LibreChat using the unsecured password reset! This allows anyone to reset any password on your server immediately, without mail being sent at all!** The variable EMAIL\_FROM does not support all email providers **but is still required**. To stay updated, check the bug fixes: **[here](https://github.com/danny-avila/LibreChat/tags)**
### Setup with Gmail
1. Create a Google Account and enable 2-step verification.
2. In the [Google Account settings](https://myaccount.google.com/), click on the "Security" tab and open "2-step verification."
2. In the **[Google Account settings](https://myaccount.google.com/)**, click on the "Security" tab and open "2-step verification."
3. Scroll down and open "App passwords." Choose "Mail" for the app and select "Other" for the device, then give it a random name.
4. Click on "Generate" to create a password, and copy the generated password.
5. In the .env file, modify the variables as follows:

View file

@ -1,5 +1,6 @@
---
title: Installation and Configuration
description: 💻 In-depth guides about installation and configuration
weight: 1
---
@ -8,7 +9,7 @@ weight: 1
## **[Installation](./installation/index.md)**
* 🐳 [Docker Compose (✨ Recommended)](./installation/docker_compose_install.md)
* 🦦 [Container (podman)](./installation/container_install.md)
* 🦦 [Container (Podman)](./installation/container_install.md)
* 🐧 [Linux](./installation/linux_install.md)
* 🍎 [Mac](./installation/mac_install.md)
* 🪟 [Windows](./installation/windows_install.md)

View file

@ -1,9 +1,10 @@
---
title: 🦦 Container (podman)
title: 🦦 Container (Podman)
description: Install LibreChat using Podman. If you don't like docker compose, don't want a bare-metal installation, but still want to leverage the benefits from the isolation and modularity of containers...
weight: 0
---
# Container Installation Guide (podman)
# Container Installation Guide (Podman)
If you don't like docker compose, don't want a bare-metal installation, but still want to leverage the benefits from the isolation and modularity of containers - this is the guide you should use.
@ -181,7 +182,7 @@ podman volume export librechat-meilisearch-data --output "librechat-meilisearch-
podman volume export librechat-mongodb-data --output "librechat-mongodb-backup-$(date +"%d-%m-%Y").tar"
```
These will leave archive files that you can do what you wish with, including reverting volumes to a previous state if needed. Refer to [podman documentation](https://docs.podman.io/en/latest/markdown/podman-volume-import.1.html) for how to do this.
These will leave archive files that you can do what you wish with, including reverting volumes to a previous state if needed. Refer to the **[official podman documentation](https://docs.podman.io/en/latest/markdown/podman-volume-import.1.html)** for how to do this.
## Updating LibreChat

View file

@ -1,5 +1,6 @@
---
title: 🐳 Docker Compose ✨(Recommended)
description: "Docker Compose Installation Guide: Docker Compose installation is recommended for most use cases. It's the easiest, simplest, and most reliable method to get started."
weight: -10
---
@ -19,7 +20,7 @@ Start by cloning the repository or downloading it to your desired location:
```
### Docker Installation
Install Docker on your system. [Docker Desktop](https://www.docker.com/products/docker-desktop/) is recommended for managing your Docker containers.
Install Docker on your system. **[Docker Desktop](https://www.docker.com/products/docker-desktop/)** is recommended for managing your Docker containers.
### LibreChat Configuration
Before running LibreChat with Docker, you need to configure some settings:
@ -27,7 +28,7 @@ Before running LibreChat with Docker, you need to configure some settings:
- Edit the credentials you see in `docker-compose.yml` under the API service as needed.
- See my notes below for specific instructions on some of the configuration
- Provide all necessary credentials in the `.env` file before the next step.
- Docker will read this env file. See the `.env.example` file for reference.
- Docker will read this env file. See the **[/.env.example](https://github.com/danny-avila/LibreChat/blob/main/.env.example)** file for reference.
#### [AI Setup](../configuration/ai_setup.md) (Required)
At least one AI endpoint should be setup for use.

View file

@ -1,11 +1,12 @@
---
title: Installation
description: 🧑‍💻 This section contains the installation guides for Docker, Podman, Windows, Mac and Linux.
weight: 1
---
# Installation
* 🐳 [Docker Compose (✨ Recommended)](docker_compose_install.md)
* 🦦 [Container (podman)](container_install.md)
* 🦦 [Container (Podman)](container_install.md)
* 🐧 [Linux](linux_install.md)
* 🍎 [Mac](mac_install.md)
* 🪟 [Windows](windows_install.md)

View file

@ -1,5 +1,6 @@
---
title: 🐧 Linux
description: Linux Installation Guides
weight: 0
---
# Linux Installation Guide
@ -73,17 +74,17 @@ Note: The above command extracts the files to "/usr/local/LibreChat". If you wan
## Enable the Conversation search feature: (optional)
- Download MeiliSearch latest release from: https://github.com/meilisearch/meilisearch/releases
- Copy it to "/usr/local/LibreChat/"
- Rename the file to "meilisearch"
- Open a terminal and navigate to "/usr/local/LibreChat/"
- Download MeiliSearch latest release from: **[github.com/meilisearch](https://github.com/meilisearch/meilisearch/releases)**
- Copy it to `/usr/local/LibreChat/`
- Rename the file to `meilisearch`
- Open a terminal and navigate to `/usr/local/LibreChat/`
- Run the following command:
```bash
./meilisearch --master-key=YOUR_MASTER_KEY
```
Note: Replace "YOUR_MASTER_KEY" with the generated master key, which you saved earlier.
Note: Replace `YOUR_MASTER_KEY` with the generated master key, which you saved earlier.
## Install Node.js:

View file

@ -1,5 +1,6 @@
---
title: 🍎 Mac
description: Mac Installation Guides
weight: 0
---
@ -12,7 +13,7 @@ weight: 0
## **Manual Installation**
### Install the prerequisites (Required)
- Install Homebrew (if not already installed) by following the instructions on https://brew.sh/
- Install Homebrew (if not already installed) by following the instructions on **[brew.sh](https://brew.sh/)**
- Install Node.js and npm by running `brew install node`
### Download LibreChat (Required)
@ -38,7 +39,7 @@ weight: 0
### **Download MeiliSearch for macOS (Optional):**
- This enables the conversation search feature
- You can download the latest MeiliSearch binary for macOS from their GitHub releases page: https://github.com/meilisearch/MeiliSearch/releases
- You can download the latest MeiliSearch binary for macOS from their GitHub releases page: **[github.com/meilisearch](https://github.com/meilisearch/meilisearch/releases)**
- Look for the file named `meilisearch-macos-amd64` (or the equivalent for your system architecture) and download it.
- **Make the binary executable:**

View file

@ -1,5 +1,6 @@
---
title: 🪟 Windows
description: Windows Installation Guides
weight: 0
---
@ -26,8 +27,8 @@ In this video we're going to install LibreChat on Windows 11 using Docker and Gi
#### Instructions
- To install LibreChat, you need Docker desktop and Git. Download them from these links:
- Docker desktop: https://www.docker.com/products/docke...
- Git: https://git-scm.com/download/win
- Docker desktop: **[https://docs.docker.com/desktop/install/windows-install/](https://docs.docker.com/desktop/install/windows-install/)**
- Git: **[https://git-scm.com/download/win](https://git-scm.com/download/win)**
- Follow the steps in the video to install and run Docker desktop and Git.
- Open a terminal in the root of the C drive and enter these commands:
- `git clone https://github.com/danny-avila/LibreChat`
@ -52,7 +53,7 @@ Have fun!
### Download and Install Node.js (Required)
- Navigate to https://nodejs.org/en/download and to download the latest Node.js version for your OS (The Node.js installer includes the NPM package manager.)
- Navigate to **[https://nodejs.org/en/download](https://nodejs.org/en/download)** and to download the latest Node.js version for your OS (The Node.js installer includes the NPM package manager.)
### Download and Install Git (Recommended)
- Git: https://git-scm.com/download/win
@ -63,15 +64,12 @@ Have fun!
- At least one AI endpoint should be setup for use.
### Download LibreChat (Required)
- (With Git) Open Terminal (command prompt) and clone the repository by running `git clone https://github.com/danny-avila/LibreChat.git`
- Or download the latest release here: https://github.com/danny-avila/LibreChat/releases/
- Or by clicking on the green code button in the top of the page and selecting "Download ZIP"
- If you downloaded a zip file, extract the content in "C:/LibreChat/"
- Open Terminal (command prompt) and clone the repository by running `git clone https://github.com/danny-avila/LibreChat.git`
- **IMPORTANT : If you install the files somewhere else modify the instructions accordingly**
### Enable the Conversation search feature: (optional)
- Download MeiliSearch latest release from : https://github.com/meilisearch/meilisearch/releases
- Download MeiliSearch latest release from : **[github.com/meilisearch](https://github.com/meilisearch/meilisearch/releases)**
- Copy it to "C:/LibreChat/"
- Rename the file to "meilisearch.exe"
- Open it by double clicking on it
@ -89,7 +87,7 @@ Using the command line (in the root directory)
### To use the app:
1. Run `npm run backend`
2. Run `meilisearch --master-key <meilisearch_Master_Key>` (Only if SEARCH=TRUE)
3. Visit http://localhost:3080 (default port) & enjoy
3. Visit `http://localhost:3080` (default port) & enjoy
### Using a batch file
@ -98,7 +96,7 @@ Using the command line (in the root directory)
- Paste the following code in a new document
- The meilisearch executable needs to be at the root of the LibreChat directory
- Put your MeiliSearch master key instead of "`<meilisearch_Master_Key>`"
- Save the file as "C:/LibreChat/LibreChat.bat"
- Save the file as `C:/LibreChat/LibreChat.bat`
- you can make a shortcut of this batch file and put it anywhere
```bat title="LibreChat.bat"

View file

@ -1,6 +0,0 @@
/*example youtube color scheme*/
[data-md-color-scheme="youtube"] {
--md-primary-fg-color: #eee;
--md-primary-bg-color: #555;
--md-accent-fg-color: #f00;
}

View file

@ -48,15 +48,10 @@ theme:
- navigation.instant.progress
- navigation.tracking
- navigation.expand
- navigation.prune
#- navigation.prune
- navigation.indexes
- navigation.top
# For more Styling options (not in use)
extra_css:
- stylesheets/extra.css
markdown_extensions:
- pymdownx.highlight:
anchor_linenums: true
@ -77,16 +72,32 @@ markdown_extensions:
- name: mermaid
class: mermaid
plugins:
- search
# - pub-debugger # <- General purpose mkdocs debugger
- mkdocs-nav-weight:
section_renamed: true # If true, section name will use the title of its index instead of the folder name.
index_weight: -10
warning: true # Controls whether to send a Warning when invalid values are detected in markdown metadata
reverse: false # If true, sort nav by weight from largest to smallest.
headless_included: false
# for more info: https://github.com/shu307/mkdocs-nav-weight?tab=readme-ov-file
# for more info: https://github.com/shu307/mkdocs-nav-weight?tab=readme-ov-file
- pub-social:
og:
enabled: true
locale: en_us
twitter:
enabled: true
# for more info: https://github.com/mkusz/mkdocs-publisher
- exclude:
glob:
- dev/* # <- exclude the docs/dev folder from the docs
- "*.tmp"
- "*.pdf"
- "*.gz"
regex:
- '.*\.(tmp|bin|tar)$'
# https://github.com/apenwarr/mkdocs-exclude
extra:
social: