yash@jain:~$

../ yash@jain:~$ cat /archive/self-hosted-console-shootout.md

buildServers & self-hosting

Three chat consoles look identical in a screenshot. Only two survived my VPS.

Open WebUI, LibreChat and AnythingLLM all promise the same thing — one tidy window onto your AI. I ran all three on the same server, and the screenshots turned out to be the only place they were interchangeable.

Open a screenshot gallery and the three of them look like the same product wearing different colour schemes. A sidebar. A chat pane. A little paperclip. Every one of them advertises “self-hosted AI workspace,” and every one of them is telling the truth.

Then you install them on one rented server and the resemblance evaporates.

Everything lives or dies on the RAM bill. My VPS had about 2.2 GB genuinely free — and that’s the honest number, not the one the system prints next to the word “free.” Open WebUI was already sitting on roughly 1.51 GB of it as a plain host process. AnythingLLM was running as two separate containers eating 380 MB and 303 MB. LibreChat arrived with a small crowd behind it — five containers in total, because a chat window apparently needs its own database and search engine to feel complete. On a box this size, “just run another one” is a real decision with a real cost, not a shrug.

Open WebUI is the front door. It’s the one your team actually opens. It does knowledge bases better than either of the others — folders of documents a model can answer from, with a browsing mode that lets it list and read files inside them. It also turned out to be the easiest place to bolt on tools. When I finally switched tool-calling to its native mode — instead of the older trick of politely asking the model in the prompt — reliability jumped more than any other single change I made. Prompt-level tool use is a request. Native tool use is a capability. That difference is invisible until it fails in front of someone who needed an answer.

LibreChat is the back room. It’s worse as a friendly chat surface and much better as something you drive from elsewhere. Its administration is a real interface rather than a folder of config files, it lets you attach tools per agent instead of globally, and you can add a new tool server through the browser without restarting anything. It’s also the only one that gave me a memory store updating on every message — small, cheap, genuinely useful for remembering who it’s talking to. None of that shows up in a screenshot. All of it shows up on week three.

AnythingLLM was the third wheel. It’s a competent document question-and-answer tool. It is not a workspace. It has no document editing, no browser, no file management — the three things that turn a chatbot into somewhere you actually work. I’d spent weeks on it before admitting that. The day I pulled it out, both of its containers stopped cleanly, the leftover duplicate instance went with them, and the server quietly got back roughly 680 MB of RAM and 5 GB of disk. Nothing broke. Nothing was missed. That’s the tell.

The redundancy tax is the real lesson. Three overlapping front-ends means three sets of updates, three sets of backups, three places for a stale login to hide, and three times the memory bill for one person’s chat. I paid it for months without noticing, because each install looked harmless on its own. Overlap doesn’t announce itself as waste. It arrives as one more thing that “probably should be running.”

SMB Applicability Score: Open WebUI 5/5 — the front door, and the one to start with. LibreChat 4/5 — worth the container count only if you plan to drive it programmatically. AnythingLLM 2/5 — fine as a document Q&A box, redundant the moment you own a real workspace.

Pick the two you need. Delete the third. Your server will thank you in memory.

Related reading

← cd /archive