Integration: Open WebUI

July 18, 2026 · View on GitHub

Product: v0.19.0 · Contract: openapi.snapshot.json · Spec ops: Ingestion cancel & fairness

Connect Open WebUI to EdgeQuake's Ollama-compatible API for a ChatGPT-style UI backed by Graph-RAG.

Ports (v0.19.0):

ServiceURL
EdgeQuake WebUIhttp://localhost:3000
EdgeQuake APIhttp://localhost:8080
Open WebUI (this guide)http://localhost:8081 — avoids conflict with EdgeQuake WebUI on :3000

Architecture

Open WebUI (:8081)
       │  Ollama API (POST /api/chat)

EdgeQuake API (:8080)
       │  Graph-RAG + knowledge graph

PostgreSQL (pgvector + AGE)

Upload documents via EdgeQuake WebUI (:3000) or REST — not through Open WebUI's file UI (not integrated).


Quick start

1. Start EdgeQuake (GHCR 0.19.0)

EDGEQUAKE_VERSION=0.19.0 docker compose -f docker-compose.quickstart.yml up -d

Images (SSOT from release CI):

ghcr.io/raphaelmansuy/edgequake:0.19.0
ghcr.io/raphaelmansuy/edgequake-frontend:0.19.0
ghcr.io/raphaelmansuy/edgequake-postgres:0.19.0

Verify:

curl -s http://localhost:8080/health | jq .status    # "healthy"
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000   # 200

Or local dev: make dev (same ports).

Ensure an LLM is reachable (default: Ollama on host :11434).

2. Upload documents

curl -X POST http://localhost:8080/api/v1/documents/pdf \
  -H "X-Workspace-ID: default" \
  -F "file=@document.pdf" \
  -F "title=My Document"

Wait for display_status: completed in EdgeQuake WebUI or via GET /api/v1/documents. See PDF Ingestion Tutorial.

3. Start Open WebUI

docker run -d \
  -p 8081:8080 \
  -e OLLAMA_BASE_URL=http://host.docker.internal:8080 \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

Linux (no host.docker.internal by default):

docker run -d \
  -p 8081:8080 \
  -e OLLAMA_BASE_URL=http://172.17.0.1:8080 \
  --add-host=host.docker.internal:host-gateway \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

Open http://localhost:8081, create an admin account, select model edgequake:latest.


Docker Compose (EdgeQuake + Open WebUI)

# docker-compose.open-webui.yml — pin 0.19.0
services:
  postgres:
    image: ghcr.io/raphaelmansuy/edgequake-postgres:0.19.0
    environment:
      POSTGRES_USER: edgequake
      POSTGRES_PASSWORD: edgequake_secret
      POSTGRES_DB: edgequake
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U edgequake -d edgequake"]
      interval: 10s
      retries: 5

  api:
    image: ghcr.io/raphaelmansuy/edgequake:0.19.0
    ports:
      - "8080:8080"
    environment:
      DATABASE_URL: postgres://edgequake:edgequake_secret@postgres:5432/edgequake
      EDGEQUAKE_LLM_PROVIDER: ollama
      OLLAMA_HOST: http://host.docker.internal:11434
    extra_hosts:
      - "host.docker.internal:host-gateway"
    depends_on:
      postgres:
        condition: service_healthy

  frontend:
    image: ghcr.io/raphaelmansuy/edgequake-frontend:0.19.0
    ports:
      - "3000:3000"
    environment:
      EDGEQUAKE_API_URL: http://localhost:8080
    depends_on:
      api:
        condition: service_healthy

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "8081:8080"
    environment:
      OLLAMA_BASE_URL: http://api:8080
    depends_on:
      - api

volumes:
  postgres_data:
docker compose -f docker-compose.open-webui.yml up -d

Open WebUI settings

SettingValue
Ollama Base URLhttp://localhost:8080 (host) or http://api:8080 (compose network)
StreamingEnabled (recommended)

Query mode prefixes

Prefix messages to control retrieval (prefix stripped before query):

PrefixMode
/localEntity-focused
/globalRelationship / theme
/naiveVector only
/hybridDefault combined
/mixAdaptive blend
/bypassSkip RAG

Example: /local Who is mentioned in the contracts?


Ollama endpoints implemented

EndpointDescription
GET /api/versionVersion info
GET /api/tagsLists edgequake:latest
GET /api/psRunning models
POST /api/generateCompletion
POST /api/chatChat (streaming supported)
curl -s http://localhost:8080/api/tags | jq '.models[].name'
curl -X POST http://localhost:8080/api/chat \
  -H "Content-Type: application/json" \
  -d '{"model":"edgequake:latest","messages":[{"role":"user","content":"Summarize the docs"}],"stream":false}'

Troubleshooting

SymptomFix
Connection error in Open WebUIcurl http://localhost:8080/health; fix OLLAMA_BASE_URL
Port 3000 already in useEdgeQuake WebUI owns :3000 — run Open WebUI on :8081
Empty / generic answersUpload docs; wait for display_status: completed
Slow first replyEnable streaming; warm up Ollama
Wrong GHCR orgUse ghcr.io/raphaelmansuy/edgequake* — not ghcr.io/edgequake/*

List documents:

curl -s "http://localhost:8080/api/v1/documents" \
  -H "X-Workspace-ID: default" | jq '.documents[] | {title, display_status}'

Limitations

FeatureStatus
Chat + streaming
Query mode prefixes
Document upload via Open WebUI❌ Use API or EdgeQuake WebUI :3000
Model pull / create❌ N/A (single emulated model)

See also