Three Frameworks, Zero Imports
12 hops.
A chat message crosses 12 boundaries before a mesh appears.
The product

This is what the user sees. Here's what's underneath.
The separation
CopilotKit: conversation. Mastra: agents. R3F: rendering.
None import each other. They all talk to the command store.
The journey
The 12-Hop Journey
“Add a red cube” — from keystroke to pixel
The layers
Architecture Layers
Click a layer to see what it does
Select a layer to explore
The one action that pauses.
Everything else auto-executes. Except `removeNode` — that triggers a HITL confirmation. The agent proposes. You approve. The agent sees your answer and continues.
Three surfaces.
Same command store. Three ways in.
Studio
Chat interface in the browser
MCP
Cursor IDE integration via stdio
API
Headless REST / streaming endpoint
dispatch(cmd)·query(selector)·undo()·redo()
Studio / MCP / API. Same command store, three ways in.
The contract.
The command store is the only contract. Everything else is pluggable.