mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-06 10:58:17 -05:00
[GH-ISSUE #16409] feat: Simplify tools and functionality ecosystem #33423
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Hegghammer on GitHub (Aug 9, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/16409
Check Existing Issues
Problem Description
Open WebUI is a fantastic tool -- huge thanks to everyone who has helped build it.
But the ecosystem of functionalities and extensions has grown to become quite complicated. I'm not a developer, but I am not completely lost behind a computer either, and it has taken me weeks to wrap my head around the various concepts and functionalities and their location in the settings. The documentation helps, but it is often on the abstract side, and its structure doesn't quite match what one experiences in the UI.
For my own records, I tried to write up a plain language overview of this ecosystem, from the point of view of a non-expert user who just wants to use LLMs and plug in various extra functionalities. It looks something like this:
Capabilities are functionalities that are built in to Open WebUI and that models can call if they so decide.
Admin Panel > Settings > Web Search, Upload is inAdmin Panel > Settings > Documents, and Code execution is inAdmin Panel > Settings > Code execution.Workspace > Models > MODEL > Capabilities.Tools are functionalities that the user imports to OpenWebUI (typically from Open WebUI Community) and that models can call if they so decide.
Workspace > Tools. Here you can tune them (through "Valves") and toggle them on or off globally.Workspace > Models > MODEL > ToolsAdmin panel > Settings > ToolsandSettings > Tools-- but these are not for tools, but for tool servers, which is something different.Tool servers are functionalities made available to the models from services that run outside of Open WebUI and are accessible via API; for example, a RAG server or a Filesystem server.
Admin panel > Settings > Tools(for systemwide ones) and inSettings > Toolsfor user-specific ones.Functions is an umbrella term for three rather different things: Actions, Filters, and Pipes.
Admin panel > FunctionsWorkspace > Models > MODEL > FiltersWorkspace > Models > MODEL > ActionsPipelines are preconfigured sequences of steps that process the input and/or the output in some way. This is a more advanced functionality that I personally haven't used yet.
Admin panel > Settings > PipelinesPhew. And this is without discussing Knowledge and other features.
There are several sources of confusion here:
Admin Panel > functions. Meanwhile, "Valves" are conceptually a further level down insofar as they are effectively settings for individual functions. As well as for tools.I could go on. The whole thing is rather confusing and would benefit from a general overhaul. The complexity probably deters quite a few amateur users. I am not saying that the UI should be minimalist -- customizability is half the attraction -- but it could be more logical and intuitive than it is today.
Desired Solution you'd like
I don't have a clear idea of how to fix it, because I don't know enough about about the history of the project. I realise that there are probably good reasons why things are the way they are today, but I would urge the developers to look for ways to simplify things going forward.
As I see it, there are three main problems to solve:
On item 1, I think it would help to have labels/names that reflect what the various features do for the user rather than how they work on the back end. For example, "capabilities", "tools" and "tool servers" could be aggregated to "tools" (just subcategorize them as internal, imported, and server-based) since they correspond, in terms of functionality, to what most people understand by that concept in an LLM context. Conversely, "functions" should be disaggregated, since filters, actions and pipes do very different things for the user. Solutions to items 2 and 3 will flow from decisions made on item 1.
Alternatives Considered
No response
Additional Context
No response