Enhanced ChatGPT Clone: Features Agents, MCP, DeepSeek, Anthropic, AWS, OpenAI, Responses API, Azure, Groq, o1, GPT-5, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, AI model switching, message search, Code Interpreter, langchain, DALL-E-3, OpenAPI Actions, Functions, Secure Multi-User Auth, Presets, open-source for self-hosting. Active. https://librechat.ai/
Find a file
Danny Avila 11bfed7126
🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536)
* chore: playwright setup update

* refactor: update ChatRoute component with accessible loading spinner with live region

* chore(Message): typing

* ci: first pass, a11y testing

* refactor: update lang attribute in index.html to "en-US"

* ci: jsx-a11y dev eslint plugin

* ci: jsx plugin

* fix: Exclude 'vite.config.ts' from TypeScript compilation for testing

* fix(a11y): Remove tabIndex from non-interactive element in MessagesView component

* fix(a11y):
- Visible, non-interactive elements with click handlers must have at least one keyboard listener.eslintjsx-a11y/click-events-have-key-events
- Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs to an interactive content element.eslintjsx-a11y/no-static-element-interactions
chore: remove unused bookmarks panel
- fix some "Unexpected nullable boolean value in conditional" warnings

* fix(NewChat): a11y, nested button issue, add aria-label, remove implicit role

* fix(a11y):
- partially address #3515 with `main` landmark
other:
- eslint@typescript-eslint/strict-boolean-expressions

* chore(MenuButton): Use button element instead of div for accessibility

* chore: Update TitleButton to use button element for accessibility

* chore: Update TitleButton to use button element for accessibility

* refactor(ChatMenuItem): Improve focus accessibility and code readability

* chore(MenuButton): Update aria-label to dynamically include primaryText

* fix(a11y): SearchBar
- If a form control does not have a properly associated text label, the function or purpose of that form control may not be presented to screen reader users. Visible form labels also provide visible descriptions and larger clickable targets for form controls which placeholders do not.

* chore: remove duplicate SearchBar twcss

* fix(a11y):
- The edit and copy buttons that are visually hidden are exposed to Assistive technology and are announced to screen reader users.

* fix(a11y): visible focus outline

* fix(a11y): The button to select the LLM Model has the aria-haspopup and aria- expanded attributes which makes its role ambuguous and unclear. It functions like a combobox but doesn't fully support that interaction and also fucntions like a dialog but doesn't completely support that interaction either.

* fix(a11y): fix visible focus outline

* fix(a11y): Scroll to bottom button missing accessible name #3474

* fix(a11y): The page lacks any heading structure. There should be at least one H1 and other headings to help users understand the orgainzation of the page and the contents.

Note: h1 won't be correct here so made it h2

* fix(a11y): LLM controls aria-labels

* fix(a11y): There is no visible focus outline to the 'send message' button

* fix(a11y): fix visible focus outline for Fork button

* refactor(MessageRender): add focus ring to message cards, consolidate complex conditions, add logger for setting latest message, add tabindex for card

* fix: focus border color and fix set latest message card condition

* fix(a11y): Adequate contrast for MessageAudio buttton

* feat: Add GitHub Actions workflow for accessibility linting

* chore: Update GitHub Actions workflow for accessibility linting to include client/src/** path

* fix(Nav): navmask and accessibility

* fix: Update Nav component to handle potential undefined type in SearchContext

* fix(a11y): add focus visibility to attach files button #3475

* fix(a11y): discernible text for NewChat button

* fix(a11y): accessible landmark names, all page content in landmarks, ensures landmarks are unique #3514 #3515

* fix(Prompts): update isChatRoute prop to be required in List component

* fix(a11y): buttons must have discernible text
2024-08-04 20:39:52 -04:00
.devcontainer 🐳 fix: Update .devcontainer Files (#1712) 2024-02-04 08:39:19 -05:00
.github 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
.husky 🐳 hotfix: Necessary Dockerfile Update (#2271) 2024-04-01 18:46:12 -04:00
api 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
client 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
config 🗨️ feat: Prompt Slash Commands (#3219) 2024-06-27 17:34:48 -04:00
e2e 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
packages/data-provider 🔉 fix: Elevenlabs TTS and STT (#3482) 2024-07-30 12:46:46 -04:00
utils 💻 feat: added env updater script (#3107) 2024-06-21 10:14:18 -04:00
.dockerignore 🐳 : Further Docker build Cleanup & Docs Update (#1502) 2024-01-06 11:59:08 -05:00
.env.example 🛠️fix: apply safety settings to Gemini API (#3533) 2024-08-04 14:08:57 -04:00
.eslintrc.js 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
.gitignore 🌿 feat: Multi-response Streaming (#3191) 2024-06-25 03:02:38 -04:00
bun.lockb 🚀 refactor: Enhance Custom Endpoints, Message Logic, and Payload Handling (#2895) 2024-05-28 14:52:12 -04:00
deploy-compose.yml 🐋 chore: add restart: always to meilisearch service in docker-compose.yml (#2788) 2024-05-22 23:20:35 -04:00
docker-compose.override.yml.example 🚅 docs: Updated Example for LiteLLM ports and Volume mount (#2941) 2024-06-01 08:51:18 -04:00
docker-compose.yml Revert "🐋 refactor(docker-compose): use "HOST" in ports field (#2654)" 2024-05-13 10:36:36 -04:00
Dockerfile v0.7.3 (#3067) 2024-06-15 12:17:10 -04:00
Dockerfile.multi 🐳 chore: Update Dockerfile.multi (#3528) 2024-08-04 06:43:07 -04:00
index.html v0.7.3 (#3067) 2024-06-15 12:17:10 -04:00
librechat.example.yaml 🔊 docs(librechat.example): update version (#3287) 2024-07-07 19:00:45 +02:00
LICENSE ⚖️ Update LICENSE.md Year: 2023 -> 2024 (#1501) 2024-01-06 12:00:20 -05:00
package-lock.json 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
package.json 🤲 feat(a11y): Initial a11y improvements, added linters, tests; fix: close sidebars in mobile view (#3536) 2024-08-04 20:39:52 -04:00
prettier.config.js v0.7.3 (#3067) 2024-06-15 12:17:10 -04:00
rag.yml 🐳 feat: RAG for Default Docker Compose Files + Docs Update (#2246) 2024-03-29 21:15:36 -04:00
README.md 🚀 feat: gpt-4o-mini (#3384) 2024-07-19 07:59:07 -04:00

LibreChat

Deploy on Railway Deploy on Zeabur Deploy on Sealos

📃 Features

  • 🖥️ UI matching ChatGPT, including Dark mode, Streaming, and latest updates
  • 🤖 AI model selection:
    • OpenAI, Azure OpenAI, BingAI, ChatGPT, Google Vertex AI, Anthropic (Claude), Plugins, Assistants API (including Azure Assistants)
  • Compatible across both Remote & Local AI services:
    • groq, Ollama, Cohere, Mistral AI, Apple MLX, koboldcpp, OpenRouter, together.ai, Perplexity, ShuttleAI, and more
  • 💾 Create, Save, & Share Custom Presets
  • 🔀 Switch between AI Endpoints and Presets, mid-chat
  • 🔄 Edit, Resubmit, and Continue Messages with Conversation branching
  • 🌿 Fork Messages & Conversations for Advanced Context control
  • 💬 Multimodal Chat:
    • Upload and analyze images with Claude 3, GPT-4 (including gpt-4o and gpt-4o-mini), and Gemini Vision 📸
    • Chat with Files using Custom Endpoints, OpenAI, Azure, Anthropic, & Google. 🗃️
    • Advanced Agents with Files, Code Interpreter, Tools, and API Actions 🔦
  • 🌎 Multilingual UI:
    • English, 中文, Deutsch, Español, Français, Italiano, Polski, Português Brasileiro,
    • Русский, 日本語, Svenska, 한국어, Tiếng Việt, 繁體中文, العربية, Türkçe, Nederlands, עברית
  • 🎨 Customizable Dropdown & Interface: Adapts to both power users and newcomers
  • 📧 Verify your email to ensure secure access
  • 🗣️ Chat hands-free with Speech-to-Text and Text-to-Speech magic
    • Automatically send and play Audio
    • Supports OpenAI, Azure OpenAI, and Elevenlabs
  • 📥 Import Conversations from LibreChat, ChatGPT, Chatbot UI
  • 📤 Export conversations as screenshots, markdown, text, json
  • 🔍 Search all messages/conversations
  • 🔌 Plugins, including web access, image generation with DALL-E-3 and more
  • 👥 Multi-User, Secure Authentication with Moderation and Token spend tools
  • ⚙️ Configure Proxy, Reverse Proxy, Docker, & many Deployment options:
    • Use completely local or deploy on the cloud
  • 📖 Completely Open-Source & Built in Public
  • 🧑‍🤝‍🧑 Community-driven development, support, and feedback

For a thorough review of our features, see our docs here 📚

🪶 All-In-One AI Conversations with LibreChat

LibreChat brings together the future of assistant AIs with the revolutionary technology of OpenAI's ChatGPT. Celebrating the original styling, LibreChat gives you the ability to integrate multiple AI models. It also integrates and enhances original client features such as conversation and message search, prompt templates and plugins.

With LibreChat, you no longer need to opt for ChatGPT Plus and can instead use free or pay-per-call APIs. We welcome contributions, cloning, and forking to enhance the capabilities of this advanced chatbot platform.

Watch the video Click on the thumbnail to open the video☝️


🌐 Resources

GitHub Repo:

Other:


📝 Changelog

Keep up with the latest updates by visiting the releases page and notes:

⚠️ Please consult the changelog for breaking changes before updating.


Star History

Star History Chart

danny-avila%2FLibreChat | Trendshift ROSS Index - Fastest Growing Open-Source Startups in Q1 2024 | Runa Capital


Contributions

Contributions, suggestions, bug reports and fixes are welcome!

For new features, components, or extensions, please open an issue and discuss before sending a PR.


💖 This project exists in its current state thanks to all the people who contribute