
Build Once.
Run in any AI Host.
One codebase. Every AI host.
Define once, deploy everywhere
Build React apps with familiar hooks. PancakeJS handles the bridge to each app SDK. Your component renders natively in every host.
1// widgets/WeatherWidget.tsx2import { useToolInvocation, useWidgetState } from '@pancakeapps/react';3import { useEffect } from 'react';45export function WeatherWidget() {6 const { input } = useToolInvocation<{ city: string }>();7 const [data, setData] = useWidgetState<WeatherData | null>(null);89 useEffect(() => {10 fetchWeather(input.city).then(setData);11 }, [input.city]);1213 if (!data) return <Loading />;1415 return (16 <div className="weather-widget">17 <City name={data.city} />18 <Temperature value={data.temp} unit={data.unit} />19 <Conditions type={data.condition} />20 <Stats humidity={data.humidity} wind={data.wind} />21 </div>22 );23}Check weather for London
Here's the current weather in London:
London, UK
Rainy
Humidity
89%
Wind
12 mph
Precip
80%
What's the weather in Tokyo?
Here's the current weather in Tokyo:
Tokyo, Japan
Partly Cloudy
Humidity
65%
Wind
8 mph
UV Index
Low
Weather in San Francisco?
Here's the weather for San Francisco:
San Francisco, CA
Sunny
Humidity
55%
Wind
10 mph
UV Index
High
Same app. Same code. Adapts to each platform.
Test and debug live
Run pnpm dev to start a local server, paste the URL into ChatGPT, and watch your app update as you edit. No deploys, no waiting.
What's the weather in San Francisco?
Here's the current weather:
San Francisco
Sunny
Humidity
55%
1// widgets/WeatherWidget.tsx2import { useToolInvocation } from '@pancakeapps/react';34export function WeatherWidget() {5 const { output } = useToolInvocation<WeatherData>();67 return (8 <div className="weather-card">9 <City name={output.city} />10 <Temperature value={output.temp} />11 12 </div>13 );14}All the toppings you need
A complete SDK for building applications for AI hosts—without the integration headaches.
Single API
Define apps and tools once with a clean, TypeScript-first API. No platform-specific code required.
Auto Bridge Detection
The SDK automatically detects which host is running and routes to the correct bridge. Zero config needed.
Great DX
Hot module reloading, strong typing with inference, and clear error messages that actually help you debug.
Extensible
Add new host adapters without changing your app code. Built for a multi-platform future.
Rich Apps
Build interactive React apps that render natively in chat UIs. Charts, forms, maps, and more.
Type Safe
Full TypeScript support with Zod validation. Catch errors at build time, not runtime.
How it works
Every AI host has its own protocol (MCP Apps, ChatGPT Apps SDK, A2UI) and its own UI requirements. PancakeJS is both protocol-agnostic and host-agnostic: one codebase handles the communication layer and adapts your apps to each host's styling conventions.
Modular by design
Install only what you need. Each package is focused and lightweight.
@pancakeapps/corePlatform-agnostic types, registry, validation, and adapter interfaces
@pancakeapps/serverServer runtime with adapter management and resource store
@pancakeapps/reactReact hooks for building interactive widgets
@pancakeapps/adapter-mcp-appsAdapter for MCP-compatible hosts (Claude Desktop, etc.)
@pancakeapps/adapter-chatgpt-appsAdapter for ChatGPT Apps
@pancakeapps/cliCLI for development, building, and deployment

Build your first app for AI hosts
Get up and running in under 5 minutes. One codebase runs in ChatGPT, Claude, and every AI host.
pnpm add @pancakeapps/core @pancakeapps/server