CORE ARCHITECTURE Every ChatGPT app has two halves:
The MCP server — defines tools and logic.
The widget — a web app compiled to JS and rendered inside ChatGPT’s iframe.
When you say “Show me homes on Zillow,” the LLM: → Calls the MCP tool → Fetches the linked UI resource → Loads it into an iframe
It’s a full-stack app living inside ChatGPT.
PROJECT STRUCTURE OpenAI suggests:
app/ server/ # MCP logic and tools web/ # React/Svelte widget, compiled to JS
The server just needs to serve HTML embedding your JS bundle. Framework-agnostic, flexible — even host server and widget separately if needed.
HOW MCP SERVERS THINK An Apps SDK server acts like a normal MCP server, but adds UI awareness. Each tool maps to a widget resource (like ui://widget/...). When invoked, the LLM pulls that resource and renders it.
Servers can return “structuredContent” — basically JSON props that hydrate the widget UI.
THE SECRET SAUCE: WINDOW.OPENAI Every widget gets a built-in API bridge: window.openai. This lets your frontend talk directly to the ChatGPT client.
You can:
Read data from the server (toolOutput)
Persist local UI state (setWidgetState)
Call tools directly (callTool)
Send messages back to ChatGPT (sendFollowUpMessage)
Widgets aren’t static — they’re living agents wired into the model loop.
TAKEAWAY OpenAI’s Apps SDK blurs the line between app, API, and AI model. It’s a new runtime for conversational UI — a way to build micro-apps that live inside ChatGPT.
This might be the moment developers start treating ChatGPT like an OS, not a chatbot.
I NEED YOUR FEEDBACKS FOR IT
so I built FastApps — the only python framework for building chatgpt apps with zero boilerplate and instant setup
fastapps init my-app
That single command spins up a full-stack app — Python backend + React UI — ready to run inside ChatGPT.
VALUES 1. Instant setup – One command to start. No manual config. 2. Zero boilerplate – One file for your tool, one for your UI. That’s it. 3. Auth included – Built-in OAuth2 with Auth0, Clerk, or your own provider. 4. Auto-wiring – Drop a tool under /server/tools/ and it’s instantly live.
The“Apps in ChatGPT”era is just beginning. With FastApps, you can tap into ChatGPT’s 800M WAU and your app runs seamlessly both inside ChatGPT and in the new Atlas browser.
Github: https://github.com/DooiLabs/FastApps
SquidJack•2h ago