Official documentation, blog, and changelog for LibreChat. Built with Next.js and Fumadocs. Live at librechat.ai
639
stars
566
commits
MDX
primary language
Sep 4, 2026
updated
The official documentation, blog, and changelog for LibreChat, the open-source, self-hostable AI chat platform.
.potx templates across upload, search, and code execution, upload shell scripts across common MIME variants, export Mermaid diagrams as SVG or PNG, and download original Office files from the artifact panel.Read the full v0.8.8-rc1 changelog.
This repository powers www.librechat.ai: the docs, guides, blog, and changelog for LibreChat. It is a Next.js application built on Fumadocs, with content authored in MDX.
Looking for the LibreChat app itself? It lives at danny-avila/LibreChat. Open code and product issues there, and documentation issues here.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router), React 19 |
| Docs engine | Fumadocs (core, ui, mdx) |
| Content | MDX |
| Styling | Tailwind CSS v4 |
| Search | Orama (static, per-locale index) |
| Ask AI | Vercel AI SDK + OpenRouter |
| Rate limiting | Upstash Redis |
| Icons | Lucide |
| Testing | Vitest |
| Tooling | ESLint, Prettier, Husky |
| Package manager | pnpm |
# 1. Clone the repository
git clone https://github.com/LibreChat-AI/librechat.ai.git
cd librechat.ai
# 2. (Optional) create a local env file for Ask AI, rate limiting, etc.
cp .env.template .env.local
# 3. Install dependencies
pnpm install
# 4. Start the dev server
pnpm dev
Open http://localhost:3333 to view the site.
Environment variables are optional for local docs work. You only need to fill in
.env.localto exercise features like Ask AI or rate limiting. Always runpnpm buildbefore opening a PR to catch build errors early.
Generate an Ed25519 signing key, then copy the printed assignment into .env.local:
pnpm web-bot-auth:keygen
In the production secret manager, store the JSON between the single quotes as the WEB_BOT_AUTH_PRIVATE_JWK value.
Set WEB_BOT_AUTH_AGENT_ORIGIN when the public site origin is not https://www.librechat.ai. The app publishes the corresponding public JWKS at /.well-known/http-message-signatures-directory and signs requests from the docs AI agent. The directory returns 503 and agent requests fail closed until the private key is configured, so a deployment cannot advertise an empty key set or silently send unsigned agent traffic.
app/ # Next.js App Router: docs, blog, changelog pages + API routes
api/
chat/ # "Ask AI" endpoint (OpenRouter via the Vercel AI SDK)
search/ # Per-locale static Orama search index
content/
docs/ # Documentation pages (MDX), organized by section
blog/ # Blog posts (MDX)
changelog/ # Changelog entries (MDX)
components/ # React components (home, UI, icons, search dialog, etc.)
lib/ # Utilities: content sources, i18n, search, MDX components
public/ # Static assets (images, videos, icons)
scripts/ # Build, translation, and image-optimization scripts
source.config.ts # Fumadocs content collections config
Docs live in content/docs/ and are grouped by section. Each directory has a meta.json that controls sidebar navigation and ordering:
{
"title": "Section Title",
"icon": "Wrench",
"pages": ["index", "page-one", "page-two"]
}
Only pages listed in the pages array appear in the sidebar, in the order given.
Localization: English (.mdx) is the source of truth. Translated pages use a locale suffix (for example index.es.mdx), and each locale's search index only includes pages that have a real translated file. Keep new content in English and let the translation workflow handle the rest.
| Command | Description |
|---|---|
pnpm dev | Start the dev server on port 3333 |
pnpm build | Production build |
pnpm start | Start the production server on port 3333 |
pnpm lint | Run ESLint (zero warnings allowed) |
pnpm lint:prettier | Check formatting with Prettier |
pnpm prettier | Format the codebase with Prettier |
pnpm typecheck | Generate MDX types and run tsc --noEmit |
pnpm test | Run the Vitest suite |
pnpm test:watch | Run Vitest in watch mode |
pnpm analyze | Build and analyze the production bundle size |
pnpm optimize:images | Optimize images in public/ |
pnpm web-bot-auth:keygen | Generate an Ed25519 Web Bot Auth private JWK |
pnpm translate | Generate translations from the English source |
Contributions are welcome, from fixing a typo to writing a whole new guide.
main.pnpm dev.pnpm lint, pnpm typecheck, and pnpm build.For questions about the documentation, join the Discord. For issues with the LibreChat application itself, please use the main repository.
Released under the MIT License.
(top 30 of 105)
MDX
94.1%
TypeScript
5.5%
Official documentation, blog, and changelog for LibreChat. Built with Next.js and Fumadocs. Live at librechat.ai
639
stars
566
commits
MDX
primary language
Sep 4, 2026
updated
The official documentation, blog, and changelog for LibreChat, the open-source, self-hostable AI chat platform.
.potx templates across upload, search, and code execution, upload shell scripts across common MIME variants, export Mermaid diagrams as SVG or PNG, and download original Office files from the artifact panel.Read the full v0.8.8-rc1 changelog.
This repository powers www.librechat.ai: the docs, guides, blog, and changelog for LibreChat. It is a Next.js application built on Fumadocs, with content authored in MDX.
Looking for the LibreChat app itself? It lives at danny-avila/LibreChat. Open code and product issues there, and documentation issues here.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router), React 19 |
| Docs engine | Fumadocs (core, ui, mdx) |
| Content | MDX |
| Styling | Tailwind CSS v4 |
| Search | Orama (static, per-locale index) |
| Ask AI | Vercel AI SDK + OpenRouter |
| Rate limiting | Upstash Redis |
| Icons | Lucide |
| Testing | Vitest |
| Tooling | ESLint, Prettier, Husky |
| Package manager | pnpm |
# 1. Clone the repository
git clone https://github.com/LibreChat-AI/librechat.ai.git
cd librechat.ai
# 2. (Optional) create a local env file for Ask AI, rate limiting, etc.
cp .env.template .env.local
# 3. Install dependencies
pnpm install
# 4. Start the dev server
pnpm dev
Open http://localhost:3333 to view the site.
Environment variables are optional for local docs work. You only need to fill in
.env.localto exercise features like Ask AI or rate limiting. Always runpnpm buildbefore opening a PR to catch build errors early.
Generate an Ed25519 signing key, then copy the printed assignment into .env.local:
pnpm web-bot-auth:keygen
In the production secret manager, store the JSON between the single quotes as the WEB_BOT_AUTH_PRIVATE_JWK value.
Set WEB_BOT_AUTH_AGENT_ORIGIN when the public site origin is not https://www.librechat.ai. The app publishes the corresponding public JWKS at /.well-known/http-message-signatures-directory and signs requests from the docs AI agent. The directory returns 503 and agent requests fail closed until the private key is configured, so a deployment cannot advertise an empty key set or silently send unsigned agent traffic.
app/ # Next.js App Router: docs, blog, changelog pages + API routes
api/
chat/ # "Ask AI" endpoint (OpenRouter via the Vercel AI SDK)
search/ # Per-locale static Orama search index
content/
docs/ # Documentation pages (MDX), organized by section
blog/ # Blog posts (MDX)
changelog/ # Changelog entries (MDX)
components/ # React components (home, UI, icons, search dialog, etc.)
lib/ # Utilities: content sources, i18n, search, MDX components
public/ # Static assets (images, videos, icons)
scripts/ # Build, translation, and image-optimization scripts
source.config.ts # Fumadocs content collections config
Docs live in content/docs/ and are grouped by section. Each directory has a meta.json that controls sidebar navigation and ordering:
{
"title": "Section Title",
"icon": "Wrench",
"pages": ["index", "page-one", "page-two"]
}
Only pages listed in the pages array appear in the sidebar, in the order given.
Localization: English (.mdx) is the source of truth. Translated pages use a locale suffix (for example index.es.mdx), and each locale's search index only includes pages that have a real translated file. Keep new content in English and let the translation workflow handle the rest.
| Command | Description |
|---|---|
pnpm dev | Start the dev server on port 3333 |
pnpm build | Production build |
pnpm start | Start the production server on port 3333 |
pnpm lint | Run ESLint (zero warnings allowed) |
pnpm lint:prettier | Check formatting with Prettier |
pnpm prettier | Format the codebase with Prettier |
pnpm typecheck | Generate MDX types and run tsc --noEmit |
pnpm test | Run the Vitest suite |
pnpm test:watch | Run Vitest in watch mode |
pnpm analyze | Build and analyze the production bundle size |
pnpm optimize:images | Optimize images in public/ |
pnpm web-bot-auth:keygen | Generate an Ed25519 Web Bot Auth private JWK |
pnpm translate | Generate translations from the English source |
Contributions are welcome, from fixing a typo to writing a whole new guide.
main.pnpm dev.pnpm lint, pnpm typecheck, and pnpm build.For questions about the documentation, join the Discord. For issues with the LibreChat application itself, please use the main repository.
Released under the MIT License.
(top 30 of 105)
MDX
94.1%
TypeScript
5.5%