Sandbox
@CopilotKit/generative-ui-playground

Generative UI demo for CopilotKit patterns

This playground shows three ways to build AI-powered interfaces with CopilotKit: static React UI from tool calls, MCP Apps in sandboxed iframes, and A2UI from declarative JSON. The frontend switches between agent setups and renders the matching UI pattern.

125 stars25 forksHTMLUpdated 3mo ago
Who it's for

Builders who want to compare CopilotKit UI patterns in a running demo.

What it delivers

You can see how the same chat flow produces different kinds of generated UI.

What it does

Static GenUI

Renders pre-built React components like weather, stock, and approval cards from frontend hooks.

MCP Apps

Serves HTML and JavaScript apps from an MCP server and shows them in sandboxed iframes.

A2UI

Renders declarative JSON UI from a Python A2A agent through the `A2UIRenderer`.

Agent switching

Uses `CopilotKitProvider` and a sidebar chat to switch between the demo modes.

How to get it

  1. 1Create a .env file
    OPENAI_API_KEY=sk-your-key-here
    MCP_SERVER_URL=http://localhost:3001/mcp
    A2A_AGENT_URL=http://localhost:10002
  2. 2Start all three services
    # Terminal 1: MCP Server (port 3001)
    cd mcp-server && npm run dev
    
    # Terminal 2: Python A2A Agent (port 10002)
    cd a2a-agent && python -m agent
    
    # Terminal 3: Next.js Frontend (port 3000)
    npm run dev

README

Generative UI Demo

https://github.com/user-attachments/assets/79ead351-f63c-4119-9d28-9d604e7f8876

A generative UI playground showcasing the three types for building AI-powered user interfaces with CopilotKit.

Demo Overview

This demo demonstrates how different types of generative UI can be used to create rich, interactive AI experiences:

SpecDescriptionUse Case
Static GenUIPre-built React components rendered by frontend hooksWeather cards, stock displays, task approvals
MCP AppsHTML/JS apps served by MCP servers in sandboxed iframesFlight booking, hotel search, trading simulator
A2UIAgent-composed declarative JSON UI rendered dynamicallyRestaurant finder, booking forms

CopilotKit Features Used

  • CopilotKitProvider - Main provider with agent switching
  • CopilotSidebar - Chat interface component
  • useRenderToolCall - Display-only tool rendering (WeatherCard, StockCard)
  • useHumanInTheLoop - Interactive approval flows (TaskApprovalCard)
  • A2UIRenderer - Renders A2UI declarative JSON from agent responses
  • MCPAppsMiddleware - Bridges MCP server tools with UI resources
  • BasicAgent - TypeScript agent for Static GenUI + MCP Apps
  • HttpAgent - Connects to Python A2A backend for A2UI

Setup

Prerequisites

  • Node.js 18+
  • Python 3.11+
  • OpenAI API key

Installation

# Clone and install dependencies
cd ui-protocols-demo
npm install

# Install MCP server dependencies
cd mcp-server
npm install
cd ..

# Install Python A2A agent
cd a2a-agent
pip install -e .
cd ..

Environment Variables

Create a .env file:

OPENAI_API_KEY=sk-your-key-here
MCP_SERVER_URL=http://localhost:3001/mcp
A2A_AGENT_URL=http://localhost:10002

Running the Demo

Start all three services:

# Terminal 1: MCP Server (port 3001)
cd mcp-server && npm run dev

# Terminal 2: Python A2A Agent (port 10002)
cd a2a-agent && python -m agent

# Terminal 3: Next.js Frontend (port 3000)
npm run dev

Open http://localhost:3000 to see the demo.

Usage

Static + MCP Apps Mode

Click the "Static + MCP Apps" tab to use:

  • "What's the weather in Tokyo?" → Weather card
  • "Get stock price for AAPL" → Stock card with sparkline
  • "Open the calculator" → Interactive calculator app
  • "Search for flights to Paris" → Flight booking workflow

A2UI Mode

Click the "A2UI" tab to use:

  • "Find Italian restaurants nearby" → Restaurant list with booking
  • "Show me Chinese food options" → Filtered results
  • "Book a table for 4" → Interactive booking form

Architecture

Frontend (Next.js) ─────────────────────────────────────────────────────
├── Protocol tabs switch between agents
├── Static GenUI: useRenderToolCall, useHumanInTheLoop
├── MCP Apps: Automatic iframe rendering via middleware events
└── A2UI: A2UIRenderer for declarative JSON
                    │
          ┌─────────┴─────────┐
          ▼                   ▼
   "default" Agent      "a2ui" Agent
   BasicAgent + MCP     HttpAgent → Python
   Port 3001            Port 10002

Project Structure

ui-protocols-demo/
├── src/app/              # Next.js frontend
│   ├── page.tsx          # Main page with agent switching
│   ├── theme.ts          # A2UI theme configuration
│   ├── api/copilotkit/   # CopilotKit API route
│   └── components/       # React components
├── mcp-server/           # MCP Apps server
│   ├── server.ts         # Tool registrations
│   └── apps/             # HTML app files
└── a2a-agent/            # Python A2A agent
    └── agent/            # Agent modules

Learn More


Note: This project has been consolidated into the CopilotKit monorepo. The latest version lives at examples/showcases/generative-ui-playground. Please open issues and pull requests in the main CopilotKit repository.

Files in the repo

Repository payload15 top-level entries
  • a2a-agent
  • mcp-server
  • public
  • src
  • .gitignore
  • CLAUDE.md
  • Dockerfile
  • eslint.config.mjs
  • next.config.ts
  • package-lock.json
  • package.json
  • postcss.config.mjs
  • railway.toml
  • README.md
  • tsconfig.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More other

🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.

95k
HKUDS/
Vibe-Trading

"Vibe-Trading: Your Personal Trading Agent"

33k
tinyhumansai/
openhuman

OpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.

40k

Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.

35k