# LibreChat

Chat interface that connects to many AI providers, with agents and conversation history.

- Replaces: [ChatGPT](https://openlogs.fyi/alternatives/chatgpt)
- Summary: Paid AI chat assistant services, such as ChatGPT.
- Stack: TypeScript (language), MongoDB (database)
- Deployment: docker_compose
- License: MIT (osi) [source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/README.md), read 2026-10-22)
- Difficulty: hard. 6 services (3 database or broker: mongo, meilisearch, pgvector), 9 volume mounts, 6 env values to set, no elevated host access. Heuristic score 9 of 11: hard.
- Requirements: not stated
- Repository: [LibreChat-AI/LibreChat](https://github.com/LibreChat-AI/LibreChat)

## Install

1. Docker with the Compose plugin ([source](https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml))

   ```yaml
   # Do not edit this file directly. Use a ‘docker-compose.override.yaml’ file if you can.
   # Refer to `docker-compose.override.yaml.example’ for some sample configurations.
   
   services:
     api:
       container_name: LibreChat
       ports:
         - "${PORT}:${PORT}"
       depends_on:
         - mongodb
         - rag_api
       image: registry.librechat.ai/librechat-ai/librechat-dev:latest
       restart: always
       user: "${UID}:${GID}"
       extra_hosts:
         - "host.docker.internal:host-gateway"
       environment:
         - HOST=0.0.0.0
         - MONGO_URI=mongodb://mongodb:27017/LibreChat
         - MEILI_HOST=http://meilisearch:7700
         - LIBRECHAT_TEMP_CREDENTIALS_PATH=/app/data/.env.temp
         - RAG_PORT=${RAG_PORT:-8000}
         - RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
         - PROXY=${PROXY:-}
         - HTTP_PROXY=${HTTP_PROXY:-}
         - HTTPS_PROXY=${HTTPS_PROXY:-}
         - NO_PROXY=${NO_PROXY:-localhost,127.0.0.1,::1},${no_proxy:-},mongodb,chat-mongodb,meilisearch,chat-meilisearch,rag_api,vectordb,host.docker.internal
         - http_proxy=${http_proxy:-}
         - https_proxy=${https_proxy:-}
         - no_proxy=${no_proxy:-localhost,127.0.0.1,::1},${NO_PROXY:-},mongodb,chat-mongodb,meilisearch,chat-meilisearch,rag_api,vectordb,host.docker.internal
       volumes:
         - type: bind
           source: ./.env
           target: /app/.env
         - ./images:/app/client/public/images
         - ./uploads:/app/uploads
         - ./logs:/app/logs
         - ./skill:/app/skill
         - librechat-data:/app/data
     admin-panel:
       container_name: admin-panel
       image: registry.librechat.ai/librechat-ai/librechat-admin-panel:latest
       ports:
         - "${ADMIN_PANEL_PORT:-3000}:3000"
       depends_on:
         - api
       restart: always
       environment:
         - PORT=3000
         # Plain expansion (not :?) so `docker compose down`/`pull` still run when this is unset.
         # The panel itself refuses to start without it; set ADMIN_PANEL_SESSION_SECRET in .env.
         - SESSION_SECRET=${ADMIN_PANEL_SESSION_SECRET}
         - API_SERVER_URL=http://api:${PORT:-3080}
         - VITE_API_BASE_URL=${DOMAIN_CLIENT:-http://localhost:3080}
         - SESSION_COOKIE_SECURE=${ADMIN_PANEL_SESSION_COOKIE_SECURE:-false}
     mongodb:
       container_name: chat-mongodb
       image: mongo:8.0.20
       restart: always
       user: "${UID}:${GID}"
       volumes:
         - ./data-node:/data/db
       command: mongod --noauth
     meilisearch:
       container_name: chat-meilisearch
       image: getmeili/meilisearch:v1.35.1
       restart: always
       user: "${UID}:${GID}"
       environment:
         - MEILI_HOST=http://meilisearch:7700
         - MEILI_NO_ANALYTICS=true
         - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
       volumes:
         - ./meili_data_v1.35.1:/meili_data
     vectordb:
       container_name: vectordb
       image: pgvector/pgvector:0.8.0-pg15-trixie
       environment:
         POSTGRES_DB: mydatabase
         POSTGRES_USER: myuser
         POSTGRES_PASSWORD: mypassword
       restart: always
       volumes:
         - pgdata2:/var/lib/postgresql/data
     rag_api:
       container_name: rag_api
       image: registry.librechat.ai/librechat-ai/librechat-rag-api-dev-lite:latest
       environment:
         - DB_HOST=vectordb
         - RAG_PORT=${RAG_PORT:-8000}
       restart: always
       depends_on:
         - vectordb
       env_file:
         - .env
   
   volumes:
     pgdata2:
     librechat-data:
   ```

3. Download .env next to the compose file ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example))

   ```bash
   curl -fsSL https://raw.githubusercontent.com/LibreChat-AI/LibreChat/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example -o .env
   ```

4. What the compose file check ran with ([source](https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx))

   ```text
   The compose file check ran together with .env.example from the same commit, saved as .env. The folder held only these files. The local Docker guide tells the reader to copy .env.example to .env and run docker compose up -d in the cloned repository.
   ```

5. Start it ([source](https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx))

   ```bash
   docker compose up -d
   ```

6. Open the app ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml))

   ```text
   Open http://localhost:3080. The compose file publishes host port 3080 for the api service. The docs say to open this address and register the first account.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- Some images use the latest tag or no tag: Images without a pinned version: api: registry.librechat.ai/librechat-ai/librechat-dev:latest, admin-panel: registry.librechat.ai/librechat-ai/librechat-admin-panel:latest, rag_api: registry.librechat.ai/librechat-ai/librechat-rag-api-dev-lite:latest. A later pull can get a different version. ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml), checked 2026-10-22)
- The compose file publishes host ports: Host ports: 3000 (admin-panel). A port without a host address listens on all host network interfaces. ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml), checked 2026-10-22)
- The compose file mounts host folders: Host paths mounted into containers: ./.env at /app/.env (api), ./images at /app/client/public/images (api), ./uploads at /app/uploads (api), ./logs at /app/logs (api), ./skill at /app/skill (api), ./data-node at /data/db (mongodb), ./meili_data_v1.35.1 at /meili_data (meilisearch). ([source](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 989
- Stars: 46140, forks: 9482
- Last push: 2026-10-22 (0 days ago)
- Latest release: none recorded

## Sources

- [Repository: https://github.com/LibreChat-AI/LibreChat](https://github.com/LibreChat-AI/LibreChat)
- [License: https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/LICENSE](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/LICENSE)
- [Business model: https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/README.md](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/README.md)
- [Compose file: https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml)
- [Install step: https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx](https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx)
- [Install step: https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example](https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example)

---
Canonical: https://openlogs.fyi/tools/librechat  
Last updated: 2026-10-22
