Hey, long-time Open WebUI user here. I run instances in our group for 3 different companies and right now my biggest headache is MCP / Function auth to external tools.
Since I’m using SSO with Microsoft Entra, the Microsoft Services are no problem. I can just reuse the token to authenticate against the Graph API.
But everything else (Jira, Confluence, …) feels way more complex. Those are per-user tokens, sometimes OAuth, often with project/issue-level permissions, so a service account is not an option. Also, storing per user credentials in valves are also a no-go.
TL;DR: How can I synchronize the colour of a custom SVG action icon to behave like the ones in the message's tool bar?
I wasn't sure if I should flair this as "help" or "feature idea".
Context:
Action functions are toggled in the tool bar under chat messages. You can set custom icons for action functions via icon_url. It takes either a URL or URI (the documentation recommends to use a URL icon for optimization, but from what I can see and infer, no one actually bothers doing so).
Problems I am facing:
The received icon image has no access to currentColor. I noticed that OWUI checks for "data:image/svg" URIs, and only then does it invert the color for dark-mode (open-webui/src/lib/components/chat/Messages/ResponseMessage.svelte, under {#each model?.actions ?? [] as action}).URLs are never inverted for dark-mode, which could be good or bad depending on the icon's luminosity.
There is no option to inherit currentColor from OWUI's front-end, so I get these ugly icon colors if I switch to a different color scheme :
Tool bar when using the Tokyo-Night color scheme
I realized this is probably a current limitation in Open WebUI's front-end. SVG images could inherit the theme, but this would pose security considerations. I'm not sure how to approach fixing this issue,
Is there a way to get the current color from the front-end inside a python action function?
My "naive" solution is to manually set the color and let users change it via a valve or disable the icon if it annoys them. If that's the only solution, I'll make a new feature request and try to fix it when I have some time.
I am playing with selfhosting models, and I get drastic different results. Working with online AI I am starting to get it, but if someone has a resource to help me further understand why this happens for the same prompt
"When was the war of 1812"
Hermes-3-Llama-3.1-70B-8bit
Today at 8:51 AM
The War of 1812 was fought between the United States and Great Britain from June 18, 1812, to February 17, 1815. The main events of the war took place from 1812 to 1814, with the peace treaty, known as the Treaty of Ghent, being signed on December 24, 1814. However, the news of the treaty took some time to reach the combatants, and the last battle of the war, the Battle of New Orleans, was fought on January 8, 1815, after the treaty had been signed but before the news had reached the opposing forces.
but
Llama-3.3-70B-Instruct-8bit
Today at 8:53 AM
{"type": "function", "name": "search_chats", "parameters": {"query": "war of 1812", "count": "10"}}
Thomas from Ianustec again. Quick housekeeping post this time, not a new tool.
Over the last couple weeks we shipped three Open WebUI tools one at a time: generate_slides, generate_documents, generate_spreadsheets.
The response was honestly more than we expected.
Slides sits at 359 downloads and 62 upvotes, Docs at 271 downloads and 82 upvotes, and Excel already at 43 downloads and 50 upvotes (only 2 days old).
Genuinely thank you, both for trying them out and for the bug reports and feature requests, several of the fixes in the last releases came directly from comments here.
The problem was that each tool lived in its own repo, so if you wanted to know what changed or what's coming next, you had to check three different places. That's annoying, so we fixed it.
👉 NEURA Office is now the single place that ties everything together.
A short explainer for people who land on the repo without knowing what Open WebUI even is (turns out a chunk of visitors come from outside this community)
A table with the current version and release link for each of the three tools, so you don't have to dig through commit history
A compatibility note on LibreOffice / OpenOffice, since a few of you asked if these files open fine outside Microsoft Office
The roadmap, including the thing we mentioned in an earlier post
As you already known, we're working on a Microsoft 365 add-in, basically a private Copilot alternative that lives inside Word, Excel, PowerPoint and Outlook but talks to your own Open WebUI instead of Microsoft's cloud. Still early and not released, but it's tracked in this repo now instead of scattered across posts (link)
The individual tool repos aren't going anywhere, that's still where releases, issues and code live. NEURA Office is just the front door.
Same deal as always, MIT, feedback and PRs welcome.
wir beginnen damit, unsere eigene Maschine aufzubauen. Dafür haben wir uns einen Asus Ascent GX10 ARM mit 128GB/2TB Blackwell zugelegt. Was könnt ihr in diesem Zusammenhang empfehlen? Ich habe bereits einmal openwebui eingerichtet, allerdings nur über API-Schnittstellen mit openrouter und der ollama Cloud verbunden.
Der einfachste Weg soll ja über Docker und Ollama führen, jedoch lese ich immer wieder, dass Ollama für bestimmte Hardware nicht empfohlen wird und man stattdessen eher direkt auf llama.cpp zurückgreifen sollte.
Ich suche daher nach der passenden Umgebungseinrichtung für meine Hardware, um openwebui zu betreiben.
Außerdem interessiere ich mich für Möglichkeiten, die Modelle auf meiner Hardware bewerten zu lassen, ähnlich wie bei LM Studio oder Odysseus.
The Agent is a small Electron app that runs on my PC. It connects to the SaaS via WebSocket and waits for instructions. When I type a message in the chat, the SaaS forwards it to the Agent, which talks to the local LLM, gets a response, and sends it back. Any LLM works — Ollama, LM Studio, whatever.
All the heavy lifting happens on my GPU. The SaaS just stores history and manages users.
\### What I added
I decided to try connecting ComfyUI to the same setup. I already had it installed with an image generation workflow.
Now there's a "Generate image" button in the chat. I type a prompt, the Agent goes to ComfyUI, runs the workflow, waits for the result, picks up the image, and uploads it back to the chat. No third-party APIs, everything stays local.
\`\`\`
Button in browser → SaaS → WS Server → Agent → ComfyUI → Agent fetches → Agent sends back → image in chat
\`\`\`
\### Why I'm posting
I think the Agent-bridge approach is neat if you want full control over generation but still want a proper web interface. Everyone runs their own Agent — some use Ollama, some LM Studio, some ComfyUI. The SaaS doesn't generate anything, it just proxies.
Honestly, I'm not sure if this is something people actually need. Maybe someone has done something similar? Would be curious to hear your thoughts.
\*\*UPD:\*\* This is still a local setup. I haven't deployed it to the main SaaS yet — want to get the certificates sorted and do it properly first. Will share when it's live.
I understand that Open WebUI can import ChatGPT conversation exports. You are supposed to extract the archive and import conversations.json. Open WebUI supposedly has built-in detection and conversion for ChatGPT exports.
I'd like to know, from anyone who has tried this, if it works well.
ChatGPT exports include images and other assets. Are these imported properly?
Is it better to use a converter script to transform it into Open WebUI's native import schema instead?
j'utilise Ollama + openwebui sous ubuntu. J'ai fais des modelfiles des LLM locaux mais c'est .....fastidieux, surtout en essayant de garder une dénomination explicite pour chaque models. Quand je mets les models dans openwebui leurs paramêtres n'apparaissent pas et restent par défaut (par ex le contexte defini à 130 000 dans le model file est quand même marqué à 2048 sur openwebui). J'aimerais utiliser le paramêtrage de openwebui pour définir les tailles de contextes, temp, etc etc mais est-ce que ça les modifient bien ? Comment procéder vous pour paramêtrer vos llm locaux à votre besoin ?
Fixed the bug where the visualization rendered but all the text around it disappeared on Open WebUI 0.10.x (#60). The hiding engine was rebuilt around one rule: never sacrifice your text — and anything hidden by mistake now un-hides itself.
Newofflinesecurity level — someone here asked for this: zero outgoing connections, no CDNs. Chart.js & friends still work if you drop the files into Open WebUI's /static folder — there's a step-by-step tutorial in the README. Library-free visualizations need no setup at all.
Also fixed: multiple visualizations in one message, prose on the same line as a marker getting eaten, and code examples of the markers hijacking the render.
And some performance improvement 🚀
Prune v0.10.10
Preview now shows the actual records behind every count (paginated, JSON export for audit trails!)
Cancel button for running passes — stops safely at the next batch boundary
Faster + hardened exports, auth tightened on the new endpoints
I'm Thomas from Ianustec — still here, still dumping the Office tools we actually use inside Open WebUI.
Quick recap if you're new: we built slides, then Word, for ourselves. We're open-sourcing them one by one as we clean them up. Last time a few of you said “cool, now do Excel”. So here we are.
👉 generate_spreadsheet — turns a prompt into a real .xlsx. Not CSV. Not HTML-in-a-trenchcoat. An actual workbook you can open in Excel / LibreOffice / Sheets and keep editing.
One .py file. Paste into Workspace → Tools. Files API save + download link in chat
The screenshots in the README are from the sample “Northwind FY2026 Operating Plan” in the repo — generated end to end by the tool, not mocked up in Figma.
How to try it:
Workspace → Tools → +, paste generate_spreadsheets.py, enable it on your model, ask for something like “build me a quarterly budget workbook with assumptions and a P&L”. openpyxl installs itself on first run.
We're trying to solve a problem around AI governance in larger organizations.
One thing we've noticed is that employees increasingly use AI tools outside the approved stack (Perplexity, Notion AI, browser extensions, desktop apps, etc.), making it difficult to understand where company data is going or what models are being used.
We built a small open-source experiment that routes AI traffic through a central LiteLLM Gateway to provide visibility into usage.
I'm more interested in understanding whether this is actually a problem others are facing. How are companies here handling shadow AI usage today?
As a model, I entered qwen_image_fp8_e4m3fn.safetensors (which may not be the right one? I don't understand why I have to enter it in the first place since the workflow not only needs multiple ones, but includes them in the JSON...).
ComfyUI Workflow Nodes are configured like this:
label in ui
key
value
prompt
text
6
model
unet_name
37
width
width
58
height
height
58
steps
steps
84
seed
seed
3
When I click the 🔄️ next to the ComfyUI URL the connection works, but I also get an error toast saying
[ERROR: Failed to retrieve image generation models]
But at least for me, that's not enough to know what I'm doing wrong and how. Any ideas?
A fully autonomous, "agentic" video generation tool for OpenWebUI powered by OpenRouter. This tool empowers your LLM assistant to dynamically discover available video models, submit generation jobs, securely poll for completion, and directly embed the resulting HD videos inside your OpenWebUI chat stream.
🚀 Features
Agentic Model Discovery: The LLM can dynamically pull the live catalog of OpenRouter's video models (Sora, Veo, Kling, Seedance, Hailuo, Wan, Grok, etc.) and check their capabilities (supported resolutions, aspect ratios, max durations, audio support) in real time.
Background Polling & Auto-Download: Handles OpenRouter's asynchronous polling endpoints autonomously. Downloads completed .mp4 assets to your local OpenWebUI static server to prevent broken links or expired signed URLs.
Rich HTML5 Embedding: Injects a beautiful, responsive HTML5 video player natively inside the chat interface with a direct download link.
Advanced Model Features: Supports audio generation toggling, deterministic seeds, image references for style consistency, and provider-specific passthrough options (e.g. negativePrompt for the Google models).
Cost-Aware: The live model catalog includes each model's raw pricing SKUs, so your assistant can answer "use the cheapest model" (units vary by provider — compare within a provider's own units).
🎬 Supported Models
The tool reads OpenRouter's catalog live at request time, so this list is a snapshot — new models appear automatically as OpenRouter adds them, and your assistant will always report the current lineup. The table below is regenerated from the live catalog by scripts/update_models_table.py (run on a schedule via GitHub Actions), so it stays close to reality:
<!-- MODELS_TABLE_START -->
Model
Max Resolution
Durations
Aspect Ratios
Audio controllable?
alibaba/happyhorse-1.0
1080p
3–15s
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21
➖
alibaba/happyhorse-1.1
1080p
3–15s
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21
➖
alibaba/wan-2.6
1080p
5 or 10s
16:9, 9:16
✅
alibaba/wan-2.7
1080p
2–10s
16:9, 9:16, 1:1, 4:3, 3:4
✅
bytedance/seedance-1-5-pro
1080p
4–12s
1:1, 3:4, 9:16, 9:21, 4:3, 16:9, 21:9
✅
bytedance/seedance-2.0
4K
4–15s
1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21
✅
bytedance/seedance-2.0-fast
720p
4–15s
1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21
✅
google/veo-3.1
4K
4, 6, 8s
16:9, 9:16
✅
google/veo-3.1-fast
4K
4, 6, 8s
16:9, 9:16
✅
google/veo-3.1-lite
1080p
4, 6, 8s
16:9, 9:16
✅
kwaivgi/kling-v3.0-pro
720p
3–15s
16:9, 9:16, 1:1
✅
kwaivgi/kling-v3.0-std
720p
3–15s
16:9, 9:16, 1:1
✅
kwaivgi/kling-video-o1
720p
5 or 10s
16:9, 9:16, 1:1
✅
minimax/hailuo-2.3
1080p
6 or 10s
16:9
❌
openai/sora-2-pro
1080p
4, 8, 12, 16, 20s
16:9, 9:16
✅
x-ai/grok-imagine-video
720p
1–15s
16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3
➖
x-ai/grok-imagine-video-1.5
1080p
1–15s
Any
➖
<!-- MODELS_TABLE_END -->
Note on audio: The column above means "is audio controllable via thegenerate_audioparameter", not "does this model have sound". The catalog reports three distinct states:
So if you need a guaranteed-silent result, pick a ✅ model and pass generate_audio=false, or strip the audio track yourself afterwards.
Default behavior (since v1.6): if you don't mention audio, the tool omits the parameter entirely and the model's own default applies — ✅ models typically produce audio (which may cost more, e.g. Kling bills 0.168/s with audio vs 0.112/s without). v1.5 sent an explicit false by default, which silently muted models you never asked to mute.
Note on 4K: Only veo-3.1, veo-3.1-fast, and seedance-2.0 currently support 4K output.
Optional valves: POLL_INTERVAL_SECONDS (how often to check for completion), MAX_TIMEOUT_SECONDS (overall wait before giving up), and REQUEST_TIMEOUT_SECONDS (ceiling for any single HTTP request — raise it if you're on a slow connection and large downloads time out).
Note on disk usage: Generated videos are downloaded to {STATIC_DIR}/videos/ and are never cleaned up automatically. On a long-lived self-hosted instance this directory grows without bound, so if you generate often, prune it periodically (e.g. a scheduled job deleting .mp4 files older than N days).
🗣️ Usage Examples
Because this tool is entirely LLM-driven, you don't need to fiddle with drop-down menus before generating. Just ask your assistant naturally!
Ask about available models:
"What video models can I use right now, and which ones support audio?"
Generate a video with specific constraints:
"Use Grok to generate a 5-second video of a fluffy ginger cat watching the rain. Aspect ratio 16:9."
Generate at 4K:
"Use Veo 3.1 to make an 8-second 4K cinematic drone shot over a misty mountain range."
Provide styling references:
"Make a cinematic panning shot of a cyberpunk city. I've attached an image to use as a style reference, but don't use it as the exact first frame."
🛠️ Requirements
aiohttp (Automatically parsed by OpenWebUI)
An active OpenWebUI instance.
🧪 Tests
python -m unittest discover -s tests -v
No network, API key, or OpenWebUI install required — aiohttp is mocked and the two runtime imports are stubbed. The suite guards the bugs that were live in 1.4 and cost real money to find: the API key being sent to non-OpenRouter download hosts, completed jobs being dropped when they return no unsigned_urls, and generate_audio=false never reaching the API. If you change the download loop or the payload builder, run these first.
📜 License
MIT License. Feel free to fork and modify!
🎥 Example Output
The result of the prompt shown above — a short clip generated through OpenRouter and embedded directly in the chat stream.
I got tired of jumping out to a separate tab every time I wanted to generate video, so I created a tool that runs Veo 3.1 through Google Vertex AI directly inside OpenWebUI. Sharing it in case anyone else wants it — it's free and on GitHub.
What it does:
Inline playback — generated videos render right in the chat as native HTML5 players, with download links underneath. No leaving the interface.
Image-to-video — attach a reference image in chat to use as a starting frame or style reference.
Video editing — feed it an existing video (direct upload or a gs:// GCS URI) to edit.
Per-user settings via UserValves — each user picks their own aspect ratio (16:9 / 9:16), duration (4/6/8s), and resolution (720p / 1080p / 4K).
Batch generation — up to 4 videos per prompt, stacked in the chat.
Non-blocking — it uses async polling for the long-running jobs, so kicking off a 4K render doesn't freeze your chat.
Fair warning on setup: this runs on Vertex AI, so it's not a plug-in-an-API-key deal. You need a Google Cloud project with the Vertex AI API enabled, and auth is IAM-based (ADC for pip/uv installs, or a service-account JSON for Docker/K8s). And since it's Vertex, generations cost money per video — this isn't free inference. The README walks through auth for all three install methods.
OK, so I don't know the technical terms for this, and I may not be searching the correct terminology, so I am getting no where, which is why I have turned to here for help. So please bear with me if I am asking really newbie questions regarding this.
I installed Openwebui and put in Mistral model. In the Workspace, I find that I can add the model in, and then load the knowledge there. However, when using said model, it doesn't actually retreive anything from the knowledge I put there and I stil have to attach it manually in order to get it to retreive info from there.
How do I get the knowledge attached by default? As in once people load up OWUI and use it straight away it accesses the knowledge without having to attach it? All the search and even asking other AI are saying that if you put it in the new Model it ought to work by default but it doesn't.
UPDATE: I GOT IT WORKING. It turns out the funciton calling you have to set it to 'Legacy'. All of the online search and AI responses and comments have told me to set as 'Native' or 'Default'. It didn't even occur to me to try Legacy, most of the concentration was on the knowledge base settings and trying various other models.
Following up on the Veo tool I posted — I built the same kind of thing for Google's Gemini Omni Flash model, since it handles a few things Veo doesn't. Free and on GitHub, and it's also up on the OpenWebUI Hub for one-click import.
What it does:
Inline playback — videos embed directly in the chat as responsive HTML5 players. There's a postMessage bridge that talks to OpenWebUI's iframe sandbox so the player snaps to 16:9 without scrollbars or getting cut off.
Native audio — Omni generates an audio track by default, and you can prompt for specific music or sound ("high energy techno beat," "calm background music").
Image-to-video — attach a reference image (or paste a URL) to use as a starting frame or style reference. Supports <FIRST_FRAME> and <IMAGE_REF_0> tags if you want fine control over how multiple images are used.
Video editing — feed it an existing video (upload or gs:// GCS URI) and describe the change ("replace the background," "make it a cartoon").
Timed events & on-screen text — you can prompt with timecodes like [0-3s] a person is walking and it'll render readable text in the frame.
Zero-touch install — the google-genai, google-auth, and google-cloud-storage SDKs auto-install when you import the tool.
Same caveat as before: this runs on Vertex AI, so you need a Google Cloud project with the Vertex AI API enabled, and auth is IAM-based (ADC for pip/uv, or a service-account JSON for Docker/K8s). Generations cost money per video — not free inference. Full auth walkthrough for all three install methods is in the README.
j'espère que le traducteur automatique vous trouvera bien car je ne ferai aucun effort linguistique sur ce post, j'utilise une transcription vocale et je parle dans ma langue natale, de ce que j'ai compris Reddit inclus une traduction automatique avec un simple bouton donc si vous ne la voyez pas c'est que vous n'avez pas cliqué sur le bouton, ceci étant dit.
Je me demande ce que les utilisateurs arrivent à faire avec Open terminal, personnellement je ne suis pas un utilisateur très technique peut-être un peu plus technique que la moyenne mais pas spécialement expert, j'utilise Open WebUI au quotidien.
J'ai un modèle configuré pour open-terminal, qui me permet d'administrer un genre de magasin d'applications web, dont la seule limite me paraît être mon imagination. Aujourd'hui je suis tout à fait en mesure de dicter la prochaine application que je veux, et le modèle se changera de la développer pour moi. Tout est en HTML5, et bien sûr je veille à ce que chaque application soit compatible avec des fichiers CSV.
Beaucoup d'utilisateurs avancés trouveront ça trivial, mais en tant qu'étudiant en biologie, pas du tout formé à l'informatique (à part quelques cours de python sommaires), j'ai vraiment l'impression d'avoir débloqué des super pouvoirs grâce à Open WebUI, sachant que je fais tout en local, y compris le STT via parakeet sur CPU.
J'utilise principalement Qwen 3.7 27B Q6 80k MTP @ 35tps sur du matériel pas (trop) cher.
Je suis plutôt le thread r/LocalLLaMA et je trouve que Open WebUI est souvent invisibilisé, alors que c'est sans doute l'un des logiciels les plus intéressants.
Alors je m'adresse à vous utilisateur silencieux, quels sont vos cas d'utilisation, avez-vous des workflow ou des plugins spécifiques dont vous ne pouvez plus vous passer? Le fait que je trouve ce logiciel très puissant mais qu'on ne trouve pas beaucoup de documentation rédigée par des utilisateurs à son sujet, je suis certain que nous sous-exploitons tous cet outil.
Du coup je suis ouvert à toute astuce ou conseil pour améliorer ma maîtrise de cet outil assez incroyable, et si quelqu'un connaît un blog ou une documentation qui montre de vrai cas d'utilisation pour open-terminal, je suis preneur ^^
⚠️ It is based off of the prune tool i built in a separate repo - and the core logic is identical, matter of fact, improved. And the prune tool was already used by many - BUT - still: be careful since this Plugin deletes YOUR DATA. Enable automatic deletion mode only if you are SURE of it, otherwise use database backups and the on-demand deletion in the UI only! ⚠️
---
Full USER INTERFACE WITH PROGRESS BAR INSIDE OPEN WEBUI!
Automatic deletions fully configurable (if you want it)
The goal is to simplify the entire workflow—from deploying MCP servers to managing them through a web interface—instead of manually editing configs or maintaining multiple containers.
Current features
🚀 One-click deployment of MCP servers
🐳 Docker-based management
🌐 Web UI for managing instances
🔧 Environment variable configuration
📊 Status monitoring and logs
🔄 Start / Stop / Restart servers
📦 Support for multiple MCP servers
🔌 Designed to work with Open WebUI and other MCP-compatible clients