Skip to main content
Sponsored by Open WebUI Pipelines
Open WebUI Pipelines
Pipelines: Versatile, UI-Agnostic OpenAI-Compatible Plugin Framework

️🔨 Development

Using devcontainers

Coming soon.

On host

Run the following commands to install:

For Linux/macOS:

git clone https://github.com/open-webui/open-webui.git
cd open-webui/

# Copying required .env file
cp -RPp .env.example .env

# Start frontend server
npm install
npm run dev

cd ./backend

# Optional: To install using Conda as your development environment, follow these instructions:
# Create and activate a Conda environment
conda create --name open-webui-env python=3.11
conda activate open-webui-env

# Install dependencies
pip install -r requirements.txt -U

# Start the application
bash dev.sh

In docker container

Assuming you have already cloned the repo and created a .env.

  1. Create a new file compose-dev.yaml. The following uses Docker compose watch to automatically detect changes in the host filesystem and sync them to the container.
name: open-webui-dev

services:
ollama:
volumes:
- ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
restart: always
image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}

frontend:
build:
context: .
target: build
command: ["npm", "run", "dev"]
depends_on:
- backend
extra_hosts:
- host.docker.internal:host-gateway
ports:
- "3000:5173"
develop:
watch:
- action: sync
path: ./src
target: /app/src
- action: rebuild
path: package.json

backend:
build:
context: .
target: base
command: ["bash", "dev.sh"]
env_file: ".env"
environment:
- ENV=dev
- WEBUI_AUTH=False
volumes:
- data:/app/backend/data
extra_hosts:
- host.docker.internal:host-gateway
ports:
- "8080:8080"
restart: always
develop:
watch:
- action: sync
path: ./backend
target: /app/backend
ignore:
- backend/data
- action: rebuild
path: backend/requirements.txt

volumes:
data: {}
ollama: {}
  1. To start the containers, run docker compose -f compose-dev.yaml up --watch. The webapp will be available at http://localhost:3000
  2. To stop, hit ctrl-c or run `docker compose -f compose-dev.yaml down

What this does:

  • Exposes port 3000 on the host for frontend, and port 8000 for the api, enables FastAPI API docs at http://localhost:8080/docs
  • Starts both the frontend Vite server and the backend server in hot reload mode, so changes trigger an automatic refresh
  • Syncs /backend and /src on the host machine with their respective directories in the containers

Pipelines

If you are using pipelines, you can add the following:

info

This uses volume bind-mounts, which are distinct from named volumes. You can read more about the difference here

services:
pipelines:
ports:
- "9099:9099"
volumes:
- ./pipelines:/app/pipelines
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always