Open-source, multi-provider AI chat platform unifying OpenAI, Anthropic, Google, Azure, and local models behind one UI, with agents, RAG, code interpreter, and MCP tool support.
ChatGPT / yr$240
Self-hosted / yr~$55
You keep$185/yr
Key facts
CategoryAI Chat Interfaces
LicenseMIT
StackTypeScript, React, Node.js, MongoDB
Min RAM2048 MB
Dockeryes
Difficulty3 / 5
Our recommendation
Choose LibreChat when you want one chat UI in front of many providers — OpenAI, Anthropic, Google, Azure, and local models — with agents, RAG, a code interpreter, and MCP tools built in. It's the most feature-complete option here and cleanly MIT-licensed, at the cost of being the fiddliest to stand up: it wants MongoDB and a stack of `.env` keys. If you only need a clean front end for one local backend, Open WebUI is far less to wire.
What you need
Any VPS with at least 2048 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
About an afternoon — budget time for troubleshooting
Install with Docker Compose
Save this as compose.yml and run docker compose up -d:
# LibreChat — official Docker Compose setupgit clone https://github.com/danny-avila/LibreChat.gitcd LibreChatcp .env.example .env# add your provider API keys to .env, then:docker compose up -d # → http://SERVER_IP:3080
LibreChat's breadth is the draw and the catch — every provider it unifies is one more thing to configure and keep honest:
non-negotiableIt's a real stack, not a single container. LibreChat needs MongoDB alongside it (and a vector store if you want RAG) — budget the 2 GB minimum for the app plus a database to back up, not a one-file deploy.
non-negotiableConfiguration is the work. Multi-provider means a .env full of API keys and a librechat.yaml to shape which models and tools appear — powerful, but plan an evening to wire it correctly the first time.
non-negotiableHosted providers aren't free or private. Point it at OpenAI or Anthropic and you're back to per-token bills and prompts leaving your box — the privacy and cost win only lands when you route it to a local backend.