One sidebar and two floatingChat instances. Each boots concurrently,
registers its own local MCP server, and keeps its own container, iframe, and widget config.
demo-sidebar, server demo-product-catalog (Product catalog). Opens with the button below.demo-chat, server demo-help-center (Help Center). Pink toggle at the bottom right.demo-chat-2, server demo-billing (Billing). Indigo toggle beside it.Open each instance and ask what tools it has. Each should list only its own server — never a sibling's.
Each instance passes host.instanceId, so chat restore keys are scoped per widget
(angie_active_chat_id::__angie::demo-chat, etc.). In the console:
angieDemo.seedScopedStorage() — write a distinct value per instanceangieDemo.scopedStorage() — read scoped values by instance idangieDemo.storage() — all angie* host keys (includes scoped keys)After chatting in one widget, reload and confirm the other widgets do not pick up that chat id.