Deployment Target: Browser Host
FDC3 Sail's v3 runtime is the browser host: sail-finance runs a browser-resident SailDesktopAgent, and FDC3 web apps connect through WCP and MessagePort. The same agent serves FDC3 2.2 and 3.0 clients — wire version is negotiated per connection. Native packaging and deep OS integration are deferred — see Future: native shell adapter.
Layered architecture
Package ownership, the two supported entry points, and the layer diagram live on the Architecture Overview.
The sail-browser-agent package keeps FDC3 state and handlers headless, but the browser-ready path intentionally owns a BrowserAppConnection. Use SailDesktopAgent for shipping browser hosts; manual DesktopAgent composition is for package internals and focused tests.
Browser / PWA (sail-finance)
What It Is
sail-finance is a browser application that can also be installed as a Progressive Web App. It hosts the Desktop Agent in a browser tab/window and exposes it to FDC3 apps running in iframes via the Web Connection Protocol (WCP).
How It Works
- User opens the Sail URL (or launches the installed PWA).
- The Sail UI loads in the browser.
- FDC3 apps open in iframes within the Sail window.
- Apps connect to the Desktop Agent via
window.postMessage(WCP1–3 handshake). - After handshake, apps communicate via a dedicated
MessagePort(WCP4–5).
Advantages
- Zero installation for the DA: Users access the Desktop Agent via a URL — no binary to install.
- Automatic updates: The DA updates on every page load without user action.
- Cross-platform: Runs wherever Chrome/Edge runs (Windows, macOS, Linux).
- Developer-friendly: Standard web debugging tools work out of the box.
Limitations
- Sandboxed: Limited access to OS-level APIs (file system, system tray, OS notifications).
- Browser restrictions: Apps must be served over HTTPS in production. Cross-origin restrictions apply.
- Single window: All FDC3 apps share the Sail browser window (iframes), limiting independent window management.
- No native packaging: Cannot be distributed as a standalone
.exeor.dmgwithout a wrapper.
When to Choose DPWA
- You want the simplest possible deployment with no installation step.
- Your FDC3 apps are web-based and don't need deep OS integration.
- You prioritise ease of update and maintenance.
- You're building a SaaS or cloud-hosted desktop agent.
Future: native shell adapter
Some organisations need OS-level features (native notifications, deep links, system tray, IT-managed installers, air-gapped distribution) that the browser sandbox cannot provide. A native shell — wrapping the same browser host and SailDesktopAgent in a desktop runtime — is a valid future direction, but it should be an explicit adapter built when that need is concrete, not a promise about the current v3 package surface.
Remote Desktop Agent, cross-device sync, and native app connection adapters are deferred on the same basis.
Related Documentation
- Architecture Overview - Package ownership, entry points, and the layer diagram
- @finos/sail-browser-agent - Core FDC3 engine
- @finos/sail-platform - Platform services