Why I needed one

The team had drifted into a familiar mess. Some people used a hosted chat product on personal accounts, some pasted keys into desktop apps, and nobody could say which model had seen which piece of customer code. I wanted one place to chat with models, with company sign-in, a choice of local or hosted models, and logs I control.

Open WebUI was the obvious first candidate because it already sat in my homelab in front of Ollama. The question was whether it would survive contact with people who are not me.

What I tested

  • Deployment with Docker Compose on a single VM, behind a reverse proxy with TLS.
  • Sign-in through the company's OIDC provider, with new users landing in a pending state until approved.
  • Local models served by Ollama on a separate GPU box, plus two OpenAI-compatible hosted APIs.
  • Document upload and retrieval against internal runbooks.
  • Upgrades: three releases applied during the trial, each with a database backup first.

I did not test the voice features, image generation, or the plugin system beyond reading the code of two community functions.

What held up

Model switching is the killer feature. Being able to ask the same question to a local model and a hosted one in the same thread changed how people used it. Within a week the team was routing routine questions to the local model and saving the hosted ones for long-context work, without me writing a policy.

Admin controls are good enough. Groups, per-model permissions and the pending-user state covered what a small team needs. I could hide expensive models from everyone except the two people who needed them.

Upgrades were boring, which is the highest praise I give infrastructure. Pull the image, restart, check the logs.

What didn't

Retrieval is a starting point, not an answer. Document chat worked for short, well-structured runbooks and fell apart on long design documents. Tuning chunk size helped; the defaults are tuned for demos.

The settings surface is huge. Some options live in the admin panel, some in environment variables, and a few in both, where the environment variable only applies on first start. I lost an afternoon to that.

The licence changed under the project's users. Earlier releases were plainly BSD-3. Newer ones add a requirement to keep the Open WebUI branding unless you meet certain conditions. For an internal tool that is fine. If you planned to ship it to clients under your own name, read it carefully first.

How it compares

I ran each alternative for at least a few days on the same VM, with the same models and the same sign-in provider where it was supported.

Self-hosted chat front ends, as tested in October 2026. On a narrow screen, scroll the table sideways.
Tool Licence Cost Company sign-in Local models Document chat Setup effort My verdict
Open WebUI Open WebUI License (BSD-3 plus branding clause) Free, self-hosted Yes, OIDC Yes, Ollama built in Yes, needs tuning One container Run it
LibreChat MIT Free, self-hosted Yes, OIDC and others Yes, via custom endpoints Partial, separate RAG service Several containers, YAML config Try it
AnythingLLM MIT Free, self-hosted; paid hosted plans Limited in my testing Yes Yes, its main focus One container or desktop app Try it
LobeChat LobeHub Community License Free, self-hosted; paid hosted plans Partial, server-database mode only Yes Partial, server-database mode only Simple alone, more parts for multi-user Skip

"Skip" for LobeChat means skip for this job: a shared team tool behind company sign-in. As a personal chat app it is polished.

Verdict

If you already run models yourself and want one place for a team to use them, run Open WebUI. Put it behind your own sign-in, pin the image version, back up the database before every upgrade, and set expectations about document chat.

If the licence's branding clause is a problem for you, LibreChat is the closest MIT-licensed alternative, at the price of more moving parts.

Questions or corrections? Email me. I update reviews when a project changes something that affects the verdict.

Back to all posts