import Link from 'next/link' import { ArrowRight, CheckCircle2, Clock, Database, FileSearch, HardDrive, Layers, Package, Server, Shield, } from 'lucide-react' import type { ComponentProps } from 'react' function DockerLogo(props: ComponentProps<'svg'>) { return ( ) } function NpmLogo(props: ComponentProps<'svg'>) { return ( ) } function HelmLogo(props: ComponentProps<'svg'>) { return ( ) } const services = [ { name: 'MongoDB', icon: Database }, { name: 'MeiliSearch', icon: FileSearch }, { name: 'RAG API', icon: Layers }, { name: 'Vector DB', icon: HardDrive }, ] const methods = [ { id: 'docker', icon: DockerLogo, title: 'Docker Compose', recommended: true, href: '/docs/local/docker', time: '~5 min', difficulty: 'Beginner', description: 'Everything runs in containers. MongoDB, MeiliSearch, RAG API, and Vector DB are all included automatically.', prereqs: [ { label: 'Git', href: 'https://git-scm.com/downloads' }, { label: 'Docker Desktop', href: 'https://www.docker.com/products/docker-desktop/' }, ], commands: [ 'git clone https://github.com/danny-avila/LibreChat.git', 'cd LibreChat', 'cp .env.example .env', 'docker compose up -d', ], included: ['MongoDB', 'MeiliSearch', 'RAG API', 'Vector DB'], }, { id: 'npm', icon: NpmLogo, title: 'npm', recommended: false, href: '/docs/local/npm', time: '~20 min', difficulty: 'Intermediate', description: 'Run LibreChat directly with Node.js. You manage external services like MongoDB and MeiliSearch yourself.', prereqs: [ { label: 'Node.js v20.19+', href: 'https://nodejs.org/en/download' }, { label: 'Git', href: 'https://git-scm.com/downloads' }, { label: 'MongoDB', href: '/docs/configuration/mongodb/mongodb_atlas' }, ], commands: [ 'git clone https://github.com/danny-avila/LibreChat.git', 'cd LibreChat && npm ci', 'cp .env.example .env # edit MONGO_URI', 'npm run backend', ], included: [], }, { id: 'helm', icon: HelmLogo, title: 'Helm Chart', recommended: false, href: '/docs/local/helm_chart', time: '~15 min', difficulty: 'Advanced', description: 'Deploy on Kubernetes using Helm. Best for production clusters and infrastructure-as-code workflows.', prereqs: [ { label: 'Kubernetes cluster', href: null }, { label: 'kubectl + Helm', href: null }, ], commands: [ 'kubectl create secret generic librechat-credentials-env ...', 'helm install librechat oci://ghcr.io/danny-avila/librechat-chart/librechat', ], included: [], }, ] function DifficultyBadge({ level }: { level: string }) { const colors: Record = { Beginner: 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400', Intermediate: 'bg-amber-500/10 text-amber-600 dark:text-amber-400', Advanced: 'bg-rose-500/10 text-rose-600 dark:text-rose-400', } return ( {level} ) } export function LocalInstallHub() { return (
{/* Services matrix — what Docker includes */}

Bundled with Docker

{services.map((svc) => { const Icon = svc.icon return (
) })}

Docker Compose handles all dependencies. With npm or Helm, you install and configure these services separately.

{/* Installation methods */}

Choose a method

{methods.map((method) => { const Icon = method.icon return ( {/* Card header */}

{method.title}

{method.recommended && ( Recommended )}

{method.description}

{/* Card body — prereqs + commands side by side */}
{/* Prerequisites */}
Prerequisites
    {method.prereqs.map((prereq) => (
  • ))}
{/* Quick commands */}
Commands
{method.commands.map((cmd, i) => (
{cmd}
))}
{/* Footer CTA */}
{method.included.length > 0 ? (
) : ( External services required )}
) })}
{/* Remote hosting callout */}

Not running locally?

Remote Hosting

DigitalOcean, Railway, Azure, and more

) }