Baseline: showcase/integrations/langgraph-python/.
This package ports the frontend-composition demos satisfied by the shared
Claude backend in src/agents/agent.py, plus dedicated ogui / headless
surfaces. The demos below are deliberately out of scope for this pass and
left for a follow-up.
byoc-json-render— dedicated/byoc-json-renderagent endpoint emits a JSON spec; frontend renders via<JSONUIProvider>+<Renderer />against a Zod catalog (MetricCard, BarChart, PieChart). Includes the<JSONUIProvider>fix from PR #4271 and thedefineRegistrychildren-forwarding fix for MetricCard.byoc-hashbrown— dedicated/byoc-hashbrownagent endpoint emits the hashbrown JSON envelope{ui: [{metric: {props: {...}}}, ...]}(NOT XML — the #4271 fix). Frontend parses viauseJsonParser+useUiKitwith MetricCard / PieChart / BarChart / DealCard / Markdown.multimodal— dedicated/multimodalagent endpoint withconvert_part_for_claudethat translates AG-UIimage/documentparts into Claude's native Messages API shape. PDFs flatten to text viapypdf. No legacy-binary shim required — that shim is specific to the@ag-ui/langgraph@0.0.27converter and is not needed when HttpAgent forwards modern parts to the Claude Agent SDK backend.voice— dedicated/api/copilotkit-voiceruntime with aGuardedOpenAITranscriptionServicethat reports a typed 401 whenOPENAI_API_KEYis missing (vs a silent 503). Transcription service is written onto the V2 runtime instance directly to work around the V1 wrapper silently dropping the service. Backend reuses the shared Claude agent.agent-config— dedicated/agent-configagent endpoint that readstone/expertise/responseLengthoffforwarded_props.config.configurable.propertiesand builds the system prompt per turn. Frontend route subclassesHttpAgentto repack providerpropertiesinto the nested configurable shape so the wire format matches the langgraph-python reference exactly.auth— dedicated/api/copilotkit-authroute usescreateCopilotRuntimeHandlerfrom@copilotkit/runtime/v2directly so theonRequesthook actually fires (V1 adapter drops hooks). Bearer-token gate returns 401 on mismatch. Includes the #4271 defaults fix:useDemoAuthdefaults to signed-in, plusChatErrorBoundaryso the page never white-screens on auth transitions.
cli-start— manifest-only entry with the framework-slug init command.prebuilt-sidebar— default<CopilotSidebar />against the shared agent.prebuilt-popup— default<CopilotPopup />against the shared agent.chat-slots— customwelcomeScreen,input.disclaimer,messageView.assistantMessageslots.chat-customization-css— scoped CSS variable and class overrides.headless-simple—useAgent+useComponentminimal custom chat surface.
frontend-tools—useFrontendToolwith sync handler (change_background).frontend-tools-async—useFrontendToolwith async handler (query_notes).hitl-in-app— asyncuseFrontendToolHITL;fixed inset-0overlay (notcreatePortal) to avoid pulling in@types/react-dom.readonly-state-agent-context—useAgentContextread-only context.tool-rendering-default-catchall— zero-renderer built-in default.tool-rendering-custom-catchall—useDefaultRenderToolwildcard.open-gen-ui— minimal open-ended generative UI (dedicated/api/copilotkit-oguiroute withopenGenerativeUIflag).open-gen-ui-advanced— OGUI with frontend sandbox functions (evaluateExpression, notifyHost).headless-complete— full custom chat surface built onuseAgent, with per-tool renderers, frontend component, and wildcard catch-all. Points to the shared/api/copilotkitroute (the reference points at/api/copilotkit-mcp-apps; this package doesn't port mcp-apps — the Excalidraw-MCP suggestion will surface as a catch-all tool card).
gen-ui-interrupt— relies on langgraph'sinterrupt()primitive that pauses the graph and resumes on a client-side response. Claude Agent SDK does not expose an equivalent graph-interrupt API.interrupt-headless— same reason; this is a headless surface for resolving a langgraph interrupt.
agentic-chat-reasoning,reasoning-default-render,tool-rendering-reasoning-chain— require streaming Claude extended- thinking (reasoning) blocks as distinct AG-UI message parts. The currentsrc/agents/agent.pyAG-UI bridge does not translate Anthropicthinkingcontent blocks; adding it correctly requires new event types and a thinking-aware message buffer. Follow-up.
These are feasible on this package but each pulls in substantial multi-file frontend infrastructure (catalogs, renderers, MCP client glue, theme pipelines) that did not fit this pass. Left for dedicated follow-up commits.
declarative-gen-ui— A2UI BYOC catalog (Card/StatusBadge/Metric/ InfoRow/PrimaryButton) wired viaa2ui.catalogon the provider.a2ui-fixed-schema— fixed-schema A2UI with two JSON schemas (flights + booked) and a per-demo catalog.mcp-apps— MCP server-driven UI via activity renderers. Claude Agent SDK supports MCP clients, but the langgraph-python reference relies on CopilotKit runtime wiring through a dedicated/api/copilotkit-mcp-apps/route.tsplus agent-side MCP client glue.beautiful-chat— 28+ supporting files (layout, canvas, generative UI charts, hooks, theme CSS, showcase config, A2UI catalog). Porting requires significant surface-area review that did not fit this pass.
- Reasoning / extended-thinking plumbing in
agent.py(unlocksagentic-chat-reasoning,reasoning-default-render,tool-rendering-reasoning-chain). - A2UI catalog demos (unlocks
declarative-gen-ui,a2ui-fixed-schema). - MCP client integration (unlocks
mcp-apps). - Beautiful-chat infrastructure port.