Conversation
WalkthroughAdds a new documentation guide describing how to deploy and use OpenWebUI, covering features, backend integration, Kubernetes deployment manifests, important environment variables, verification steps, access methods, and initial setup for connecting inference services. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Fix all issues with AI agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Around line 61-62: Add a short "Security Considerations" section after the
deployment or environment variables section that documents the risks of setting
ENABLE_DIRECT_CONNECTIONS to "true" and lists practical precautions: only enable
in trusted/authenticated environments, warn about data exfiltration and
credential exposure, advise monitoring outbound connections, suggest
egress/network policies, and recommend keeping it false in production or
pre-configuring allowed backends; reference ENABLE_DIRECT_CONNECTIONS by name in
the text so readers can correlate the guidance with the environment variable.
- Around line 63-64: The YAML snippet uses a placeholder value for
OPENAI_API_BASE_URL ("http://example-predictor/v1") that must not be deployed
as-is; update the docs and the YAML example to mark this value explicitly as a
placeholder (e.g., add a comment inline in the YAML and a warning sentence in
the surrounding documentation) and add a short note telling users to replace
OPENAI_API_BASE_URL with their actual predictor/service URL before deployment;
reference the OPENAI_API_BASE_URL key and the placeholder value so reviewers can
locate and update the example and the descriptive text.
- Around line 52-54: Replace the ephemeral emptyDir volume named webui-data with
a PersistentVolumeClaim: create a PVC manifest (e.g., metadata.name:
open-webui-pvc, namespace: open-webui-ns, spec.resources.requests.storage: 5Gi,
accessModes: [ReadWriteOnce]) and update the Deployment's volumes to reference
that claim (use persistentVolumeClaim.claimName: open-webui-pvc for the
webui-data volume) while leaving the existing volumeMounts unchanged; ensure the
PVC is applied to the cluster before deploying the Deployment so the pod can
bind to the persistent storage.
- Around line 1-7: The YAML front matter is malformed (incorrect indentation and
list structure for keys like products, kind, and ProductsVersion); fix it by
converting the block into valid YAML mapping: ensure "products:" maps to a list
containing "Alauda AI", "kind:" is a scalar with value "Solution", and
"ProductsVersion:" is a scalar with value "4.x" (i.e., replace the current
alternating dash lines with proper key: value and products: - Alauda AI
structure) so the front matter parses correctly.
- Line 56: The deployment example currently uses the unpinned image reference
"ghcr.io/open-webui/open-webui" which defaults to :latest; update the image
declaration in the manifest (the line containing the image reference
"ghcr.io/open-webui/open-webui") to pin a specific version tag or immutable
digest (for example replace with "ghcr.io/open-webui/open-webui:vX.Y.Z" or
"@sha256:<digest>") to ensure reproducible, predictable deployments.
🧹 Nitpick comments (6)
docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md (6)
12-12: Optional: Improve sentence variety.Three consecutive sentences in the overview begin with "It," which impacts readability slightly.
✍️ Suggested rewording
-OpenWebUI is an open-source AI Web interface that supports docking with multiple OpenAI protocol-compatible inference backends (such as vLLM, MLServer, XInference, etc.) through a unified entry point. It is used for scenarios such as text generation, multimodal input, and voice input. It provides an extensible external tool mechanism to facilitate the integration of retrieval, function calling, and third-party services. It is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access. +OpenWebUI is an open-source AI Web interface that supports docking with multiple OpenAI protocol-compatible inference backends (such as vLLM, MLServer, XInference, etc.) through a unified entry point. This interface is used for scenarios such as text generation, multimodal input, and voice input. The platform provides an extensible external tool mechanism to facilitate the integration of retrieval, function calling, and third-party services, and is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access.
21-21: Optional: Use hyphenated compound modifier."OpenAI API style" should be hyphenated when used as a compound modifier.
-- **Protocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, XInference, TGI, etc.). +- **Protocol Compatibility**: Support OpenAI API-style backends (such as vLLM, MLServer, XInference, TGI, etc.).
87-91: Clarify the difference between internal and external URLs.The explanation mentions "internal cluster address" but could be clearer about when to use internal vs. external URLs. Consider adding an example to illustrate both scenarios.
📝 Suggested enhancement
### OPENAI_API_BASE_URL * Specifies the default inference service endpoint. * If OpenWebUI and the inference service are deployed in the same cluster, use the service's internal cluster address. + * Example internal URL: `http://inference-service.aml-namespace.svc.cluster.local/v1` * For the address details, refer to: **AML Business View / Inference Service / Inference Service Details / Access Method**. * Value format: `{{Cluster Internal URL}}/v1`.
94-98: Consider adding additional verification steps.The current verification only checks deployment status. Consider adding steps to verify pod health and connectivity to the inference backend.
🔍 Enhanced verification steps
### Verification ```bash kubectl get deployment open-webui -n open-webui-ns -wWait until the deployment status is
1/1 Ready.
+
+Verify the pod is running and check logs:
+bash +# Check pod status +kubectl get pods -n open-webui-ns -l app=open-webui + +# Check pod logs for any errors +kubectl logs -n open-webui-ns -l app=open-webui --tail=50 +</details> --- `100-122`: **Add guidance for production access methods.** The documentation only covers NodePort access, which exposes the service on all nodes and is not recommended for production. Consider adding guidance for production-ready access methods. <details> <summary>🌐 Suggested addition for production access</summary> Add a subsection after the NodePort service: ```markdown ### Alternative: Access via Ingress (Recommended for Production) For production environments, use an Ingress resource with TLS: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-webui-ingress namespace: open-webui-ns annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: ingressClassName: nginx tls: - hosts: - open-webui.example.com secretName: open-webui-tls rules: - host: open-webui.example.com http: paths: - path: / pathType: Prefix backend: service: name: svc-open-webui port: number: 8080Note: Update the Service type to
ClusterIPwhen using Ingress.</details> --- `131-131`: **Optional: Use American English spelling.** "Afterwards" is British English; "afterward" is preferred in American English documentation. ```diff -Fill it in afterwards. Please use the cluster **external** access method. +Fill it in afterward. Please use the cluster **external** access method.
| products: | ||
| - Alauda AI | ||
| kind: | ||
| - Solution | ||
| ProductsVersion: | ||
| - 4.x | ||
| --- |
There was a problem hiding this comment.
Fix YAML front matter structure.
The YAML front matter has structural issues with indentation and key-value pairing. Lines 2-5 appear malformed.
📝 Proposed fix for YAML structure
products:
-- Alauda AI
- kind:
+ - Alauda AI
+kind:
- Solution
- ProductsVersion:
+productsVersion:
- 4.x
---🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 1 - 7, The
YAML front matter is malformed (incorrect indentation and list structure for
keys like products, kind, and ProductsVersion); fix it by converting the block
into valid YAML mapping: ensure "products:" maps to a list containing "Alauda
AI", "kind:" is a scalar with value "Solution", and "ProductsVersion:" is a
scalar with value "4.x" (i.e., replace the current alternating dash lines with
proper key: value and products: - Alauda AI structure) so the front matter
parses correctly.
| - name: webui-data | ||
| emptyDir: {} | ||
| containers: | ||
| - image: ghcr.io/open-webui/open-webui |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
open-webui latest stable container image version ghcr.io
💡 Result:
Latest stable Open WebUI container image on GHCR is v0.7.2 (released 2026-01-10). [1]
Use:
ghcr.io/open-webui/open-webui:v0.7.2[1]
(For production, Open WebUI recommends pinning a specific release tag like this rather than floating tags such as :main.) [2]
Pin the container image to a specific version.
The image ghcr.io/open-webui/open-webui has no tag specified, defaulting to :latest. This can cause unpredictable behavior and version drift in production deployments.
- - image: ghcr.io/open-webui/open-webui
+ - image: ghcr.io/open-webui/open-webui:v0.7.2📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - image: ghcr.io/open-webui/open-webui | |
| - image: ghcr.io/open-webui/open-webui:v0.7.2 |
🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` at line 56, The
deployment example currently uses the unpinned image reference
"ghcr.io/open-webui/open-webui" which defaults to :latest; update the image
declaration in the manifest (the line containing the image reference
"ghcr.io/open-webui/open-webui") to pin a specific version tag or immutable
digest (for example replace with "ghcr.io/open-webui/open-webui:vX.Y.Z" or
"@sha256:<digest>") to ensure reproducible, predictable deployments.
| - name: ENABLE_DIRECT_CONNECTIONS | ||
| value: "true" |
There was a problem hiding this comment.
Document security implications of enabling direct connections.
Setting ENABLE_DIRECT_CONNECTIONS to "true" allows users to add arbitrary external inference service backends, which may have security implications (data exfiltration, credential exposure, cost implications). Consider adding a security note explaining when this should be enabled and what precautions to take.
📋 Suggested security guidance to add
Add a security considerations section after the deployment or in the environment variables section:
### Security Considerations
**ENABLE_DIRECT_CONNECTIONS**: When set to `true`, users can configure OpenWebUI to connect to external inference services. Consider the following:
- Only enable this in trusted environments or when users are authenticated and authorized
- External connections may expose sensitive data or credentials
- Monitor outbound connections to prevent data exfiltration
- Consider using network policies to restrict egress traffic
- For production environments, consider setting this to `false` and pre-configuring allowed backends🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 61 - 62,
Add a short "Security Considerations" section after the deployment or
environment variables section that documents the risks of setting
ENABLE_DIRECT_CONNECTIONS to "true" and lists practical precautions: only enable
in trusted/authenticated environments, warn about data exfiltration and
credential exposure, advise monitoring outbound connections, suggest
egress/network policies, and recommend keeping it false in production or
pre-configuring allowed backends; reference ENABLE_DIRECT_CONNECTIONS by name in
the text so readers can correlate the guidance with the environment variable.
| spec: | ||
| volumes: | ||
| - name: webui-data | ||
| emptyDir: {} |
There was a problem hiding this comment.
小兔子给的建议是,不要用 emtyDir,应该用pvc,你看下呢。 emtypDir, pod重启,数据就没了。
There was a problem hiding this comment.
OCP 用的就是 emptyDir,这里和他一致吧,用户真正部署时,如果自己有 pvc 应该会调整的
| - Solution | ||
| ProductsVersion: | ||
| - 4.x | ||
| --- |
There was a problem hiding this comment.
这个metada的格式不对啊,应该是:
---
products:
- Alauda AI
kind:
- Solution
ProductsVersion:
- 4.x
---
d09c3d0 to
157cece
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md (2)
84-87:⚠️ Potential issue | 🟠 MajorAdd security guardrails for
ENABLE_DIRECT_CONNECTIONS=true.The section explains what it does but not when it is unsafe. Please add a short warning on data exfiltration/egress control and recommend disabling in production unless explicitly required.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 84 - 87, Add a concise security warning below the ENABLE_DIRECT_CONNECTIONS block: explain that setting ENABLE_DIRECT_CONNECTIONS=true allows external inference backends and can expose data to third-party services, advise disabling it in production unless explicitly required, and recommend reviewing egress controls, network policies, and data exfiltration risks before enabling; reference the configuration key ENABLE_DIRECT_CONNECTIONS and suggest adding the warning as an indented bullet or warning note directly after the existing purpose line.
53-55:⚠️ Potential issue | 🟠 MajorPersistent storage claim conflicts with
emptyDirusage.
emptyDiris ephemeral, so data is lost after pod rescheduling/restart. This contradicts the “supporting persistent data” statement (Line 13). Either switch to PVC in the example or explicitly state this manifest is non-persistent.Suggested doc-safe wording fix (if keeping
emptyDir)- It is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access. + It is suitable for deployment in containers locally or in the cloud, and supports persistent data (when backed by a PVC) and Ingress-based HTTPS access.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 53 - 55, The manifest uses an ephemeral emptyDir for the volume named webui-data which contradicts the “supporting persistent data” wording; either replace emptyDir with a persistentVolumeClaim reference (e.g., switch the webui-data volume to use a PVC and add a matching volumeClaimTemplates/claim definition) or update the text to explicitly state this example is non-persistent and will lose data on pod reschedule/restart; locate the volume block that references webui-data and make the corresponding change to the volume spec and documentation text.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Line 22: Update wording for US English/style in the documentation by replacing
“OpenAI API style backends” with “OpenAI API-compatible backends” (or
“API-style”) where the phrase appears (reference: the sentence beginning with
“Protocol Compatibility”), and change “afterwards” to “afterward” in the later
paragraph that uses that term (reference: the occurrence near the sentence
around Line 132).
---
Duplicate comments:
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Around line 84-87: Add a concise security warning below the
ENABLE_DIRECT_CONNECTIONS block: explain that setting
ENABLE_DIRECT_CONNECTIONS=true allows external inference backends and can expose
data to third-party services, advise disabling it in production unless
explicitly required, and recommend reviewing egress controls, network policies,
and data exfiltration risks before enabling; reference the configuration key
ENABLE_DIRECT_CONNECTIONS and suggest adding the warning as an indented bullet
or warning note directly after the existing purpose line.
- Around line 53-55: The manifest uses an ephemeral emptyDir for the volume
named webui-data which contradicts the “supporting persistent data” wording;
either replace emptyDir with a persistentVolumeClaim reference (e.g., switch the
webui-data volume to use a PVC and add a matching volumeClaimTemplates/claim
definition) or update the text to explicitly state this example is
non-persistent and will lose data on pod reschedule/restart; locate the volume
block that references webui-data and make the corresponding change to the volume
spec and documentation text.
| - **Data & Security**: Sessions and configurations can be persisted; can integrate with authentication, rate limiting, logging/monitoring. | ||
|
|
||
| ## Backend Integration | ||
| - **Protocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, XInference, TGI, etc.). |
There was a problem hiding this comment.
Minor wording consistency fixes for US English/style.
Use “OpenAI API-compatible” (or “API-style”) at Line 22, and “afterward” instead of “afterwards” at Line 132 for locale consistency.
Also applies to: 132-132
🧰 Tools
🪛 LanguageTool
[grammar] ~22-~22: Use a hyphen to join words.
Context: ...ocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, ...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` at line 22, Update
wording for US English/style in the documentation by replacing “OpenAI API style
backends” with “OpenAI API-compatible backends” (or “API-style”) where the
phrase appears (reference: the sentence beginning with “Protocol
Compatibility”), and change “afterwards” to “afterward” in the later paragraph
that uses that term (reference: the occurrence near the sentence around Line
132).
Summary by CodeRabbit