Decisions getroffen in Sprint 1

Architektur

D1: Open WebUI statt LibreChat

Wann: 2026-05-12 nachmittags Wer: Marvin Was: Open WebUI v0.9.5 als Chat-UI fuer VF, nicht LibreChat Warum: 5× groessere Community (124k vs 25k Stars), v0.8.0 hat LibreChat-Vorsprung-Features eingeholt (Analytics, Skills, Per-User-Resources, Open Responses Protocol), naeher an claude.ai-UX Konsequenz: Pattern-File open-webui-fargate-bedrock neu geschrieben, librechat-railway-multiuser als superseded markiert Reversibel: ja, Pattern-File LibreChat existiert weiter

D2: AWS Fargate statt Railway

Was: Hosting auf AWS Fargate (eu-central-1, av-production), nicht Railway Warum: Marvin’s AWS-First-Hosting-Pattern, gleicher Schirm wie mcp-vf-hosted, kein zweiter Vendor Konsequenz: ~+5-10 €/Mo vs Railway, aber kein zweiter AVV, alles im av-production-Account

D3: SQLite (zunaechst) statt PostgreSQL/DocumentDB

Was: Open WebUI nutzt SQLite-Default auf EFS-Volume Warum: Minimaler Setup-Aufwand fuer Pilot, Open WebUI’s Default Konsequenz erkannt: Lock-Contention auf EFS-NFS verursacht UI-Hangs (siehe Lessons-Learned). Followup zwingend: RDS-Migration in Phase 6.

D4: LiteLLM-Sidecar fuer Bedrock-Bridge

Was: LiteLLM als 2. Container im Fargate-Task, port 4000 intern Warum: Open WebUI hat kein natives Bedrock-Support; LiteLLM uebersetzt Bedrock-API zu OpenAI-API Konsequenz: +200 MB Image, ~5-10 €/Mo Compute, aber konsistent + zukunftssicher (auch andere Provider via gleichem LiteLLM)

D5: Single-Task statt Multi-Task

Was: desiredCount: 1 mit minHealthyPercent: 100 fuer Make-Before-Break Warum: Pilot-Setup, Cost-Optimierung. Multi-Task waere +35 €/Mo Konsequenz: Bei AZ-Outage (~1× pro 2-3 Jahre 30-60 Min): VF Chat down. Realistisch akzeptabel fuer Pilot.

D6: Cloudflare-Tunnel als einziger Public-Eingang (kein ALB)

Was: Wie bei mcp-vf-hosted: nur cloudflared-Sidecar, kein AWS-ALB Warum: Spart 25 €/Mo ALB-Cost, sauberer (kein Custom-Cert-Geziehe), eu-Edge automatisch Konsequenz: Tunnel-Hostname db84013f-3ab3-4ac6-bdbf-eca5b137a5ea.cfargotunnel.com, DNS-Record vf-chat.agenticventures.de zeigt darauf proxied

D7: Custom Model vf-sonnet als Default

Was: Open WebUI Custom-Model mit Sonnet 4.6 + MCP-Tools attached + System-Prompt Warum: MCP-Tools sind automatisch verfuegbar ohne User-Toggle. System-Prompt-Template-Variables substituieren in Custom-Models, nicht in User-Settings. Konsequenz: DEFAULT_MODELS=vf-sonnet im Stack. Wenn User stattdessen claude-sonnet-4-6 nackt waehlt, hat er keinen Date-Context.

D8: Bedrock EU-Only (keine us-Region)

Was: Nur eu.anthropic.claude-* CRIS-Profile in LiteLLM-Config whitelisted Warum: DSGVO-Versprechen an VF: „alles in EU” Konsequenz: Keine Image-Gen via Bedrock (nur in us-* verfuegbar). Image-Gen kommt in Sprint 2 ueber mcp-replicate-hosted.

D9: Forward-User-Info-Headers an MCPs

Was: ENABLE_FORWARD_USER_INFO_HEADERS=true Warum: Per-User-Audit-Trail in mcp-vf-hosted (Andre vs Christoph in CloudWatch unterscheidbar), spaeter Per-User-Filtering moeglich Konsequenz: mcp-vf-hosted bekommt zusaetzlich zu Scalekit-JWT noch X-OpenWebUI-User-Email etc. Headers

Pricing

P1: VF Self-Cost-Konditionen (Pilot weiterfuehrend)

Wann: 2026-05-12 spaet abends Wer: Marvin Was: VF zahlt nur Selbstkostenpreis fuer Open-WebUI-Hosting (~65 €/Mo nach RDS-Migration). Plus Bedrock 1:1 Pass-Through. Warum: Andre + Marvin sind Freunde, VF war Pattern-Pilot. Markt-Marge bringt fuer 1 Pilot-Kunde nichts; das Wissen + Referenzen sind der Mehrwert.

Schutzklauseln (kritisch, Marvin muss in AVV-Anpassung schreiben):

  1. Bedrock 1:1 Pass-Through, nicht im Self-Cost-Preis inkludiert — sonst Cost-Risk bei Token-Spike
  2. Sunset-Clause: „diese Pilot-Konditionen gelten bis 2026-08-31, danach review” — sonst wird’s Permanent-Discount und nimmt Verhandlungsbasis fuer Wachstum
  3. Stundensatz fuer Sprint 2-4 (m365-write-Refactor, Skills, Image-Gen): separat, nicht im Self-Cost-Hosting inkludiert

Konsequenz: VF-Kunden-File muss diese Konditionen explizit als „nicht als Marktpreis-Referenz” markieren (steht ja schon drin — pruefen ob aktualisiert).

P2: Ablehnung von Modell B/C (vorerst)

Was: Marvin lehnt Modell B (Hybrid 1.500€ Setup + 850€/Mo) und Modell C (Custom-Tier-Standard 5-8k€ Setup + 1.500€/Mo) fuer VF ab Warum: Andre ist Freund, kein Standard-Custom-Tier-Kunde Konsequenz: Bei zukuenftigen Custom-Tier-Kunden (Beer, Becker, Wöhrle, etc.) gilt B oder C als Default — VF ist explizit ausgenommen, dokumentiert in leistungen und vibe-factory

DSGVO

G1: AVV-Anpassung pending

Was: Subprozessoren-Liste muss um Cloudflare + (Open WebUI is MIT-License-Software, kein Vendor) erweitert werden Wann: ausstehend, Marvin formalisiert mit Andre Konsequenz: Bestehendes DSGVO-Briefing dsgvo-mcp-vf-hosted muss um Open-WebUI-Schicht ergaenzt werden (Conversation-History-Persistierung in SQLite/RDS, Bedrock-EU-Token-Flows)

Offene Entscheidungen (Sprint 2+)

  • OD1: m365 delegated OAuth jetzt oder spaeter? Aktuell Service-Principal (= alle User schreiben unter App-Identity). Fuer SharePoint-Audit-Trail muesste delegated OAuth, aber ist Sprint 2a Aufwand
  • OD2: mcp-replicate-hosted bauen oder warten bis VF konkret fragt? Plan steht in sprint-2-replicate-hosted
  • OD3: Andre + Christoph onboarden — Email-Reg+MFA oder Microsoft Entra OpenID? Bei 3 User: Email-Reg reicht. Bei 5+: Entra empfohlen
  • OD4: RDS Multi-AZ jetzt oder spaeter? Aktuell Single-AZ geplant (+14 €/Mo). Multi-AZ waere +14 €/Mo extra. Pilot Single-AZ OK, Production-Wachstum auf Multi-AZ