Skip to main content

Front-End Stack Deep Research & Scoring (2026–2030)

Status: Research complete, verified 2026-07-28 · Feeds: proposed ADR-022 (product front-end) · Relates: ADR-003 (internal BC1 surface), shared-chat-surface pattern Scope: customer-facing front-end for the pentagon portfolio (CloudOps · Runbooks, FinOps · FOCUS, Resume · Premium, Platform · IDP, Command · Center), greenfield, no backward compatibility, solo-founder + 38-agent talent bench, backend ladder local/Docker → Anthropic Managed Agents → AWS Bedrock AgentCore (Sydney).

1. Decision (TL;DR)

Build the product shell on assistant-ui (MIT, headless React) with the AG-UI protocol as the single wire contract, over a thin Python/FastAPI gateway running the Claude Agent SDK. Weighted score 87/100 — the only candidate that spans all three backend phases (FastAPI local → Managed Agents → AgentCore) without a front-end rewrite, and the only one where runbooks PyPI, Jupyter, and Vizro plug in as first-class Python citizens.

  • AG-UI is now infrastructure, not a bet: native on Bedrock AgentCore Runtime since 2026-03-13 in 14 regions including ap-southeast-2 Sydney (AWS What's New), first-party emitters from AWS Strands, Pydantic AI, Google ADK, Microsoft Agent Framework (docs.ag-ui.com); CopilotKit raised $27M Series A (May 2026) to steward it.
  • Claude Agent SDK is officially supported on AgentCore Runtime (AWS docs), with an ANZ FSI production proof point: BGL (Australian SMSF fintech) runs Claude Agent SDK on AgentCore with SKILL.md-per-product-line — the exact pattern of our 227-skill library.
  • LibreChat stays, but as the internal ops console (config-not-fork), per the existing shared-chat-surface pattern. It scored #2 (77/100) on day-one enterprise features (free OIDC/SAML/LDAP/RBAC) but is a ~781k-LOC generic chat platform, not a white-label product shell.
  • Do not build the product on Chainlit (maintainer risk), the Vercel chatbot template (TS-only backend, fork-drift, no tenancy), AWS GenU (Bedrock-only — cannot run the local-first phase), or the Anthropic chat-sdk quickstart (demo-grade; Managed Agents is beta with no ZDR — an APRA CPS 234 conversation for FSI buyers).

2. Business Value for the Board

PersonaWhat this decision buys (2026–2030)
CEOOne white-label shell serves all 5+ products — ~80% front-end reuse per new product launch; brand equity fully owned (MIT/Apache stack, $0 license COGS); differentiator is watching the 38-agent fleet work with HITL gates — rendered live via AG-UI tool-call/state events, which no off-the-shelf chat clone offers.
CFOUnit economics are metered end-to-end: Sonnet 5 at $2/$10 per MTok intro (to 2026-08-31, then $3/$15), Haiku 4.5 $1/$5 for routing, Opus 5 $5/$25 for planning (Anthropic pricing); Managed Agents adds $0.08/session-hour; AgentCore bills $0.0895/vCPU-hr active + $0.00945/GB-hr — idle-while-streaming is ~free (AgentCore pricing). No per-seat vendor licenses anywhere in the stack. Note: Anthropic prohibits reselling claude.ai subscriptions — customer products run on API-key billing by design.
CTOOne wire protocol (AG-UI over SSE) from day-1 Docker to 2028 AgentCore — the backend ladder is an env-var change (CLAUDE_CODE_USE_BEDROCK=1), not a rewrite. Skills are now an open standard (agentskills.io, adopted by Claude, Gemini CLI, Copilot, Cursor, Databricks, Snowflake) — the 227-skill / 38-agent ADLC spine is a durable, portable asset, loaded unchanged by the Agent SDK.
CDONotebooks and dashboards become governed product surfaces: papermill runs surface as evidence artifacts in chat; Vizro dashboards are versioned Python configs authored/validated by agents via Vizro-MCP (official McKinsey MCP server, Docker mcp/vizro); FOCUS 1.2 pipeline (runbooks [focus] extra + DuckDB) feeds both chat answers and CxO KPI pages; full session event logs + OpenTelemetry for lineage.
CSO/CISOSovereign-first: phase 1 is 100% self-hosted Docker; phase 3 is AgentCore in Sydney with microVM session isolation, VPC/PrivateLink, IAM SigV4/OAuth. Flag: Managed Agents beta is not ZDR/HIPAA-eligible — restrict it to non-sensitive async jobs; FSI tenant data stays on self-hosted or AgentCore paths. MCP tool plane follows the OWASP MCP cheat sheet: curated read-only typed tools, per-tenant readonly IAM profiles, HITL elicitation on mutations — matching the ADLC authority chain.

3. Method & Weights

Six candidates scored 1–5 per criterion against verified July-2026 facts (GitHub API, npm/PyPI registries, vendor docs; five parallel research agents, cross-checked). Weights per HITL direction (all four dimensions heavy + business-value lens + voice light):

CriterionWeightWhat it measures
Solo-founder velocity20%Time-to-first-revenue, owned LOC, AI-agent-buildable codebase, upgrade pain
Claude-native + backend portability20%Agent SDK/MCP/skills fit; survives local → Managed Agents → AgentCore without rewrite
Python/Jupyter/Vizro integration20%runbooks PyPI, 62 notebooks, Vizro/Plotly as first-class citizens
Enterprise readiness day one20%SSO/OIDC/SAML, RBAC, multi-tenant posture, audit, i18n
Business value & incremental delivery15%White-label product-grade UX, differentiation, FAANG-style incremental shipping
Voice5%Credible 2026 voice path

4. Scoring Matrix

CandidateSolo velocity (20)Claude + portability (20)Py/Jupyter/Vizro (20)Enterprise day-1 (20)Biz value (15)Voice (5)Weighted /100
assistant-ui + AG-UI (build thin shell)45535487 🥇
LibreChat (adopt platform)43453477 🥈
Chainlit (Python framework)44522369 🥉
AWS GenU (CDK platform)33243562
Anthropic chat-sdk quickstart (Managed Agents)53313158
vercel/chatbot (template fork)43223356

5. Candidate Verdicts (verified facts)

assistant-ui + AG-UI — BUILD ON IT. MIT, 11.3k★, npm @assistant-ui/react 1.47M downloads/week, v0.15.0 shipped 2026-07-28; YC W25, used by LangChain, Mastra, Browser Use (repo). Headless primitives + shadcn-style copied components (you own hundreds of LOC, not thousands); runtimes for AI SDK v4–v7, AG-UI, A2A, LangGraph, external store; generative tool-UI (makeAssistantToolUI) renders runbook evidence, approval cards, Plotly panes; documented voice adapters (realtime/dictation/read-aloud, LiveKit + ElevenLabs examples); optional Cloud SaaS (skippable — ThreadHistoryAdapter + own Postgres). AG-UI protocol: MIT, 15k★, Python SDK ag-ui-protocol 0.1.19 at 1.77M dl/wk. Gaps to own: auth/RBAC/tenancy (BYO), and the Claude-Agent-SDK→AG-UI bridge is community-grade (ag-ui-claude-sdk 0.1.5; issue #439 open) — fork and own ~300 LOC of glue.

LibreChat — ADOPT INTERNALLY, don't productize. MIT, ~37–41k★, acquired by ClickHouse 2025-11-04 ("remains 100% open-source", announcement); v0.8.7 (2026-06-23), monthly cadence; Shopify runs "thousands of custom agents" on it. Only candidate with free OIDC + SAML + LDAP + Entra group-sync, custom RBAC, admin panel, 40+ locales; best-in-class MCP client (per-user, OAuth PKCE, streamable HTTP); agents support SKILL.md; STT/TTS voice built in; Code Interpreter now open-sourced (Apache-2.0) post-acquisition. Why not the product: ~781k LOC TS/JS fork surface, MongoDB+Meilisearch+pgvector ops sprawl, generic ChatGPT-clone UX, no AG-UI/AgentCore ingress, white-label = fork of a fast-moving 211k-LOC client. Perfect fit for the existing shared-chat-surface pattern (internal HITL console, design-partner pilots).

Chainlit — demos only. Apache-2.0, 12.2k★, pure-Python (it is FastAPI), native cl.Plotly, Claude Agent SDK runs in-process — but the original team stepped back 2025-05-01 ("Chainlit SAS provides no warranties"), Literal AI shut down 2025-10-31, latest release 2026-04-22 with a 3-month gap. Not a 2026–2030 product foundation.

AWS GenU — pattern mine for Phase 3. MIT-0, ~1.4k★, extremely active (Claude Opus 5 support committed 2026-07-25). Bedrock-only — zero Anthropic-direct path, so it cannot run the local-first phase at all. But it is the cleanest AgentCore-native chat front-end surveyed (agentCoreExternalRuntimes[] plugs your externally-deployed Claude-Agent-SDK runtime into its UI), with SAML-via-Cognito guides, closed-network VPC mode (FSI-relevant), and true speech-to-speech voice (Nova Sonic). Clone its CDK constructs later; don't build on it now.

Anthropic managed-agents/chat-sdk quickstart — reference, not product. MIT, inside claude-quickstarts (17.3k★). ~15 files of Hono + vercel/chat web adapter where conversation ID = Managed Agents session ID ("the server stores nothing") — the blessed pattern for fronting Managed Agents (public beta 2026-04-08, $0.08/session-hr, 300/600 rpm org limits, no ZDR/HIPAA). Auth is an explicit stub. Steal the session-mapping + SSE event_deltas pattern for our Phase-2 adapter.

vercel/chatbot (ex ai-chatbot) — component donor. Apache-2.0, 20.7k★, but: a fork-me template with zero releases/changelog, AI SDK v6 with a pending v7 migration, no Dockerfile, Vercel gravity (AI Gateway default models are Kimi/DeepSeek, Blob storage), no tenant/RBAC/audit schema. Naming trap: "Chat SDK" (chat-sdk.dev) now means vercel/chat, the multi-platform bot SDK. Real value for us: AI Elements (shadcn registry, ~45 components — Reasoning, Tool, Plan, Confirmation, Voice) as copy-in donors to the assistant-ui shell, and Pydantic AI's first-class VercelAIAdapter if we ever want the AI-SDK data-stream wire instead of AG-UI.

Challengers ruled out: Open WebUI (~139k★ but BSD-3 + branding clause — white-label >50 users requires paid enterprise license; ADR-003's internal BC1 use stays compliant with branding retained), Lobe Chat (derivative-work commercial license), better-chatbot (young, solo maintainer), NLUX (dead since 2024), big-AGI/Hollama (single-user).

6. Reference Architecture — one UI, one protocol, three backend phases

┌───────────────────────────────────────────────────────────────────────┐
│ PRODUCT SHELL (owned, white-label) — Next.js + assistant-ui (MIT) │
│ · chat + generative tool-UI (runbook evidence, FinOps charts) │
│ · HITL approval cards (ADLC authority chain: Phase 3+ gates) │
│ · CxO KPI pages (Vizro iframes) · artifacts panel · voice adapters │
└──────────────────────────┬────────────────────────────────────────────┘
│ AG-UI events over SSE — ONE wire, 2026→2030
┌──────────────────────────▼────────────────────────────────────────────┐
│ FASTAPI GATEWAY (Python) — OIDC auth, tenancy, audit log, rate limits │
│ emits AG-UI (`ag-ui-protocol` PyPI) · owns Claude-SDK→AG-UI bridge │
├───────────────────────────────────────────────────────────────────────┤
│ AGENT PLANE (talent bench: 38 agents · 227 skills · hooks) │
│ P1 NOW Claude Agent SDK (Python) in Docker · ClaudeSDKClient │
│ streaming · SessionStore→Postgres · per-tenant cwd/config │
│ P2 OPT Anthropic Managed Agents — async/scheduled jobs (beta, │
│ no-ZDR → non-sensitive workloads only) │
│ P3 SCALE Bedrock AgentCore Runtime (Sydney) — same container, │
│ CLAUDE_CODE_USE_BEDROCK=1 · AG-UI native endpoint · microVM │
├───────────────────────────────────────────────────────────────────────┤
│ TOOL PLANE — MCP, stateless streamable-HTTP (2026-07-28 spec) │
│ runbooks-mcp (FastMCP 3, 10–20 curated typed tools from runbooks 1.5.5)│
│ vizro-mcp · jupyter-mcp/papermill executor · awslabs billing/cloudwatch│
├───────────────────────────────────────────────────────────────────────┤
│ INSIGHT PLANE — Vizro dashboards (gunicorn, oauth2-proxy) · papermill │
│ notebook runs → HTML/Plotly artifacts · DuckDB FOCUS 1.2 pipeline │
└───────────────────────────────────────────────────────────────────────┘

Why this survives 2030: the front-end only speaks AG-UI. Phase 1↔3 swaps are backend deployments — AgentCore Runtime natively terminates AG-UI (SSE + WebSocket) in Sydney, and Anthropic's own recommended path is "prototype with the Agent SDK locally, then move to Managed Agents for production" (Agent SDK overview). Model tiering per AgentDefinition: Haiku 4.5 triage → Sonnet 5 workhorse → Opus 5 orchestrator/FinOps reasoning.

7. Solid Integration Blueprint (manager's constraint)

runbooks PyPI (v1.5.5, Apache-2.0, already ships mcp>=1.12.3) — do not auto-wrap all 68 CLI commands. Curate 10–20 high-value operations as typed FastMCP 3 tools (Apache-2.0, 26.9k★, 18.3M dl/wk, v3 GA 2026-02-18) that import the package's Python API directly; serve stateless streamable-HTTP in Docker. Auto-wrappers produce string-typed, LLM-hostile schemas; curated tools + Pydantic models give the agents reliable contracts and give buyers an auditable allowlist. Mutating operations require HITL elicitation (surfaced as assistant-ui approval cards) — the authority chain becomes visible product UX.

Jupyter (62 notebooks) — three tiers, zero bulk rewrite: (1) papermill 2.7.0 (3.65M dl/wk) headless parameterized runs exposed as one MCP tool — agent executes finops-dashboard.ipynb for a tenant, nbconvert → HTML/PNG artifact rendered in chat; the notebook collection becomes product features as-is. (2) datalayer/jupyter-mcp-server (v1.0.2, BSD-3, official Docker image) for interactive internal/analyst sessions. (3) marimo (Apache-2.0, ~21k★, 577k dl/wk, CoreWeave-acquired) for the top-10 flagship notebooks as reactive branded apps (marimo run, WASM export) — Voila's credible successor; convert selectively, not wholesale.

Vizro / KPI dashboards (CEO·CTO·CFO·CDO·CSO) — Vizro 0.1.59 (Apache-2.0) deploys as stateless Dash/Flask behind gunicorn; Vizro-AI dashboards are officially superseded by Vizro-MCP (uvx vizro-mcp / Docker mcp/vizro) — agents author + validate dashboard configs, humans get governed, versioned KPI pages. Embedding: dash-embedded is Dash-Enterprise-commercial, so the OSS pattern is same-domain iframe behind one oauth2-proxy/OIDC session (/dash/* routes), plus inline Plotly JSON in chat tool-UIs for "answer + chart in one turn" (CFO cost brief), deep-linking to the full Vizro app. AWS-native reporting plane later: CID FOCUS Dashboard (GA) consumes Data Exports FOCUS 1.2 multi-cloud — complements, doesn't replace, the Vizro layer.

Voice (nice-to-have, 5%) — Anthropic still has no public realtime voice API (verified 2026-07): Phase 0 = assistant-ui Web Speech adapters ($0); Phase 1 = self-hosted Pipecat (BSD-2, 12.5k★) SmallWebRTCTransport: Deepgram Flux STT → Claude → Cartesia TTS; Phase 3 = Nova 2 Sonic speech-to-speech on the AgentCore lane (Dec 2025: 1M-token context, async tool calling; Pipecat/LiveKit integrations).

8. Clone / Copy / Improve Backlog (prioritized)

P0 — clone now (Q3 2026, walking skeleton)

#RepoLicenseAction
1assistant-uiwith-ag-ui, with-artifacts examplesMITClone → product shell scaffold (npx assistant-ui create -e with-ag-ui); docs ship as MCP server → talent-bench agents build the UI
2ag-ui-protocol/ag-ui + PyPI ag-ui-protocolMITCopy Python SDK into gateway; pin 0.x
3ag-ui-claude-sdk (community bridge)Fork & improve → own the ~300-LOC Claude-Agent-SDK→AG-UI bridge; upstream when #439 lands
4claude-agent-sdk-python + claude-cookbooks/hostingMITClone Docker/K8s hosting recipes; SessionStore→Postgres; 1 GiB/1 CPU per session sizing; multi-tenant isolation flags (setting_sources=[], per-tenant CLAUDE_CONFIG_DIR/cwd)
5claude-agent-sdk-demosMITCopy simple-chat-app (WS streaming pattern); resume-generator is the Resume·Premium product core
6PrefectHQ/fastmcp v3Apache-2.0Build runbooks-mcp (curated typed tools, stateless streamable-HTTP, OAuth/CIMD-ready)
7mckinsey/vizro + vizro-mcpApache-2.0Adopt — agent-authored CxO dashboards; gunicorn + oauth2-proxy deploy
8claude-quickstarts: financial-data-analyst, customer-support-agentMITCopy FinOps chart-in-chat UX; RAG pattern for Resume advisory

P1 — adapt next (Q4 2026 – H1 2027)

#RepoAction
9datalayer/jupyter-mcp-server + papermillNotebook execution plane (tiers 1–2 above)
10awslabs/mcp: billing-cost-management, cloudwatch, cloudtrail, aws-apiAlready piloted in .mcp.local.json — promote into product tool plane (note: stdio-only today; wrap behind gateway for multi-user)
11anthropics chat-sdk quickstart managed-agents/Copy session-mapping + SSE event_deltas pattern for the Phase-2 Managed-Agents adapter
12awslabs FAST + agentcore-samples (claude-agent integration, multitenant-agentic-platform blueprint, AWS-operations-agent)Phase-3 Cognito/CDK/Gateway patterns; Okta OAuth reference
13sample-claude-code-web-agent-on-bedrock-agentcoreClosest end-to-end analog (React + FastAPI + Claude SDK on AgentCore, MIT-0) — mine it
14CID / FOCUS DashboardFinOps·FOCUS reporting plane on AWS-native lane
15LibreChatKeep as internal HITL console per shared-chat-surface pattern — config, never fork

P2 — evaluate 2027+: pipecat voice → Nova 2 Sonic on AgentCore; marimo flagship notebooks; sample-strands-agents-chat (React 19 + FastAPI + AgentCore, closest AWS sample to our stack); GenU closedNetworkMode/SAML construct patterns; CopilotKit for embedding copilots inside Vizro pages (reverse embedding); AI Elements components as shell donors.

9. Risks & Mitigations

RiskEvidenceMitigation
assistant-ui bus factor (YC W25, ~3 people)YC profileMIT + primitives copied into our repo; the wire is AG-UI, so CopilotKit client ($27M-funded steward) is a drop-in UI fallback — a UI swap, not a backend change
AG-UI pre-1.0 churn (0.x, event renames)@ag-ui/client 0.0.57Pin versions; isolate protocol in the gateway adapter; AWS first-party adoption (AgentCore native) anchors the spec
Claude-SDK↔AG-UI bridge is community-gradeissue #439 openOwn the bridge (P0-3); fallback wire = assistant-ui AssistantTransport or Pydantic-AI VercelAIAdapter
Managed Agents beta: no ZDR/HIPAA, org rate limitsMA referencePhase-2 only for non-sensitive async jobs; FSI tenants stay self-hosted / AgentCore Sydney; self-hosted MA sandbox workers where residency demanded
MCP spec 2026-07-28 migration (stateless core; SSE/roots/sampling deprecated, 12-month window)release postBuild runbooks-mcp stateless streamable-HTTP from day 1; official mcp Python SDK v2.0.0 is stable as of today
Solo-founder scope creep (two front-ends)Product shell stays thin (~10–15k owned LOC); LibreChat is buy-not-build internal; everything else cloned per §8
Breaking minors (assistant-ui ~quarterly; AI SDK yearly)npm release historyRenovate + pins; upgrade PRs delegated to talent-bench agents (assistant-ui ships docs-as-MCP precisely for this)

10. 2026–2030 Incremental Roadmap (FAANG-style: ship value every quarter)

WindowIncrement (revenue-facing)Backend
Q3 2026Walking skeleton: chat + fleet-activity feed + 10 curated runbooks tools + 1 Vizro CxO page behind OIDC; CloudOps assessment as first paid engagement artifactClaude Agent SDK in Docker (local-first, sovereign)
Q4 2026Enterprise shell: OIDC/SAML (Keycloak/Cognito), Postgres threads + audit, papermill evidence artifacts, HITL approval cards; design-partner pilots (CloudOps + FinOps FOCUS)+ SessionStore, OTel, cost-per-session metering
H1 2027FinOps FOCUS GA (FOCUS 1.2 + DuckDB + Vizro KPI suite); Resume·Premium beta on the same shell (resume-generator demo as core); scheduled CFO cost briefs+ Managed Agents for async/scheduled (non-sensitive)
H2 2027FSI-grade tenancy: AgentCore Runtime Sydney (same containers), Gateway-wrapped tool plane, Identity/Cognito, multitenant blueprint; CID FOCUS reportingAgentCore (microVM isolation, VPC, 8-hr sessions)
2028–2030Agent/skill marketplace (415-item curated catalog → sellable packs), A2A between products, voice (Pipecat → Nova 2 Sonic), per-tenant model tiering & margin optimizationPortfolio scale-out on one protocol spine

11. Alignment with Prior Decisions

  • ADR-003 (Open WebUI, BC1, 2026-03-11) stands for the internal sovereign surface, and its own alternatives table scored "AG-UI + CopilotKit" 80% with the note "BC2+ sidecar" — this research confirms that call with 2026 evidence and promotes the AG-UI lane to the customer product shell. New fact for the register: Open WebUI's license (BSD-3 + branding clause) requires a paid enterprise license for white-label resale — internal use with branding retained remains compliant.
  • Housekeeping: shared-chat-surface-adoption-pattern.md describes LibreChat but cites ADR-003 (Open WebUI) — recommend cutting ADR-022 from this research to resolve the drift and formally record: LibreChat = internal shared surface; assistant-ui + AG-UI = customer product shell.
  • The runbooks package already depends on mcp>=1.12.3 and the FinOps pilot already mounts awslabs.billing-cost-management-mcp-server — the tool-plane direction is validated in-repo, not speculative.

12. Sources (primary, verified 2026-07-28)

Front-ends: assistant-ui · assistant-ui runtimes/voice docs · AG-UI · docs.ag-ui.com · LibreChat · ClickHouse acquisition · Chainlit · GenU · vercel/chatbot · Open WebUI license Anthropic: Agent SDK overview/hosting · Managed Agents · pricing · chat-sdk quickstart · agent-sdk-demos · cookbooks · agentskills.io · Building agents with the Claude Agent SDK AWS: AgentCore devguide · pricing · AG-UI on AgentCore · Claude Agent SDK on AgentCore · BGL case study · agentcore-samples · FAST · awslabs/mcp · Strands · Claude Code on Bedrock · Nova 2 Sonic Python/MCP: FastMCP · MCP 2026-07-28 spec release · MCP → Agentic AI Foundation · Vizro + vizro-mcp · jupyter-mcp-server · marimo · papermill · Pydantic AI Vercel/AG-UI adapters · pipecat · OWASP MCP cheat sheet


Research method: 5 parallel research agents (front-ends ×2, Anthropic ecosystem, AWS ecosystem, Python integration/voice), primary-source verification via GitHub API + npm/PyPI registries + vendor docs, cross-agent fact agreement required for all decision-critical claims. Local inputs: .adlc/CLAUDE.md v3.7.6, runbooks/pyproject.toml v1.5.5, docs/src/data/projects/*, cloudops/notebooks (62 ipynb), ADR-003, shared-chat-surface pattern.