{
  "schema_version": 1,
  "generated_at": "2026-10-23T00:00:00.000Z",
  "canonical_url": "https://openlogs.fyi/tools/librechat",
  "slug": "librechat",
  "name": "LibreChat",
  "tagline": "Chat interface that connects to many AI providers, with agents and conversation history.",
  "replaces": {
    "summary": "Paid AI chat assistant services, such as ChatGPT.",
    "products": [
      {
        "slug": "chatgpt",
        "name": "ChatGPT",
        "vendor": "OpenAI",
        "url": "https://openlogs.fyi/alternatives/chatgpt"
      }
    ]
  },
  "stack": [
    {
      "kind": "language",
      "name": "TypeScript"
    },
    {
      "kind": "database",
      "name": "MongoDB"
    }
  ],
  "deployment_methods": [
    "docker_compose"
  ],
  "requirements": {
    "min_ram_mb": null,
    "min_cpu_cores": null,
    "source_url": null
  },
  "license": {
    "spdx": "MIT",
    "class": "osi",
    "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/LICENSE"
  },
  "business_model": {
    "value": "unknown",
    "notes": "The README at the pinned commit does not state a business model, so it stays unknown.",
    "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/README.md",
    "checked_at": "2026-10-22"
  },
  "difficulty": {
    "value": "hard",
    "reason": "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."
  },
  "repository": {
    "owner": "LibreChat-AI",
    "name": "LibreChat",
    "url": "https://github.com/LibreChat-AI/LibreChat"
  },
  "compose_check": {
    "status": "config_ok",
    "validated_at": "2026-10-22",
    "summary": "config_ok on 2026-10-22"
  },
  "recipe": {
    "version": 1,
    "source_path": "docker-compose.yml",
    "source_repo": "LibreChat-AI/LibreChat",
    "source_commit_sha": "eac18f465667f5b8b463f2a9dfa2af1271e40a1b",
    "source_kind": "app_repo",
    "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml"
  },
  "install_steps": [
    {
      "order": 1,
      "kind": "prerequisite",
      "language": "text",
      "label": "Docker with the Compose plugin",
      "body": "A host with Docker and the Docker Compose plugin. This entry runs from a compose file.",
      "source_url": "https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 2,
      "kind": "compose",
      "language": "yaml",
      "label": "Save the compose file as docker-compose.yml",
      "body": "# Do not edit this file directly. Use a ‘docker-compose.override.yaml’ file if you can.\n# Refer to `docker-compose.override.yaml.example’ for some sample configurations.\n\nservices:\n  api:\n    container_name: LibreChat\n    ports:\n      - \"${PORT}:${PORT}\"\n    depends_on:\n      - mongodb\n      - rag_api\n    image: registry.librechat.ai/librechat-ai/librechat-dev:latest\n    restart: always\n    user: \"${UID}:${GID}\"\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n    environment:\n      - HOST=0.0.0.0\n      - MONGO_URI=mongodb://mongodb:27017/LibreChat\n      - MEILI_HOST=http://meilisearch:7700\n      - LIBRECHAT_TEMP_CREDENTIALS_PATH=/app/data/.env.temp\n      - RAG_PORT=${RAG_PORT:-8000}\n      - RAG_API_URL=http://rag_api:${RAG_PORT:-8000}\n      - PROXY=${PROXY:-}\n      - HTTP_PROXY=${HTTP_PROXY:-}\n      - HTTPS_PROXY=${HTTPS_PROXY:-}\n      - NO_PROXY=${NO_PROXY:-localhost,127.0.0.1,::1},${no_proxy:-},mongodb,chat-mongodb,meilisearch,chat-meilisearch,rag_api,vectordb,host.docker.internal\n      - http_proxy=${http_proxy:-}\n      - https_proxy=${https_proxy:-}\n      - no_proxy=${no_proxy:-localhost,127.0.0.1,::1},${NO_PROXY:-},mongodb,chat-mongodb,meilisearch,chat-meilisearch,rag_api,vectordb,host.docker.internal\n    volumes:\n      - type: bind\n        source: ./.env\n        target: /app/.env\n      - ./images:/app/client/public/images\n      - ./uploads:/app/uploads\n      - ./logs:/app/logs\n      - ./skill:/app/skill\n      - librechat-data:/app/data\n  admin-panel:\n    container_name: admin-panel\n    image: registry.librechat.ai/librechat-ai/librechat-admin-panel:latest\n    ports:\n      - \"${ADMIN_PANEL_PORT:-3000}:3000\"\n    depends_on:\n      - api\n    restart: always\n    environment:\n      - PORT=3000\n      # Plain expansion (not :?) so `docker compose down`/`pull` still run when this is unset.\n      # The panel itself refuses to start without it; set ADMIN_PANEL_SESSION_SECRET in .env.\n      - SESSION_SECRET=${ADMIN_PANEL_SESSION_SECRET}\n      - API_SERVER_URL=http://api:${PORT:-3080}\n      - VITE_API_BASE_URL=${DOMAIN_CLIENT:-http://localhost:3080}\n      - SESSION_COOKIE_SECURE=${ADMIN_PANEL_SESSION_COOKIE_SECURE:-false}\n  mongodb:\n    container_name: chat-mongodb\n    image: mongo:8.0.20\n    restart: always\n    user: \"${UID}:${GID}\"\n    volumes:\n      - ./data-node:/data/db\n    command: mongod --noauth\n  meilisearch:\n    container_name: chat-meilisearch\n    image: getmeili/meilisearch:v1.35.1\n    restart: always\n    user: \"${UID}:${GID}\"\n    environment:\n      - MEILI_HOST=http://meilisearch:7700\n      - MEILI_NO_ANALYTICS=true\n      - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}\n    volumes:\n      - ./meili_data_v1.35.1:/meili_data\n  vectordb:\n    container_name: vectordb\n    image: pgvector/pgvector:0.8.0-pg15-trixie\n    environment:\n      POSTGRES_DB: mydatabase\n      POSTGRES_USER: myuser\n      POSTGRES_PASSWORD: mypassword\n    restart: always\n    volumes:\n      - pgdata2:/var/lib/postgresql/data\n  rag_api:\n    container_name: rag_api\n    image: registry.librechat.ai/librechat-ai/librechat-rag-api-dev-lite:latest\n    environment:\n      - DB_HOST=vectordb\n      - RAG_PORT=${RAG_PORT:-8000}\n    restart: always\n    depends_on:\n      - vectordb\n    env_file:\n      - .env\n\nvolumes:\n  pgdata2:\n  librechat-data:\n",
      "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml",
      "validation_status": "config_ok"
    },
    {
      "order": 3,
      "kind": "shell",
      "language": "bash",
      "label": "Download .env next to the compose file",
      "body": "curl -fsSL https://raw.githubusercontent.com/LibreChat-AI/LibreChat/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example -o .env",
      "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/.env.example",
      "validation_status": "unvalidated"
    },
    {
      "order": 4,
      "kind": "note",
      "language": "text",
      "label": "What the compose file check ran with",
      "body": "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.",
      "source_url": "https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 5,
      "kind": "shell",
      "language": "bash",
      "label": "Start it",
      "body": "docker compose up -d",
      "source_url": "https://github.com/LibreChat-AI/docs/blob/48f78d1489e1db5a839af14de6b4dd101cbefc3f/content/docs/local/docker.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 6,
      "kind": "verify",
      "language": "text",
      "label": "Open the app",
      "body": "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.",
      "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml",
      "validation_status": "unvalidated"
    }
  ],
  "notes": [
    {
      "kind": "gotcha",
      "title": "Some images use the latest tag or no tag",
      "body": "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_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file publishes host ports",
      "body": "Host ports: 3000 (admin-panel). A port without a host address listens on all host network interfaces.",
      "source_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file mounts host folders",
      "body": "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_url": "https://github.com/LibreChat-AI/LibreChat/blob/eac18f465667f5b8b463f2a9dfa2af1271e40a1b/docker-compose.yml",
      "checked_at": "2026-10-22"
    }
  ],
  "signals": {
    "captured_at": "2026-10-22",
    "stars": 46140,
    "forks": 9482,
    "open_issues": 989,
    "last_push": "2026-10-22",
    "days_since_push": 0,
    "latest_release": null,
    "latest_release_date": null,
    "days_since_release": null
  },
  "links": {
    "html": "https://openlogs.fyi/tools/librechat",
    "markdown": "https://openlogs.fyi/tools/librechat.md",
    "json": "https://openlogs.fyi/tools/librechat.json"
  },
  "updated_at": "2026-10-22"
}
