Skip to content

Integration: Open WebUI

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):

Service URL
EdgeQuake WebUI http://localhost:3000
EdgeQuake API http://localhost:8080
Open WebUI (this guide) http://localhost:8081 — avoids conflict with EdgeQuake WebUI on :3000

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).


Terminal window
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:

Terminal window
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).

Terminal window
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.

Terminal window
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):

Terminal window
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.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:
Terminal window
docker compose -f docker-compose.open-webui.yml up -d

Setting Value
Ollama Base URL http://localhost:8080 (host) or http://api:8080 (compose network)
Streaming Enabled (recommended)

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

Prefix Mode
/local Entity-focused
/global Relationship / theme
/naive Vector only
/hybrid Default combined
/mix Adaptive blend
/bypass Skip RAG

Example: /local Who is mentioned in the contracts?


Endpoint Description
GET /api/version Version info
GET /api/tags Lists edgequake:latest
GET /api/ps Running models
POST /api/generate Completion
POST /api/chat Chat (streaming supported)
Terminal window
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}'

Symptom Fix
Connection error in Open WebUI curl http://localhost:8080/health; fix OLLAMA_BASE_URL
Port 3000 already in use EdgeQuake WebUI owns :3000 — run Open WebUI on :8081
Empty / generic answers Upload docs; wait for display_status: completed
Slow first reply Enable streaming; warm up Ollama
Wrong GHCR org Use ghcr.io/raphaelmansuy/edgequake* — not ghcr.io/edgequake/*

List documents:

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

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