diff --git a/packages/playground/public/images/icons/openwebui.png b/packages/playground/public/images/icons/openwebui.png
new file mode 100644
index 0000000000..a158087e71
Binary files /dev/null and b/packages/playground/public/images/icons/openwebui.png differ
diff --git a/packages/playground/public/info/openwebui.md b/packages/playground/public/info/openwebui.md
new file mode 100644
index 0000000000..6cb846472a
--- /dev/null
+++ b/packages/playground/public/info/openwebui.md
@@ -0,0 +1,5 @@
+---
+title: Open WebUI
+---
+
+Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline. It supports various LLM runners like Ollama and OpenAI-compatible APIs, with built-in inference engine for RAG, making it a powerful AI deployment solution. For more details, check [Open WebUI documentation](https://www.manual.grid.tf/documentation/dashboard/solutions/openwebui.html).
diff --git a/packages/playground/src/components/vm_deployment_table.vue b/packages/playground/src/components/vm_deployment_table.vue
index 2f219528ed..bbdd4d0b8f 100644
--- a/packages/playground/src/components/vm_deployment_table.vue
+++ b/packages/playground/src/components/vm_deployment_table.vue
@@ -334,6 +334,7 @@ const filteredHeaders = computed(() => {
ProjectName.Presearch,
ProjectName.Umbrel,
ProjectName.Nextcloud,
+ ProjectName.Openwebui,
ProjectName.Funkwhale,
ProjectName.Casperlabs,
ProjectName.Mattermost,
diff --git a/packages/playground/src/constants/deployment_list.ts b/packages/playground/src/constants/deployment_list.ts
index 23ed230d41..7ef1f564da 100644
--- a/packages/playground/src/constants/deployment_list.ts
+++ b/packages/playground/src/constants/deployment_list.ts
@@ -89,6 +89,11 @@ export const deploymentListEnvironments = {
MATTERMOST_DOMAIN: false,
},
+ openwebui: {
+ SSH_KEY: _ssh,
+ OPENWEBUI_DOMAIN: "Open WebUI Domain",
+ },
+
owncloud: {
SSH_KEY: _ssh,
OWNCLOUD_DOMAIN: "Owncloud Domain",
diff --git a/packages/playground/src/router/index.ts b/packages/playground/src/router/index.ts
index cf5e78e5eb..b5e95495cc 100644
--- a/packages/playground/src/router/index.ts
+++ b/packages/playground/src/router/index.ts
@@ -143,6 +143,28 @@ function createApplicationsRoutes(): RouteRecordRaw[] {
},
},
},
+ {
+ path: DashboardRoutes.Applications.Openwebui,
+ component: () => import("../views/openwebui_view.vue"),
+ meta: {
+ title: "Open WebUI",
+ info: { page: "info/openwebui.md" },
+ navbarConfig: {
+ back: true,
+ path: [
+ { title: "Deploy" },
+ {
+ title: "Applications",
+ disabled: false,
+ to: DashboardRoutes.Deploy.Applications,
+ },
+ {
+ title: "Open WebUI",
+ },
+ ],
+ },
+ },
+ },
// {
// path: DashboardRoutes.Applications.Owncloud,
// component: () => import("../views/owncloud_view.vue"),
diff --git a/packages/playground/src/router/routes.ts b/packages/playground/src/router/routes.ts
index dd585541c1..bbed3dfa7f 100644
--- a/packages/playground/src/router/routes.ts
+++ b/packages/playground/src/router/routes.ts
@@ -60,6 +60,7 @@ enum ApplicationRoutes {
Discourse = "/deploy/applications/discourse/",
Taiga = "/deploy/applications/taiga/",
Owncloud = "/deploy/applications/owncloud/",
+ Openwebui = "/deploy/applications/openwebui/",
Nextcloud = "/deploy/applications/nextcloud/",
Presearch = "/deploy/applications/presearch/",
Subsquid = "/deploy/applications/subsquid/",
diff --git a/packages/playground/src/types/index.ts b/packages/playground/src/types/index.ts
index b7f1406750..730e41385f 100644
--- a/packages/playground/src/types/index.ts
+++ b/packages/playground/src/types/index.ts
@@ -116,6 +116,7 @@ export enum ProjectName {
Funkwhale = "Funkwhale",
Mastodon = "Mastodon",
Mattermost = "Mattermost",
+ Openwebui = "Openwebui",
Owncloud = "Owncloud",
Nextcloud = "Nextcloud",
Peertube = "Peertube",
@@ -148,6 +149,7 @@ export enum SolutionCode {
funkwhale = "fw",
taiga = "tg",
discourse = "dc",
+ openwebui = "oi",
owncloud = "oc",
nextcloud = "nc",
mattermost = "mm",
@@ -186,6 +188,7 @@ export const solutionType: { [key: string]: string } = {
kubernetes: "Kubernetes",
mattermost: "Mattermost",
nodepilot: "Node Pilot",
+ openwebui: "Open WebUI",
owncloud: "Owncloud",
nextcloud: "Nextcloud",
peertube: "Peertube",
diff --git a/packages/playground/src/utils/delete_deployment.ts b/packages/playground/src/utils/delete_deployment.ts
index 11ef548762..019aef8417 100644
--- a/packages/playground/src/utils/delete_deployment.ts
+++ b/packages/playground/src/utils/delete_deployment.ts
@@ -94,6 +94,7 @@ export function solutionHasGateway(projectName: ProjectName) {
ProjectName.Taiga,
ProjectName.Wordpress,
ProjectName.Nextcloud,
+ ProjectName.Openwebui,
ProjectName.Gitea,
ProjectName.Jenkins,
ProjectName.Jitsi,
diff --git a/packages/playground/src/views/openwebui_view.vue b/packages/playground/src/views/openwebui_view.vue
new file mode 100644
index 0000000000..273afc2c92
--- /dev/null
+++ b/packages/playground/src/views/openwebui_view.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/playground/src/views/solutions_view.vue b/packages/playground/src/views/solutions_view.vue
index 27717ada6f..2922f708c3 100644
--- a/packages/playground/src/views/solutions_view.vue
+++ b/packages/playground/src/views/solutions_view.vue
@@ -99,6 +99,13 @@ export default {
route: DashboardRoutes.Applications.StaticWebsite,
releaseDate: new Date("2024-11-13"),
},
+ {
+ title: "Open WebUI",
+ excerpt:
+ "Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.",
+ icon: "openwebui.png",
+ route: DashboardRoutes.Applications.Openwebui,
+ },
{
title: "Nextcloud",
excerpt:
diff --git a/packages/playground/src/weblets/tf_deployment_list.vue b/packages/playground/src/weblets/tf_deployment_list.vue
index 6898d34d7b..49039c65c2 100644
--- a/packages/playground/src/weblets/tf_deployment_list.vue
+++ b/packages/playground/src/weblets/tf_deployment_list.vue
@@ -199,6 +199,18 @@
+
+
+
+
+
+
+
+
+
+ Deploy an Open WebUI Instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+