Open WebUI fuer Vibe Factory

Warum dieses Projekt

VF hat heute den mcp-vf-hosted Mono-MCP ueber claude.ai Pro Custom-Connector im Einsatz (Andre + bald Christoph). Skaliert nicht sauber auf mehrere User mit eigenen Conversation-Historien, kein Team-Workflow, kein Self-hosted Audit-Trail der Chat-Inhalte, und claude.ai Pro ist eine pro-User-25-€-Subscription.

Mit eigener Open WebUI-Instanz bekommt VF:

  • Eigene Multi-User-UI mit individuellem Login + Conversation-History pro User
  • AWS Bedrock EU als LLM-Backend (kein US-Hop, kein Anthropic-direct-Vertrag pro User noetig)
  • Anbindung an mcp-vf-hosted als bestehende MCP-Schicht via streamable-http
  • Eigener Audit-Layer ueber Conversations (DSGVO-konform persistiert in eu-central-1)
  • UX naeher an claude.ai als LibreChat — Skills, Channels, Knowledge-Bases pro User

Erstanwendung des Open WebUI + Fargate + Bedrock + Streamable-HTTP-MCP Patterns auf einen Production-Kunden.

Was schon da ist (NICHT doppelt bauen)

  • mcp-vf-hosted live unter https://mcp-vf.agenticventures.de/mcp mit Papierkram + TicketPAY + M365 (3 Sub-MCPs), streamable-http
  • AWS Bedrock aktiviert in av-production / eu-central-1, alle Claude 4.x EU-CRIS-Profile ACTIVE (Sonnet 4.6, Opus 4.7, Haiku 4.5) — live-getestet 2026-05-12
  • AWS CDK-Pattern etabliert via mcp-vf-hosted-Stack (Fargate + Sidecar + Cloudflare-Tunnel)
  • Cloudflare-Zone agenticventures.de mit Tunnel-Pattern + DNS-Edit-Token verfuegbar
  • Pattern-File open-webui-fargate-bedrock frisch geschrieben — gepinnte Versionen, Stolperer, Bedrock-Config, Forward-User-Info-Headers

Offene Decisions (vor Build-Start klaeren)

FrageOptionenDefault-Vorschlag
Wieviele User initial3 (Andre, Christoph, Marvin) / 5+ (komplettes VF-Team)Start mit 3, Erweiterung wenn klar wer dabei sein soll
Auth-ProviderEmail-Reg + MFA (Pilot 3 User) / Microsoft Entra OpenID (5+ User mit M365-Tenant-Pin)Email-Reg fuer Pilot, Entra OpenID als Folge wenn 5+
Mongo-Hostingself-hosted Mongo + EFS im Fargate (~15 €/Mo, all-AWS) / DocumentDB t4g.medium (~55 €/Mo, managed) / Atlas Serverless (~10 €/Mo, externer Vendor)self-hosted + EFS
Domainchat.vibefactory.de (deren Domain) / vf-chat.agenticventures.de (unsere Domain)vf-chat.agenticventures.de
File-Uploads-StorageS3 EU (av-production) / Cloudflare R2 EUS3 EU
MCP-Servernur mcp-vf-hosted (heute) / + mcp-replicate-hosted (Image-Gen, Folge-Sprint)mcp-vf-hosted im Sprint 1, Replicate im Sprint 2
m365-AuthApp-only Service-Principal wie heute / delegated OAuth pro UserApp-only initial, delegated als Folge-Sprint
Image-Generstmal weg / via Replicate-MCP in Sprint 2Sprint 2 (siehe sprint-2-replicate-hosted.md)
PricingA (Pilot weiter, ~400 €/Mo at-cost) / B (Hybrid: 1.500 € Setup + 850 €/Mo) / C (Custom-Tier-Standard)OFFEN, vor Build mit Marvin klaeren

Selbstkostenpreis (Lean-Pilot, all-AWS, ohne Bedrock)

PostenEUR/Mo
mcp-vf-hosted (laeuft schon)33 €
Open WebUI-Task (1.5 vCPU/3 GB Graviton, mit Mongo + cloudflared im selben Task)35 €
EFS-Storage + Backup4 €
S3-File-Uploads1 €
KMS + CloudWatch-Logs + ECR7 €
Cloudflare R2/Edge0 €
Lean-Pilot fix~80 €

Plus:

  • Bedrock-API-Calls als Pass-Through: 50-300 €/Mo variabel je nach Nutzung — wird 1:1 an VF weitergereicht, eigener AWS-Account-Eintrag
  • Optional Sprint 2 mcp-replicate-hosted: +33 €/Mo + Replicate-API-Pass-Through

Setup-Aufwand

Sprint 1 (initial): 5-6 Tage Bauzeit + 0.5 Tag Plan-Finalisierung = ~6 Tage. Mit m365-delegated-OAuth-Refactor: +2-3 Tage = ~9 Tage. Ohne Image-Gen.

Sprint 2 (Image-Gen via mcp-replicate-hosted): +1-2 Tage zusaetzlich, einige Wochen spaeter wenn Sprint 1 stabil.

Phasen Sprint 1

  1. Phase 0 — Decisions (0.5 Tag) — die offenen Punkte oben klaeren, plus Pricing
  2. Phase 1 — Stack-Skelett (2-3 Tage) — CDK-Stack analog mcp-vf-hosted: Open WebUI-Container + Mongo + cloudflared in einem Task, EFS-Volume fuer Mongo-Daten, S3 fuer File-Uploads, eigene Tunnel-Resource in Cloudflare, Bedrock-IAM-Permissions, Dashboard
  3. Phase 2 — Bedrock-Anbindung (0.5 Tag) — Open WebUI Admin-UI: Connections → Bedrock-Provider, 3 Modelle whitelisten, Test ueber UI
  4. Phase 3 — MCP-Anbindung (0.5 Tag) — mcp-vf-hosted als External-MCP-Server in Open WebUI Admin-UI, OAuth-Flow durchspielen, Tool-Sichtbarkeit verifizieren, Audit-Trail-Headers checken
  5. Phase 4 — User-Onboarding (1 Tag bei 3 Usern) — Email-Reg + MFA setup, Andre/Christoph/Marvin einladen, Smoke-Test mit echtem Tool-Call
  6. Phase 5 — DSGVO + AVV-Update (0.5 Tag) — Subprozessor-Liste erweitern (Open WebUI Software MIT, kein Vendor; Mongo Self-Hosted = kein externer Vendor; Replicate spaeter wenn Sprint 2), AVV-Addendum entwerfen

VF-Vault-Architektur (Direction-Setting, Stand 13.05.)

vf-vault-architektur.md — Zielbild: claude.ai Cowork bleibt VF’s Primaer-Frontend, Open WebUI ist Plan-B daneben. Beide nutzen Christoph’s SharePoint-Vault /Workshop/VibeFactory/. Drei-Phasen-Roadmap, Permission-Modell in 3 Layern, 5 Best-Practice-Vorschlaege an Christoph.

sprint-2a-spec.md — Bau-Spec fuer Sprint 2a Teil 1: m365 v0.3 delegated OAuth + neuer vf-vault Sub-MCP (Read-only). Architektur, Tool-Surface, DynamoDB-Schema, OAuth-Flow, Migration-Strategie, 4 offene Decisions. ~2 Tage Bauzeit.

_index.md — Run-Bericht der VF-Vault-Analyse mit Source-Files aus SharePoint.

Status: Sprint-2a-Spec wartet auf Marvin-Review (4 Decisions zu treffen), dann Code-Aenderung in mcp-m365 + mcp-vf-hosted.

Sprint 2 — Master-Plan (alle Items zusammen geplant)

Sprint 2 ist als zusammenhängender Block geplant in sprint-2-master-plan.md mit fuenf Teil-Sprints:

TeilWasTage
2am365 v0.3: delegated OAuth + 6 Write-Tools3
2bvf-context Sub-MCP + Dynamic-Prompt-Building (Marktdaten als Live-Quelle)2-4
2cmcp-transcribe-hosted (AssemblyAI EU + Diarization)2
2dmcp-replicate-hosted (Image-Gen) — Detail sprint-2-replicate-hosted.md1-2
2eVF Skills-Library (8+ Slash-Commands)3-5

Kritische Linie: 2a → 2b → 2e (jeder Teil-Sprint baut auf dem vorigen). 2c und 2d sind unabhaengig dazwischen schiebbar wenn ein Bedarfs-Trigger kommt.

Launch-Prompt fuer naechste Session

launch-prompt.md — ausfuehrbarer Prompt fuer den eigentlichen Build-Sprint. Vorbedingungen + Phasen-Steps + Wiki-Updates + Rollback.

Perfection-Roadmap (nach Audit 2026-05-17)

System-Audit ergab 6.6/10 — Top-Luecken Memory & State (4/10) und Evals (1/10). Drei Wellen geplant zur Hebung auf Best-in-Class:

WelleZiel-ScoreBautageCost-Delta/MoWann
welle-1-perfektion8.65+26 EUR (Fix), netto Cost-positivIn Progress seit 2026-05-17 — Tag 1 Eval-Cases done (25), Tag 2 next. Option C: Evals + ZDR/AVV + Tool-Call-Metric + Backend-Routing + Tool-Schema-Caching
welle-2-reife9.27-8+30 EURBacklog, Trigger: Welle 1 done + 4-6 Wochen Beobachtung
welle-3-excellence9.510-15variabelBacklog, opportunistisch pro Item
welle-4-capability-rollout(keine Score-Hebung)~13siehe FilePlanned 2026-05-18 — Permission-Architektur, Auth-Haertung, Buchhaltungs-Routinen, Standard-Stack agentic-ventures-sepa

Audit-Quelle: _index mit Baseline-JSON fuer Regression.

Permission-Architektur (RBAC pro User)

permission-architektur — Plan fuer rollenbasierte Tool-Sichtbarkeit: zwei Custom Models (vf-sonnet-allgemein + vf-sonnet-buchhaltung), Group-basierte Access-Control (crew + buchhaltung), Basis-System-Prompt-Architektur (_base.txt + Varianten + build.py), globale Send-Sperre (Drafts ja, Senden niemals), Praktikanten-Onboarding-Runbook. Status: draft, ~70 Min Admin-Aufwand bei Freigabe.

Cross-Refs

Verlauf

  • 2026-05-12 vormittags — Projekt angelegt nach Marvins Bitte „LibreChat fuer VF aufsetzen”. Cost-Modell durchgerechnet (~165 € Fix + Bedrock Pass-Through). Launch-Prompt fuer naechste Session geschrieben.
  • 2026-05-12 nachmittags — Marktscan + LibreChat-Alternativen recherchiert (Open WebUI v0.8 hat in Feb 2026 die LibreChat-Vorsprung-Features eingeholt). Marvin entscheidet Open WebUI statt LibreChat. Projekt-Ordner librechat-vf → openwebui-vf umbenannt, Pattern-File open-webui-fargate-bedrock frisch geschrieben. Image-Gen via Replicate-MCP als Sprint 2 markiert (Bedrock-EU hat keine Image-Gen-Models).
  • 2026-05-14 — Sprint 2a Block 1.1 done. VF-Vault-Analyse durchgefuehrt (Run) — Christoph’s SharePoint-Vault /Workshop/VibeFactory/ mit 00_-99_-Struktur + eigener CLAUDE.md + Refactor-Plan v2 entdeckt. Architektur-Plan (vf-vault-architektur.md) umgeschrieben: claude.ai Cowork bleibt VF-Primaer-Frontend, Open WebUI parallel als Plan-B. Sprint-2a-Spec geschrieben (sprint-2a-spec.md) — 4 Decisions approved (eigenes mcp-vault-Repo, JWT-sub-only-Auth, av-production-DDB, service-principal-Default). Neues Repo ~/source/mcps/mcp-vault/ mit Skelett (pyproject, README, settings, m365_backend mit SP-Backend funktional, server mit 5 Tools — 3 Code, 2 Block-2-Stubs). Capability-File mcp-vault angelegt. Naechster Schritt: Block 1.2 = lokaler Smoke mit VF-Credentials.
  • 2026-05-12 abends — Sprint 1 LIVE — Stack deployed auf https://vf-chat.agenticventures.de, 3 Container HEALTHY (open-webui + LiteLLM + cloudflared), Bedrock EU-CRIS-Profile angebunden (Sonnet 4.6, Haiku 4.5, Opus 4.7), mcp-vf-hosted als External-MCP-Server registriert, OAuth durchgelaufen, Tools live. Custom Model vf-sonnet mit attached MCPs + System-Prompt. Marvin als Admin registriert. Lessons: SQLite-EFS-Lock-Contention verursacht UI-Hangs (Mitigation UVICORN_WORKERS=2 + Custom-Model, echter Fix RDS-Migration als Phase 6 zwingend). Pricing: Self-Cost-Konditionen fuer VF (Freunde-Pilot, mit 3 Schutzklauseln — siehe Run-Akte). Vollstaendige Doku in Run-Akte 2026-05-12 — Decisions + Lessons-Learned.

Aktueller Stand (Sprint 1 done)

KomponenteStatus
Open WebUI Containerlive, v0.9.5, x86 1 vCPU / 3 GB
LiteLLM Bedrock-Bridgelive, 3 EU-CRIS-Profile, Prompt-Caching enabled
cloudflared Sidecarlive, Tunnel db84013f-3ab3-4ac6-bdbf-eca5b137a5ea
MCP-Anbindung mcp-vf-hostedOAuth durchgelaufen, Tools verfuegbar via vf-sonnet Custom Model
Admin-User Marvinregistriert
Andre + ChristophNOCH NICHT onboarded (Phase 4)
RDS-Migration (Hang-Fix)PFLICHT-Followup Phase 6
Cost (Pilot)~55 €/Mo Fix + 30-150 €/Mo Bedrock (Pass-Through an VF)