Integration guides

Open WebUI

A self-hosted, ChatGPT-style web interface for multiple users that centrally manages several model connections. It talks to backends over the OpenAI protocol — just add XylemNode as an OpenAI connection.

Site / download
  1. 01

    Deploy and open

    Docker is the official first choice. After pulling and running the image, open http://localhost:3000 in your browser and create an admin account on first visit. pip, Kubernetes and other methods are also supported.

    # Pull the image
    docker pull ghcr.io/open-webui/open-webui:main
    
    # Run (maps the UI to local port 3000)
    docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
  2. 02

    Add an OpenAI connection

    Go to ⚙️ Admin Settings → Connections → OpenAI and click ➕ Add Connection. Open WebUI groups every OpenAI-protocol service under the OpenAI type, and XylemNode uses that too.

  3. 03

    Enter the address and key

    Enter XylemNode's address (with /v1) and key, then save. It calls /v1/models to populate the available models automatically.

    URL
    https://api.xylemnode.com/v1
    API Key
    sk-your-key
  4. 04

    Pick a model and chat

    After saving, return to the chat view and select a XylemNode model (e.g. gpt-5.6-sol) from the model menu at the top to start chatting.

Two notes

1) When adding a connection, Open WebUI validates by calling /models with a Bearer token; if a service's /models differs and returns 400/401/403, it doesn't mean it won't work — add the model name to that connection's Model IDs (Filter) allowlist and save. 2) You can also preset OPENAI_API_BASE_URLS and OPENAI_API_KEYS via environment variables at deploy time; but env vars usually only write to the DB on first start, so to change them later, edit in the UI's Connections to avoid being locked to old values.

Common questions

The connection saved in Open WebUI but no models appear in the menu

Separate "not fetched" from "not permitted". If you can't see them as an admin either, it's the former: saving a connection calls /models with a bearer token, and no list means no options — the official quick start suggests adding the model names by hand to that connection's Model IDs (Filter) allowlist. If admins see them and ordinary members don't, it's the latter: models sit behind access control, so open Admin Settings → Users → Groups and enable model access in the default permissions, or grant the relevant group access on the individual model. That is how the community's "model list is empty for non-admins" reports get resolved. When several people share one XylemNode key, this is usually the step that got skipped.