Proposal: migrate the chat frontend from Open WebUI to LibreChat (test instance live) #23

Open
opened 2026-10-18 14:34:41 +00:00 by inference-bot · 2 comments
Owner

Proposal: migrate the chat frontend from Open WebUI to LibreChat

Background

Open WebUI has served us well since launch, but its license now constrains us
in ways that conflict with who we are. Since v0.6.6 (April 2025), Open WebUI
ships under a custom license with a branding-protection clause: the "Open
WebUI" name, logo, and interface identifiers may not be altered or replaced
except under three exemptions — deployments with ≤50 users (rolling 30 days),
written permission from Open WebUI Inc., or a paid enterprise license.

We recently crossed the point where this matters:

  • We are a co-op. Our whole identity is putting our own name and mark on
    member-facing infrastructure. Under the OWUI license, our own PWA name and
    icon on members' phones are, strictly, Open WebUI branding that we may not
    change. We asked Open WebUI for written permission; an enterprise license
    is not something our budget can carry.
  • The exemption is lapsing. We're at ~41 registered members (39 active in
    the last 30 days). Crossing 50 members puts us formally out of compliance
    for the branding we want — and per Open WebUI's own published guidance,
    even recoloring the interface toward our identity is restricted without
    their enterprise tier.
  • It's a shame: Open WebUI is good software, and we'd rather not leave it
    over branding. But a member-governed co-op should be able to put its own
    name on its own service.

The test instance

We've stood up a fully configured LibreChat sandbox:

https://librechat-test.inference.coop — log in with your co-op account
(Cloudron SSO works natively). LibreChat is MIT-licensed: no branding
clause, no co-branding restrictions, our name and mark on everything, at any
scale, forever.

What's already wired up and verified on the sandbox (against our actual
gateway, not a demo):

Capability Status
All 11 gateway models, member-key billing per usage ✅ verified — usage bills to each member's own budget
Cloudron SSO (single sign-on, no separate password) ✅ working
Co-op branding (name, logo, PWA icon, cream/green theme, dark + light) ✅ applied
Web search (our self-hosted SearXNG, with citations) ✅ working
File upload + RAG document chat ✅ working (pgvector + our gateway embeddings)
MCP servers (opt-in, per conversation) ✅ supported natively
Co-op docs as an opt-in MCP tool (search_docs) ✅ shipped — search the co-op documentation on request
Speech (STT/TTS) via our gateway, works in Firefox ⚙️ configured — server-side transcription/voice through Tinfoil (TEE), needs a one-time engine pick in Settings → Speech
Message search (MeiliSearch) ✅ included
Image generation (qwen-image) ⚙️ partial — model excluded from picker pending the images feature wiring

Please poke at it — especially the parts you use daily on the current chat.

Comparison

General features

Open WebUI (current) LibreChat (proposed)
License Custom (branding clause) MIT
Models via our gateway ✅ ✅
SSO via co-op account ✅ ✅ (OIDC, same flow)
Web search, self-hosted ✅ SearXNG ✅ SearXNG
File upload + RAG chat ✅ (unstructured pipeline) ✅ (RAG API sidecar)
Message search ✅ (built-in DB search) ✅ (MeiliSearch — faster, typo-tolerant)
Multi-model chats (compare side-by-side) ⚠️ limited ✅ native
Artifacts / code runner / agents ✅ ✅ (agents, code interpreter, artifacts)
MCP tool servers ✅ (admin-managed) ✅ (admin + per-user, OAuth flow supported)
PWA (installable on phones) ✅ ✅
Voice mode ✅ (browser + server STT/TTS) ✅ (browser + server STT/TTS)
Presets / per-model parameter UI ✅ ✅ (presets + model specs)

Our co-op's specific needs and values

Need Open WebUI LibreChat
Our name and logo on the service (PWA, login, header) ❌ restricted by license; at >50 users requires permission or an enterprise license we can't afford ✅ unconditional (MIT)
License alignment with co-op values Custom license with branding restrictions; the FAQ explicitly forbids co-branding and recoloring toward your own identity MIT — permissive, foundation-compatible
Per-member billing on usage ✅ (our portal injects member keys invisibly) ✅ (member keys auto-provisioned at SSO login via our portal; usage bills to each member's own budget)
Privacy posture Our stack already routes through TEE (Tinfoil); unchanged either way Same — the frontend never touches plaintext; the gateway and TEE inference are identical
Self-hosting / no external dependencies ✅ fully self-hosted ✅ fully self-hosted (MongoDB + Postgres + MeiliSearch + RAG API, all in the Cloudron package)
Governance fit (our name, our rules) The license is a standing dependency on one vendor's goodwill No vendor constraints; upstream is community-governed
The docs knowledge base Currently auto-attached to every conversation (silent RAG — some members found this intrusive) Opt-in: the co-op docs ship as an MCP tool members enable per conversation — deliberate, not ambient
Accessibility of voice for Firefox users Browser STT only → the same Web Speech API gap applies Server STT configured → works in Firefox

Migration costs (the honest column)

  • Chat history does not migrate automatically. Existing conversations
    stay readable on the current chat (we'd keep it up as a read-only archive
    during a transition window), but starting fresh on LibreChat means new
    conversations start there. We can export OWUI history to JSON for personal
    import; a polished automatic migration is not guaranteed.
  • Voice mode needs final testing on the LibreChat side (the gateway
    endpoints work; the UI wiring is configured but member-tested).
  • The silent docs-RAG behavior goes away by design — replaced by the
    opt-in docs MCP tool. Members who liked ambient doc lookup will need to
    enable the tool (once, then it persists per conversation type).
  • Small UX differences: LibreChat's model picker, preset system, and
    settings layout differ from OWUI. Members will need a short adjustment
    period (the test instance is the place to form an opinion).

What we'd propose

  1. Test period (now → [date]): members try the sandbox, especially for
    their daily workflows, and report in this thread.
  2. Decision: based on feedback, decide whether to adopt LibreChat for
    the co-op chat at chat.inference.coop.
  3. If adopted: keep the current chat as a read-only archive for a
    transition window, migrate member keys (automatic at first SSO login on
    the new frontend), and sunset the old frontend after an agreed period.

Open questions for members

  • What do you use the chat for that we should test specifically? (RAG on
    your documents? Voice? Multi-model comparison? MCP tools?)
  • Does the fresh-start on conversations matter to you, or is history you can
    archive-and-read enough?
  • Anything in the LibreChat UX that blocks your daily work?

This proposal was prepared by the stewarding bot at the general manager's
request. The comparison reflects hands-on testing against the co-op's
production gateway (2026-10-18), not vendor documentation. The test instance
runs LibreChat 0.8.8 (MIT) with the co-op's SSO, gateway, and billing
integration.

# Proposal: migrate the chat frontend from Open WebUI to LibreChat ## Background Open WebUI has served us well since launch, but its license now constrains us in ways that conflict with who we are. Since v0.6.6 (April 2025), Open WebUI ships under a custom license with a branding-protection clause: the "Open WebUI" name, logo, and interface identifiers may not be altered or replaced except under three exemptions — deployments with ≤50 users (rolling 30 days), written permission from Open WebUI Inc., or a paid enterprise license. We recently crossed the point where this matters: - **We are a co-op.** Our whole identity is putting our own name and mark on member-facing infrastructure. Under the OWUI license, our own PWA name and icon on members' phones are, strictly, Open WebUI branding that we may not change. We asked Open WebUI for written permission; an enterprise license is not something our budget can carry. - **The exemption is lapsing.** We're at ~41 registered members (39 active in the last 30 days). Crossing 50 members puts us formally out of compliance for the branding we want — and per Open WebUI's own published guidance, even recoloring the interface toward our identity is restricted without their enterprise tier. - **It's a shame**: Open WebUI is good software, and we'd rather not leave it over branding. But a member-governed co-op should be able to put its own name on its own service. ## The test instance We've stood up a **fully configured LibreChat sandbox**: **https://librechat-test.inference.coop** — log in with your co-op account (Cloudron SSO works natively). LibreChat is **MIT-licensed**: no branding clause, no co-branding restrictions, our name and mark on everything, at any scale, forever. What's already wired up and verified on the sandbox (against our actual gateway, not a demo): | Capability | Status | |---|---| | All 11 gateway models, member-key billing per usage | ✅ verified — usage bills to each member's own budget | | Cloudron SSO (single sign-on, no separate password) | ✅ working | | Co-op branding (name, logo, PWA icon, cream/green theme, dark + light) | ✅ applied | | Web search (our self-hosted SearXNG, with citations) | ✅ working | | File upload + RAG document chat | ✅ working (pgvector + our gateway embeddings) | | MCP servers (opt-in, per conversation) | ✅ supported natively | | **Co-op docs as an opt-in MCP tool** (`search_docs`) | ✅ shipped — search the co-op documentation on request | | Speech (STT/TTS) via our gateway, **works in Firefox** | ⚙️ configured — server-side transcription/voice through Tinfoil (TEE), needs a one-time engine pick in Settings → Speech | | Message search (MeiliSearch) | ✅ included | | Image generation (qwen-image) | ⚙️ partial — model excluded from picker pending the images feature wiring | Please poke at it — especially the parts you use daily on the current chat. ## Comparison ### General features | | Open WebUI (current) | LibreChat (proposed) | |---|---|---| | License | Custom (branding clause) | MIT | | Models via our gateway | ✅ | ✅ | | SSO via co-op account | ✅ | ✅ (OIDC, same flow) | | Web search, self-hosted | ✅ SearXNG | ✅ SearXNG | | File upload + RAG chat | ✅ (unstructured pipeline) | ✅ (RAG API sidecar) | | Message search | ✅ (built-in DB search) | ✅ (MeiliSearch — faster, typo-tolerant) | | Multi-model chats (compare side-by-side) | ⚠️ limited | ✅ native | | Artifacts / code runner / agents | ✅ | ✅ (agents, code interpreter, artifacts) | | MCP tool servers | ✅ (admin-managed) | ✅ (admin + per-user, OAuth flow supported) | | PWA (installable on phones) | ✅ | ✅ | | Voice mode | ✅ (browser + server STT/TTS) | ✅ (browser + server STT/TTS) | | Presets / per-model parameter UI | ✅ | ✅ (presets + model specs) | ### Our co-op's specific needs and values | Need | Open WebUI | LibreChat | |---|---|---| | Our name and logo on the service (PWA, login, header) | ❌ restricted by license; at >50 users requires permission or an enterprise license we can't afford | ✅ unconditional (MIT) | | License alignment with co-op values | Custom license with branding restrictions; the FAQ explicitly forbids co-branding and recoloring toward your own identity | MIT — permissive, foundation-compatible | | Per-member billing on usage | ✅ (our portal injects member keys invisibly) | ✅ (member keys auto-provisioned at SSO login via our portal; usage bills to each member's own budget) | | Privacy posture | Our stack already routes through TEE (Tinfoil); unchanged either way | Same — the frontend never touches plaintext; the gateway and TEE inference are identical | | Self-hosting / no external dependencies | ✅ fully self-hosted | ✅ fully self-hosted (MongoDB + Postgres + MeiliSearch + RAG API, all in the Cloudron package) | | Governance fit (our name, our rules) | The license is a standing dependency on one vendor's goodwill | No vendor constraints; upstream is community-governed | | The docs knowledge base | Currently auto-attached to every conversation (silent RAG — some members found this intrusive) | **Opt-in**: the co-op docs ship as an MCP tool members enable per conversation — deliberate, not ambient | | Accessibility of voice for Firefox users | Browser STT only → the same Web Speech API gap applies | Server STT configured → works in Firefox | ### Migration costs (the honest column) - **Chat history does not migrate automatically.** Existing conversations stay readable on the current chat (we'd keep it up as a read-only archive during a transition window), but starting fresh on LibreChat means new conversations start there. We can export OWUI history to JSON for personal import; a polished automatic migration is not guaranteed. - **Voice mode** needs final testing on the LibreChat side (the gateway endpoints work; the UI wiring is configured but member-tested). - **The silent docs-RAG behavior goes away by design** — replaced by the opt-in docs MCP tool. Members who liked ambient doc lookup will need to enable the tool (once, then it persists per conversation type). - **Small UX differences**: LibreChat's model picker, preset system, and settings layout differ from OWUI. Members will need a short adjustment period (the test instance is the place to form an opinion). ## What we'd propose 1. **Test period (now → [date])**: members try the sandbox, especially for their daily workflows, and report in this thread. 2. **Decision**: based on feedback, decide whether to adopt LibreChat for the co-op chat at chat.inference.coop. 3. **If adopted**: keep the current chat as a read-only archive for a transition window, migrate member keys (automatic at first SSO login on the new frontend), and sunset the old frontend after an agreed period. ## Open questions for members - What do you use the chat for that we should test specifically? (RAG on your documents? Voice? Multi-model comparison? MCP tools?) - Does the fresh-start on conversations matter to you, or is history you can archive-and-read enough? - Anything in the LibreChat UX that blocks your daily work? --- *This proposal was prepared by the stewarding bot at the general manager's request. The comparison reflects hands-on testing against the co-op's production gateway (2026-10-18), not vendor documentation. The test instance runs LibreChat 0.8.8 (MIT) with the co-op's SSO, gateway, and billing integration.*
Author
Owner

Assessment of the three concerns

Good catches — here's what we verified against the actual 0.8.8 build on the
test instance (not the docs, which lag behind this version).

1. Generic system prompt (custom instructions)

Partially correct. LibreChat ships per-user Custom Instructions (the
ChatGPT-style global system-prompt suffix that applies to every conversation)
— it's present in the build and doesn't require agents. That covers the
"generic extension" use case.

What you can't do in 0.8.8 is set a deployment-wide system prompt from
the admin config the way Open WebUI's model "system prompt" field works per
model. Workarounds, in order of preference:

  • Members set their own Custom Instructions (per-user, applies everywhere).
  • Model Specs support per-spec preset.promptPrefix — we can bake co-op
    defaults (e.g. "You are the Inference Cooperative assistant...") into the
    model specs so every model carries a base prompt without agents.
  • Agents remain the full-featured option (system prompt + tools + files).

2. SVG / HTML rendering

Mermaid renders inline ✓. For SVG and HTML you're right that the good
experience is the artifact panel — but it is not agents-only.
The
"Open as artifact" action is present in this build and triggers client-side
whenever a response contains an SVG/HTML/React code block, regardless of
endpoint. The nuance vs Open WebUI: OWUI renders SVG/HTML inline in the chat
flow; LibreChat opens them in a side panel (artifacts). Same capability,
slightly different presentation.

3. Image generation

Mostly correct for the UI today, but the path exists. Verified directly
against our gateway: regolo/qwen-image works through the OpenAI
images-generations endpoint (returns images, 200). LibreChat 0.8.8's native
image-generation surface is the agent image-gen tool (which can call that
same endpoint), and the older standalone DALL-E-style integration for
non-agent endpoints still exists in the codebase but is thinly documented in
this version. Realistic outcome: image generation on LibreChat is a
one-click tool inside a conversation with an agent, rather than picking
"qwen-image" from the model picker like on Open WebUI. We'll test exactly
how that feels with the Regolo model and report here.

Summary

Concern Verdict
Generic system prompt Available per-user (Custom Instructions); deployment-wide defaults via model-spec presets; agents optional
Mermaid inline ✅ works
SVG/HTML ✅ via artifacts panel (side panel, not inline) — any endpoint
Image generation ⚙️ via agent tool calling our gateway (verified working); not a model-picker entry

None of these are blockers, but #3 is a real UX difference from Open WebUI —
please weigh in if image generation is central to your workflow, and we'll
make sure the agent setup makes it frictionless before any decision.

## Assessment of the three concerns Good catches — here's what we verified against the actual 0.8.8 build on the test instance (not the docs, which lag behind this version). ### 1. Generic system prompt (custom instructions) **Partially correct.** LibreChat ships per-user **Custom Instructions** (the ChatGPT-style global system-prompt suffix that applies to every conversation) — it's present in the build and doesn't require agents. That covers the "generic extension" use case. What you *can't* do in 0.8.8 is set a **deployment-wide system prompt** from the admin config the way Open WebUI's model "system prompt" field works per model. Workarounds, in order of preference: - Members set their own Custom Instructions (per-user, applies everywhere). - Model Specs support per-spec `preset.promptPrefix` — we can bake co-op defaults (e.g. "You are the Inference Cooperative assistant...") into the model specs so every model carries a base prompt without agents. - Agents remain the full-featured option (system prompt + tools + files). ### 2. SVG / HTML rendering **Mermaid renders inline ✓. For SVG and HTML you're right that the good experience is the artifact panel — but it is not agents-only.** The "Open as artifact" action is present in this build and triggers client-side whenever a response contains an SVG/HTML/React code block, regardless of endpoint. The nuance vs Open WebUI: OWUI renders SVG/HTML inline in the chat flow; LibreChat opens them in a side panel (artifacts). Same capability, slightly different presentation. ### 3. Image generation **Mostly correct for the UI today, but the path exists.** Verified directly against our gateway: `regolo/qwen-image` works through the OpenAI images-generations endpoint (returns images, 200). LibreChat 0.8.8's native image-generation surface is the agent **image-gen tool** (which can call that same endpoint), and the older standalone DALL-E-style integration for non-agent endpoints still exists in the codebase but is thinly documented in this version. Realistic outcome: image generation on LibreChat is a one-click tool inside a conversation with an agent, rather than picking "qwen-image" from the model picker like on Open WebUI. We'll test exactly how that feels with the Regolo model and report here. ### Summary | Concern | Verdict | |---|---| | Generic system prompt | Available per-user (Custom Instructions); deployment-wide defaults via model-spec presets; agents optional | | Mermaid inline | ✅ works | | SVG/HTML | ✅ via artifacts panel (side panel, not inline) — any endpoint | | Image generation | ⚙️ via agent tool calling our gateway (verified working); not a model-picker entry | None of these are blockers, but #3 is a real UX difference from Open WebUI — please weigh in if image generation is central to your workflow, and we'll make sure the agent setup makes it frictionless before any decision.

We now have a working system that hacks LibreChat's MCP system to enable easy access to image generation in ordinary chats. Just choose inference-image from the MCP Servers drop-down.

Still doing some tweaking, but the basic flow seems to be working, which is really exciting.

We now have a working system that hacks LibreChat's MCP system to enable easy access to image generation in ordinary chats. Just choose `inference-image` from the MCP Servers drop-down. Still doing some tweaking, but the basic flow seems to be working, which is really exciting.
Sign in to join this conversation.
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: co-op/support#23