Web Host Overview
This page is an architecture reference. It explains deployment boundaries and entry points; setup belongs in the linked facade and micro-frontend guides.
The Wippy Web Host is a Vue 3 single-page application built with the
Feature-Sliced Design methodology and delivered from
https://web-host.wippy.ai. It hosts the user-facing pages and UI components
of a Wippy application. Configure it through the wippy/facade backend module;
you do not build or deploy it with the application.
Three-Layer Model
A running Wippy application is composed of three nested layers:
Layer 1 — Page served by wippy/facade. This is your backend-rendered HTML page. The wippy/facade module registers a static file server and a /facade/config endpoint on your Wippy gateway. When a user navigates to your application, wippy/facade serves a thin HTML page that loads the Web Host JS-module entry from the CDN (module.js for compat, managed-layout.js for managed) and initializes it with config from /facade/config. The page itself carries no Vue or React — it is intentionally thin.
Layer 2 — Web Host. The Web Host bundle loads as a JS module that takes over
the entire page and its browser history. It owns the Wippy chrome: navigation,
chat, session management, and the page rendering surface. It receives its full
configuration from the page's init call and contains no deployment-specific
URLs or tokens. The same CDN bundle can therefore serve different deployments.
For manual, facade-less embeddings, the host can run inside an iframe through
the iframe.html entry described below.
Layer 3 — Child micro-frontends. The Web Host renders view.page modules
through the configured page engine: a legacy srcdoc iframe or a Web Fragment.
It mounts view.component modules as custom elements. The iframe engine provides
a separate browsing context. A Web Fragment uses a reframed realm reflected
into the host document and is not an isolation boundary; a component's shadow
root isolates selectors, not authority. Each surface receives the appropriate
proxy adapter for Wippy API access, authentication context, theme delivery, and
communication without needing deployment-specific URLs.
Page (wippy/facade HTML — loads module.js / managed-layout.js)
└─ Web Host (takes over the page + browser history)
├─ Chat UI, navigation, sidebar
└─ Child micro-frontends
├─ view.page → srcdoc iframe or Web Fragment + proxy adapter
└─ view.component → custom element + @wippy-fe/proxy ESM
Entry Points
The Web Host CDN serves several entry points from the same versioned directory.
Choose one according to the integration. Each entry is available at
<release-tag>/<entry>, such as /<release-tag>/module.js.
| Entry | Use case |
|---|---|
module.js |
Full app in compat mode — the standard nav-sidebar + page-area + chat-right-panel shell. Mounted directly into the page via window.initWippyApp(); takes over the whole page and its browser history. This is the entry the current wippy/facade serves by default. |
managed-layout.js |
Full app in managed mode — the declarative multi-panel layout. Served by the facade when fe_mode = managed. Early access (see Multi-Panel Layout). |
iframe.html |
Full app run inside an iframe for isolation or partial-page embedding. Use it for manual, facade-less embeddings where you supply config via a SetConfig PostMessage handshake. The facade itself loads the JS-module entries above, not this one. |
chat-iframe.html |
Minimal chat interface without sidebar or pages. Useful for embedding a focused chat widget. |
chat.js |
Headless ESM module exposing chat stores and WebSocket client. Use for building completely custom UIs. |
ws.js |
Standalone WebSocket service with no Vue or Pinia dependency. Use for low-level real-time integrations. |
For standard wippy/facade-based deployments you never reference these paths directly. The facade reads fe_facade_url from its configuration, selects the JS-module entry that matches fe_mode (module.js for compat, managed-layout.js for managed), and constructs the correct URL automatically.
CDN Versioning
The Web Host is versioned by git tag. The canonical production URL pattern is:
https://web-host.wippy.ai/<release-tag>/
Where <release-tag> is the Web Host git release tag — either a stable release or a feature-branch preview deploy. The staging CDN is at https://web-host.staging.wippy.ai/<release-tag>/.
Normally, the wippy/facade module selects the version through its default
fe_facade_url, which points to a matching Web Host build. Updating
wippy/facade therefore moves the deployment to its corresponding Web Host
version. Child apps that share vendor libraries through the import map receive
the versions provided by that build.
To pin a specific Web Host version — to stay on a known-good build, or to opt into a feature-branch / early-access tag — override the fe_facade_url parameter:
- name: fe_facade_url
value: https://web-host.wippy.ai/<release-tag>
This pins the entire deployment to that build. See CLI overrides for the -o / --override syntax to set it at runtime instead.
Tech Stack
The Web Host is built with Vue 3 (Composition API), PrimeVue + Tailwind CSS 3 for UI components, Pinia for state management, Vue Router for navigation, and Axios for HTTP.
Child dependency externalization
During development, fetch <fe_facade_url>/import-map.json and put every key from its imports object in Rollup externals, even if the current artifact does not import that key. Bundle an imported dependency only when its exact specifier is absent. Re-fetch when the Web Host tag changes or a new dependency is added.
See Also
- Facade Entry Point — how the facade delivers the Web Host to users and what the config flow looks like
- Bootstrap Sequence — what happens inside the Web Host after it receives configuration
- Multi-Panel Layout — managed layout mode for custom multi-panel shells
- Packages — the
@wippy-fe/*npm packages available to child app developers - Facade module — backend setup for
wippy/facade - Render Engines — the two page-render engines (srcdoc iframe vs Web Fragment)