The data-URI message-event approach didn't render — Open WebUI's chat
frontend ignores data URIs from tool-emitted message events because
the markdown-base64 rewriter (utils/files.py convert_markdown_base64
_images) only runs on assistant streaming content, not on tool emits.
Switched to the path Open WebUI's own image-generation flow uses
(backend/open_webui/utils/middleware.py ~1325):
1. Upload image bytes via open_webui.routers.files.upload_file_handler
(gets back a file_item with id)
2. Resolve the served URL via request.app.url_path_for(
"get_file_content_by_id", id=file_item.id) → /api/v1/files/{id}/content
3. Emit a `files` event:
{"type": "files", "data": {"files": [{"type": "image", "url": ...}]}}
Tools now take __request__, __user__, __metadata__ params for the
upload (Open WebUI auto-injects these). Falls back to data-URI
message event if the runtime imports aren't available (e.g. running
the file standalone for tests). The internal upload bypasses
get_verified_user via the user= kwarg, so no token plumbing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
comfyui-nvidia
ComfyUI image-generation backend, NVIDIA-accelerated, fronted by Open WebUI for multi-user chat and image generation/editing.
Built from the official ComfyUI manual install for
NVIDIA — no
third-party base image. CI publishes the image to
git.anomalous.dev/alphacentri/comfyui-nvidia on every v* tag (see
.gitea/workflows/release.yml).
Repository layout
| Path | What |
|---|---|
Dockerfile |
ComfyUI on NVIDIA, manual-install pattern |
workflows/ |
txt2img + img2img workflow JSONs and node mappings |
deployments/ai-stack/ |
The deployment — compose, Caddyfile, env, model preseed |
.gitea/workflows/ |
Release pipeline (build & push image on tag) |
Deploy
The full stack — Caddy + Ollama + ComfyUI + Open WebUI (+ optional
Anubis) — lives under deployments/ai-stack/.
Bring-up steps, host prerequisites, Open WebUI workflow wiring, and
gotchas are in deployments/ai-stack/README.md.
Replaces
This repo supersedes the previous figment + segment + Forge stack. ComfyUI's node graph covers everything those services provided (txt2img, img2img, inpaint, mask generation via SAM/GroundingDINO custom nodes), and Open WebUI talks to it natively.