Skip to content

Open WebUI ​

A self-hosted chat UI. Add plugboard as an OpenAI connection.

Connect ​

In the UI: Admin Panel → Settings → Connections → OpenAI API, with URL http://127.0.0.1:4010/v1 (or http://host.docker.internal:4010/v1 from the container) and your plugboard key. Or set the connection in compose:

yml
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:0.12.0
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:8080"
    # Lets the container reach the host's plugboard port on Linux. Docker Desktop and Colima
    # already provide the name; the entry is harmless there.
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      OPENAI_API_BASE_URL: http://host.docker.internal:4010/v1
      OPENAI_API_KEY: ${PLUGBOARD_KEY_OPEN_WEBUI:?set PLUGBOARD_KEY_OPEN_WEBUI to the open-webui plugboard key}
      # Only the plugboard connection: no local Ollama.
      ENABLE_OLLAMA_API: "false"
      # Preselect the alias from plugboard's `aliases` option in new chats.
      DEFAULT_MODELS: fast
    volumes:
      - open-webui:/app/backend/data

volumes:
  open-webui:

Save it as docker-compose.yml, export PLUGBOARD_KEY_OPEN_WEBUI, and run docker compose up -d. A container reaches plugboard only when plugboard binds a non-loopback address with keys set: see Serving other machines.

What works ​

  • Chat with streaming. Pick a model or type an alias such as fast.
  • Tools, with Function Calling on its default (native) or legacy. Open WebUI runs the tool and sends the result back.
  • Image input, and response_format through Open WebUI's API.

Limits ​

  • Every chat carries Open WebUI's built-in tools (about 30), even with none selected, so a short chat costs several thousand prompt tokens.
  • Each turn also sends follow-up, title and tag requests to the same model. Turn them off in Open WebUI's task settings if you don't want them.
  • Allowing whole providers gives a model list of hundreds of entries. Narrow models to what you use.