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):
- Bedrock 1:1 Pass-Through, nicht im Self-Cost-Preis inkludiert — sonst Cost-Risk bei Token-Spike
- Sunset-Clause: „diese Pilot-Konditionen gelten bis 2026-08-31, danach review” — sonst wird’s Permanent-Discount und nimmt Verhandlungsbasis fuer Wachstum
- 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