How finos/fdc3 works
FDC3 is an interoperability standard and TypeScript monorepo for financial desktop applications: apps share context, launch one another, and resolve intents through a Desktop Agent. This map focuses on the standard’s runtime-facing packages, the browser agent-connection path, the reference web agent, security extensions, and the workbench. The README documents the broader app-directory, context, intent, and bridging capabilities. Some subsystems are represented from documented purpose and tree paths; their internal wiring is not inferred where source excerpts do not establish it.
Main entry points: BasicFDC3Server.ts Web agent server · ServerContext.ts Agent runtime state · IdentityValidationHandler.ts Identity validation · IntentHandler.ts Intent resolution
Components 26
Standard and types
- Agent API
packages/fdc3-standard/src/api/DesktopAgent.ts - Context types
packages/fdc3-context/src/index.ts - Protocol schemas
packages/fdc3-schema/src/index.ts
Agent client
- Agent proxy
packages/fdc3-agent-proxy/src/DesktopAgentProxy.ts - Proxy messaging
packages/fdc3-agent-proxy/src/Messaging.ts - Listener registration
packages/fdc3-agent-proxy/src/listeners/RegisterableListener.ts - getAgent connector
packages/fdc3-get-agent/src/strategies/getAgent.ts - Handshake
packages/fdc3-get-agent/src/strategies/HelloHandler.ts - Identity validation
packages/fdc3-get-agent/src/strategies/IdentityValidationHandler.ts - Message-port transport
packages/fdc3-get-agent/src/messaging/MessagePortMessaging.ts
Web agent
- Web agent server
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Agent runtime state
toolbox/fdc3-for-web/fdc3-web-impl/src/ServerContext.ts - App directory
toolbox/fdc3-for-web/fdc3-web-impl/src/directory/DirectoryInterface.ts - Context and channels
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/BroadcastHandler.ts - Intent resolution
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/IntentHandler.ts - App launch
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/OpenHandler.ts - Heartbeat
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/HeartbeatHandler.ts
Security extensions
- Signature verification
packages/fdc3-security/src/signing/SignatureCheckingHandlerSupport.ts - Context metadata
packages/fdc3-security/src/delegates/MetadataHandler.ts - Public security
packages/fdc3-security/src/impl/PublicFDC3Security.ts - Secure remote handlers
packages/fdc3-security/src/secure-boundary/ClientSideHandlersImpl.ts
Workbench
- Workbench UI
toolbox/fdc3-workbench/src/App.tsx - FDC3 API adapter
toolbox/fdc3-workbench/src/utility/Fdc3Api.ts - Context editor
toolbox/fdc3-workbench/src/components/ContextCreate.tsx - Context state
toolbox/fdc3-workbench/src/store/ContextStore.ts
Other components
- FDC3 apps
Connections 30
- FDC3 apps → Agent API: use API
README.md - FDC3 apps → Context types: exchange context
README.md - FDC3 apps → Web agent server: coordinate through
- getAgent connector → Handshake: connects via
- Handshake → Message-port transport: creates connection
packages/fdc3-get-agent/src/strategies/HelloHandler.ts - getAgent connector → Identity validation: validates identity
- Identity validation → Message-port transport: uses transport
- Identity validation → Protocol schemas: checks protocol messages
packages/fdc3-get-agent/src/strategies/IdentityValidationHandler.ts - Agent proxy → Proxy messaging: uses messaging
- Proxy messaging → Listener registration: registers listeners
packages/fdc3-agent-proxy/src/Messaging.ts - Web agent server → Agent runtime state: uses runtime context
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Web agent server → Context and channels: dispatches to
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Web agent server → Intent resolution: dispatches to
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Web agent server → App launch: dispatches to
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Web agent server → Heartbeat: registers optionally
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Web agent server → App directory: configures handlers
toolbox/fdc3-for-web/fdc3-web-impl/src/BasicFDC3Server.ts - Context and channels → Agent runtime state: uses runtime context
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/BroadcastHandler.ts - Intent resolution → Agent runtime state: uses runtime context
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/IntentHandler.ts - Intent resolution → App directory: looks up apps
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/IntentHandler.ts - App launch → Agent runtime state: opens apps
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/OpenHandler.ts - App launch → App directory: looks up apps
toolbox/fdc3-for-web/fdc3-web-impl/src/handlers/OpenHandler.ts - Signature verification → Context metadata: unpacks metadata
packages/fdc3-security/src/signing/SignatureCheckingHandlerSupport.ts - Signature verification → Public security: verifies signatures
packages/fdc3-security/src/signing/SignatureCheckingHandlerSupport.ts - Secure remote handlers → Agent API: wraps agent handlers
packages/fdc3-security/src/secure-boundary/ClientSideHandlersImpl.ts - Secure remote handlers → Protocol schemas: uses message types
packages/fdc3-security/src/secure-boundary/ClientSideHandlersImpl.ts - Workbench UI → FDC3 API adapter: checks agent
toolbox/fdc3-workbench/src/App.tsx - Workbench UI → Context editor: presents tools
- Context editor → Context state: updates context state
toolbox/fdc3-workbench/src/components/ContextCreate.tsx - Context editor → FDC3 API adapter: uses agent adapter
toolbox/fdc3-workbench/src/components/ContextCreate.tsx - Context state → FDC3 API adapter: uses agent adapter
toolbox/fdc3-workbench/src/store/ContextStore.ts