[PR #23849] [CLOSED] feat(chatbot): add BOPA Adviseur assistant wired to memory MCP #43037

Closed
opened 2026-04-25 14:45:18 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/23849
Author: @Schravenralph
Created: 4/17/2026
Status: Closed

Base: mainHead: feature/bopa-assistant-config


📝 Commits (10+)

  • 183b35e chore: set up RM fork with upstream remote and gitignore
  • 5558911 feat: add RM Docker Compose with PostgreSQL, Ollama, and Clerk OIDC config
  • 992f641 feat: add Ruimtemeesters brand colors to Tailwind config
  • 2902ebf feat: apply Ruimtemeesters brand theme CSS overrides
  • 9e145aa feat: replace logos, favicon, and app name with Ruimtemeesters branding
  • ec30c8f feat: customize welcome page with RM branding and Dutch prompt suggestions
  • bb9f5f6 feat: add Clerk shared cookie SSO middleware for seamless auth
  • b65847e feat: auto-redirect to Clerk OIDC when login form is disabled
  • 6c3600a fix: move CSS import to end of file and prevent OIDC redirect loop
  • c38504d Merge Phase A1+A2: Fork, brand, and Clerk SSO

📊 Changes

92 files changed (+13206 additions, -59 deletions)

View changed files

.claude/skills/bopa/SKILL.md (+77 -0)
.env.rm.example (+70 -0)
📝 .gitignore (+5 -0)
📝 backend/open_webui/config.py (+12 -15)
📝 backend/open_webui/main.py (+7 -0)
backend/open_webui/middleware/__init__.py (+0 -0)
backend/open_webui/middleware/clerk_sso.py (+85 -0)
backend/open_webui/test/util/test_mcp_client.py (+42 -0)
backend/open_webui/utils/clerk_sso.py (+199 -0)
📝 backend/open_webui/utils/mcp/client.py (+20 -13)
📝 backend/open_webui/utils/oauth.py (+8 -3)
backend/open_webui/utils/token_forwarding.py (+65 -0)
docker-compose.rm.yaml (+131 -0)
docs/superpowers/plans/2026-04-03-full-stack-review-debug-test.md (+1348 -0)
docs/superpowers/specs/2026-04-03-full-stack-review-debug-test-design.md (+249 -0)
product-docs/00-onboarding/getting-started.md (+70 -0)
product-docs/01-architecture/multi-surface-platform-vision.md (+216 -0)
product-docs/01-architecture/system-design.md (+70 -0)
product-docs/04-policies/tool-development.md (+107 -0)
product-docs/06-adr/0001-fork-openwebui.md (+25 -0)

...and 72 more files

📄 Description

Summary

Adds the BOPA Adviseur assistant to this OpenWebUI fork, wired to the now-merged @rm-mcp/memory MCP server (Ruimtemeesters-MCP-Servers PR #4 + #5). First end-to-end demo-ready advisor workflow.

Spec: product-docs/superpowers/specs/2026-04-17-bopa-assistant-config.md.

What ships

  • New assistant rm-bopa-adviseur with 3 Dutch suggestion prompts, 3 MCP tool servers (rm-memory, rm-databank, rm-geoportaal), and the full Dutch BOPA workflow as its system prompt.
  • General assistant (rm-assistent) gains rm-memory in its toolIds so it can read session state alongside its existing tools.
  • 3 new slash prompts: /bopa-haalbaarheid, /bopa-strijdigheid, /bopa-beleid.
  • --dry-run flag on register_assistants.py for safe payload inspection — token is no longer required when --dry-run is set.
  • product-docs/25-assistants/bopa-adviseur.md — one-page assistant description matching the 5 siblings.
  • rm-tools/ADMIN_SETUP.md — one-time admin-UI checklist for registering the 9 MCP external tool servers (ID strings must match meta.toolIds exactly; sanity-check curl for rm-memory included).
  • .claude/skills/bopa/SKILL.md — canonical BOPA skill for Claude Code users, kept in sync with the source of truth at Ruimtemeesters-MCP-Servers/packages/memory/skills/bopa.md.

Validation

Metric Baseline After
BOPA-specific assistant in OpenWebUI 0 1
Assistants referencing rm-memory 0 2 (BOPA Adviseur + general Assistent)
BOPA slash prompts 0 3
Assistants total 5 6
Prompts total 8 11
Skill file reachable from Claude Code (.claude/skills/bopa/SKILL.md) absent present
Python syntax check (python3 -m py_compile) pass pass
Dry-run enumeration n/a 6/6 + 11/11, clean

How to deploy

# On the deploy host (admin):
# 1. Pull + restart MCP-Servers so memory + gateway route are up
#    (see Ruimtemeesters-MCP-Servers main README)
# 2. Register the 9 tool servers in Admin Settings → External Tools
#    (follow rm-tools/ADMIN_SETUP.md — IDs must match exactly)
# 3. Register/update assistants + prompts:
python rm-tools/register_assistants.py \
  --url https://chat.datameesters.nl \
  --token <admin-jwt>
# 4. Smoke: pick BOPA Adviseur, use suggestion-prompt #1, verify
#    memory.bopa_sessions has a new row with api_key_name LIKE 'gateway:%'.

Out of scope (follow-ups)

  • Programmatic registration of external tool servers (OpenWebUI admin API is undocumented).
  • /bopa-omgevingsaspecten, /bopa-onderbouwing, /bopa-toetsing slash prompts — ship when the matching MCP tools land.
  • OpenWebUI inlet filter to auto-inject active BOPA session summary.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/23849 **Author:** [@Schravenralph](https://github.com/Schravenralph) **Created:** 4/17/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feature/bopa-assistant-config` --- ### 📝 Commits (10+) - [`183b35e`](https://github.com/open-webui/open-webui/commit/183b35ef3f18a692c8ab26924487c9f17ff0c82d) chore: set up RM fork with upstream remote and gitignore - [`5558911`](https://github.com/open-webui/open-webui/commit/5558911bf62a28f917c93d36be17173962b90818) feat: add RM Docker Compose with PostgreSQL, Ollama, and Clerk OIDC config - [`992f641`](https://github.com/open-webui/open-webui/commit/992f641e234b1920bbaf6731e1d8907dc98d08a5) feat: add Ruimtemeesters brand colors to Tailwind config - [`2902ebf`](https://github.com/open-webui/open-webui/commit/2902ebf4a33f338c83584969854bfcfad50a513e) feat: apply Ruimtemeesters brand theme CSS overrides - [`9e145aa`](https://github.com/open-webui/open-webui/commit/9e145aa5e37d26908eb1adb33cd3edbb2f7282f9) feat: replace logos, favicon, and app name with Ruimtemeesters branding - [`ec30c8f`](https://github.com/open-webui/open-webui/commit/ec30c8f23a46fc8d56cc4377127ff5f0a62f346a) feat: customize welcome page with RM branding and Dutch prompt suggestions - [`bb9f5f6`](https://github.com/open-webui/open-webui/commit/bb9f5f62c11f3656a9811c0bae70977c78821af8) feat: add Clerk shared cookie SSO middleware for seamless auth - [`b65847e`](https://github.com/open-webui/open-webui/commit/b65847e790fb2d3479ce55cd4ad46c2bde828c19) feat: auto-redirect to Clerk OIDC when login form is disabled - [`6c3600a`](https://github.com/open-webui/open-webui/commit/6c3600a905454725b991213643b1b937d7b6c639) fix: move CSS import to end of file and prevent OIDC redirect loop - [`c38504d`](https://github.com/open-webui/open-webui/commit/c38504d7478139244e7883c507e4cba237333496) Merge Phase A1+A2: Fork, brand, and Clerk SSO ### 📊 Changes **92 files changed** (+13206 additions, -59 deletions) <details> <summary>View changed files</summary> ➕ `.claude/skills/bopa/SKILL.md` (+77 -0) ➕ `.env.rm.example` (+70 -0) 📝 `.gitignore` (+5 -0) 📝 `backend/open_webui/config.py` (+12 -15) 📝 `backend/open_webui/main.py` (+7 -0) ➕ `backend/open_webui/middleware/__init__.py` (+0 -0) ➕ `backend/open_webui/middleware/clerk_sso.py` (+85 -0) ➕ `backend/open_webui/test/util/test_mcp_client.py` (+42 -0) ➕ `backend/open_webui/utils/clerk_sso.py` (+199 -0) 📝 `backend/open_webui/utils/mcp/client.py` (+20 -13) 📝 `backend/open_webui/utils/oauth.py` (+8 -3) ➕ `backend/open_webui/utils/token_forwarding.py` (+65 -0) ➕ `docker-compose.rm.yaml` (+131 -0) ➕ `docs/superpowers/plans/2026-04-03-full-stack-review-debug-test.md` (+1348 -0) ➕ `docs/superpowers/specs/2026-04-03-full-stack-review-debug-test-design.md` (+249 -0) ➕ `product-docs/00-onboarding/getting-started.md` (+70 -0) ➕ `product-docs/01-architecture/multi-surface-platform-vision.md` (+216 -0) ➕ `product-docs/01-architecture/system-design.md` (+70 -0) ➕ `product-docs/04-policies/tool-development.md` (+107 -0) ➕ `product-docs/06-adr/0001-fork-openwebui.md` (+25 -0) _...and 72 more files_ </details> ### 📄 Description ## Summary Adds the **BOPA Adviseur** assistant to this OpenWebUI fork, wired to the now-merged `@rm-mcp/memory` MCP server (Ruimtemeesters-MCP-Servers PR #4 + #5). First end-to-end demo-ready advisor workflow. Spec: `product-docs/superpowers/specs/2026-04-17-bopa-assistant-config.md`. ## What ships - **New assistant** `rm-bopa-adviseur` with 3 Dutch suggestion prompts, 3 MCP tool servers (`rm-memory`, `rm-databank`, `rm-geoportaal`), and the full Dutch BOPA workflow as its system prompt. - **General assistant (`rm-assistent`)** gains `rm-memory` in its toolIds so it can read session state alongside its existing tools. - **3 new slash prompts**: `/bopa-haalbaarheid`, `/bopa-strijdigheid`, `/bopa-beleid`. - **`--dry-run` flag** on `register_assistants.py` for safe payload inspection — token is no longer required when `--dry-run` is set. - **`product-docs/25-assistants/bopa-adviseur.md`** — one-page assistant description matching the 5 siblings. - **`rm-tools/ADMIN_SETUP.md`** — one-time admin-UI checklist for registering the 9 MCP external tool servers (ID strings must match `meta.toolIds` exactly; sanity-check curl for rm-memory included). - **`.claude/skills/bopa/SKILL.md`** — canonical BOPA skill for Claude Code users, kept in sync with the source of truth at `Ruimtemeesters-MCP-Servers/packages/memory/skills/bopa.md`. ## Validation | Metric | Baseline | After | |---|---|---| | BOPA-specific assistant in OpenWebUI | 0 | 1 | | Assistants referencing `rm-memory` | 0 | 2 (BOPA Adviseur + general Assistent) | | BOPA slash prompts | 0 | 3 | | Assistants total | 5 | 6 | | Prompts total | 8 | 11 | | Skill file reachable from Claude Code (`.claude/skills/bopa/SKILL.md`) | absent | present | | Python syntax check (`python3 -m py_compile`) | pass | pass | | Dry-run enumeration | n/a | 6/6 + 11/11, clean | ## How to deploy ```bash # On the deploy host (admin): # 1. Pull + restart MCP-Servers so memory + gateway route are up # (see Ruimtemeesters-MCP-Servers main README) # 2. Register the 9 tool servers in Admin Settings → External Tools # (follow rm-tools/ADMIN_SETUP.md — IDs must match exactly) # 3. Register/update assistants + prompts: python rm-tools/register_assistants.py \ --url https://chat.datameesters.nl \ --token <admin-jwt> # 4. Smoke: pick BOPA Adviseur, use suggestion-prompt #1, verify # memory.bopa_sessions has a new row with api_key_name LIKE 'gateway:%'. ``` ## Out of scope (follow-ups) - Programmatic registration of external tool servers (OpenWebUI admin API is undocumented). - `/bopa-omgevingsaspecten`, `/bopa-onderbouwing`, `/bopa-toetsing` slash prompts — ship when the matching MCP tools land. - OpenWebUI inlet filter to auto-inject active BOPA session summary. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-25 14:45:18 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#43037