Pipelines: Versatile, UI-Agnostic OpenAI-Compatible Plugin Framework
  • Python 83.2%
  • Shell 11.7%
  • Dockerfile 4.9%
  • Batchfile 0.2%
Find a file
Tim Baek c7121bd904
Merge pull request #614 from Classic298/deprecate-pipelines
docs: mark Pipelines as deprecated and point to Functions
2026-10-30 07:51:57 +09:00
.github Merge branch 'main' into add-minimum-docker-build 2024-10-23 19:32:17 +08:00
blueprints Fix errors in function calling blueprint, reload function, and URL conversion 2024-12-06 17:33:44 -07:00
docs move picture for docs in to docs 2024-10-18 20:01:01 +08:00
examples Merge pull request #544 from minijeong-log/main 2025-08-19 03:05:01 +04:00
pipelines refac 2024-05-30 22:28:31 -07:00
utils/pipelines refac: enforce api on all routes 2024-11-21 20:38:50 -08:00
.dockerignore add minimum image type 2024-10-18 20:10:17 +08:00
.gitignore Working DataDog pipeline 2024-06-13 10:37:00 -07:00
config.py fix(undefined-const): hotfix for missing constants; hazarding guess from context but breaks build 2025-04-12 17:16:39 -05:00
CONTRIBUTING.md Add repo meta files 2024-05-31 22:14:39 -04:00
dev-docker.sh Made env vars more generic, added Ollama port to dev-docker.sh 2024-08-11 22:36:51 -06:00
dev.sh init 2024-05-21 14:02:44 -07:00
docker-compose.yaml Add docker-compose installation guide. 2024-12-02 22:07:08 +01:00
Dockerfile Fix write permissions for arbitrary UID 2025-08-17 23:11:35 +02:00
LICENSE Create LICENSE 2024-05-30 21:20:03 -07:00
main.py refac 2025-04-13 22:15:19 -07:00
README.md docs: mark Pipelines as deprecated and point to Functions 2026-10-29 23:46:41 +01:00
requirements-minimum.txt add minimum image type 2024-10-18 20:10:17 +08:00
requirements.txt Add filter example of message monitoring using Opik 2025-03-13 17:46:51 +01:00
schemas.py schemas.py fix to support image input with latest open webui version 2024-07-23 15:37:20 +03:00
start.bat Added start.bat file for Windows 2024-05-24 16:46:23 -04:00
start.sh Renamed UV_LOOP to UVICORN_LOOP 2025-04-14 18:23:44 +02:00

⚠️ DEPRECATED: Pipelines is no longer maintained

Caution

Do not use Pipelines, not for new setups and not for existing ones.

This repository is archived and read-only. There will be no new releases, no bug fixes and no security fixes, and the ghcr.io/open-webui/pipelines images will not be updated again. Issues, pull requests and vulnerability reports for Pipelines are not accepted. If you still run a Pipelines server, move off it.

Use Functions instead

Everything Pipelines was used for is now built into Open WebUI itself. There is no separate server to deploy, connect, update or secure, and there is no use case left that needs a Pipelines server.

You used Pipelines for Use this instead
A custom model, agent or provider integration (pipe pipelines) Pipe Functions
Changing messages before or after the model, such as rate limits, monitoring, translation or moderation (filter pipelines) Filter Functions
Adding a provider like OpenAI, Anthropic, Mistral, Groq or DeepSeek A plain OpenAI-compatible connection, no plugin needed
Running heavy work (large models, long jobs) away from the Open WebUI server Run it as your own service and call it from a Pipe Function, or expose it as an OpenAPI Tool Server or MCP server
Giving the model tools to call Tools
Using your pipelines from other OpenAI API clients Pipe Functions show up as regular models, so other clients reach them through the Open WebUI API

Start with the Functions overview and the guide to installing your first Function. Ready-made Functions are published on openwebui.com.

Warning

Functions run arbitrary Python code on your Open WebUI server. Only install Functions from sources you trust and read the code before you import it.


Everything below is the original README, kept for reference only. Do not follow it.

Pipelines Logo

Pipelines: UI-Agnostic OpenAI API Plugin Framework

Welcome to Pipelines, an Open WebUI initiative. Pipelines bring modular, customizable workflows to any UI client supporting OpenAI API specs – and much more! Easily extend functionalities, integrate unique logic, and create dynamic workflows with just a few lines of code.

🚀 Why Choose Pipelines?

  • Limitless Possibilities: Easily add custom logic and integrate Python libraries, from AI agents to home automation APIs.
  • Seamless Integration: Compatible with any UI/client supporting OpenAI API specs. (Only pipe-type pipelines are supported; filter types require clients with Pipelines support.)
  • Custom Hooks: Build and integrate custom pipelines.

Examples of What You Can Achieve:

🔧 How It Works

Pipelines Workflow

Integrating Pipelines with any OpenAI API-compatible UI client is simple. Launch your Pipelines instance and set the OpenAI URL on your client to the Pipelines URL. That's it! You're ready to leverage any Python library for your needs.

⚡ Quick Start with Docker

Warning

Pipelines are a plugin system with arbitrary code execution — don't fetch random pipelines from sources you don't trust.

Docker

For a streamlined setup using Docker:

  1. Run the Pipelines container:

    docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -v pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
    
  2. Connect to Open WebUI:

    • Navigate to the Settings > Connections > OpenAI API section in Open WebUI.
    • Set the API URL to http://localhost:9099 and the API key to 0p3n-w3bu!. Your pipelines should now be active.

Note

If your Open WebUI is running in a Docker container, replace localhost with host.docker.internal in the API URL.

  1. Manage Configurations:

    • In the admin panel, go to Admin Settings > Pipelines tab.
    • Select your desired pipeline and modify the valve values directly from the WebUI.

Tip

If you are unable to connect, it is most likely a Docker networking issue. We encourage you to troubleshoot on your own and share your methods and solutions in the discussions forum.

If you need to install a custom pipeline with additional dependencies:

  • Run the following command:

    docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -e PIPELINES_URLS="https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py" -v pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
    

Alternatively, you can directly install pipelines from the admin settings by copying and pasting the pipeline URL, provided it doesn't have additional dependencies.

That's it! You're now ready to build customizable AI integrations effortlessly with Pipelines. Enjoy!

Docker Compose together with Open WebUI

Using Docker Compose simplifies the management of multi-container Docker applications.

Here is an example configuration file docker-compose.yaml for setting up Open WebUI together with Pipelines using Docker Compose:

services:
  openwebui:
      image: ghcr.io/open-webui/open-webui:main
      ports:
        - "3000:8080"
      volumes:
        - open-webui:/app/backend/data

  pipelines:
      image: ghcr.io/open-webui/pipelines:main
      volumes:
        - pipelines:/app/pipelines
      restart: always
      environment:
        - PIPELINES_API_KEY=0p3n-w3bu!

volumes:
  open-webui: {}
  pipelines: {}

To start your services, run the following command:

docker compose up -d

You can then use http://pipelines:9099 (the name is the same as the service's name defined in docker-compose.yaml) as an API URL to connect to Open WebUI.

Note

The pipelines service is accessible only by openwebui Docker service and thus provide additional layer of security.

📦 Installation and Setup

Get started with Pipelines in a few easy steps:

  1. Ensure Python 3.11 is installed.

  2. Clone the Pipelines repository:

    git clone https://github.com/open-webui/pipelines.git
    cd pipelines
    
  3. Install the required dependencies:

    pip install -r requirements.txt
    
  4. Start the Pipelines server:

    sh ./start.sh
    

Once the server is running, set the OpenAI URL on your client to the Pipelines URL. This unlocks the full capabilities of Pipelines, integrating any Python library and creating custom workflows tailored to your needs.

Advanced Docker Builds

If you create your own pipelines, you can install them when the Docker image is built. For example, create a bash script with the snippet below to collect files from a path, add them as install URLs, and build the Docker image with the new pipelines automatically installed.

NOTE: The pipelines module will still attempt to install any package dependencies found at in your file headers at start time, but they will not be downloaded again.

# build in the specific pipelines
PIPELINE_DIR="pipelines-custom"
# assuming the above directory is in your source repo and not skipped by `.dockerignore`, it will get copied to the image
PIPELINE_PREFIX="file:///app"

# retrieve all the sub files
export PIPELINES_URLS=
for file in "$PIPELINE_DIR"/*; do
    if [[ -f "$file" ]]; then
        if [[ "$file" == *.py ]]; then
            if [ -z "$PIPELINES_URLS" ]; then
                PIPELINES_URLS="$PIPELINE_PREFIX/$file"
            else
                PIPELINES_URLS="$PIPELINES_URLS;$PIPELINE_PREFIX/$file"
            fi
        fi
    fi
done
echo "New Custom Install Pipes: $PIPELINES_URLS"

docker build --build-arg PIPELINES_URLS=$PIPELINES_URLS --build-arg MINIMUM_BUILD=true -f Dockerfile .

📂 Directory Structure and Examples

The /pipelines directory is the core of your setup. Add new modules, customize existing ones, and manage your workflows here. All the pipelines in the /pipelines directory will be automatically loaded when the server launches.

You can change this directory from /pipelines to another location using the PIPELINES_DIR env variable.

Integration Examples

Find various integration examples in the /examples directory. These examples show how to integrate different functionalities, providing a foundation for building your own custom pipelines.

🎉 Work in Progress

We’re continuously evolving! We'd love to hear your feedback and understand which hooks and features would best suit your use case. Feel free to reach out and become a part of our Open WebUI community!

Our vision is to push Pipelines to become the ultimate plugin framework for our AI interface, Open WebUI. Imagine Open WebUI as the WordPress of AI interfaces, with Pipelines being its diverse range of plugins. Join us on this exciting journey! 🌍