Financial Desktop Connectivity and Interoperability (FDC3)

repository·main·Indexed 42 days ago

https://github.com/finos/fdc3

An open standard for financial desktop applications to interoperate, share context, and exchange data. This implementation includes the FDC3 Desktop Agent Communication Protocol (DACP), a security model for trusted backends, and JavaScript/TypeScript modules including @finos/fdc3 version 3.0.0-alpha.2, @finos/fdc3-get-agent, and @finos/fdc3-schema.

Tokens
182.6K
Snippets
400
Records
666
Agent score
53%

What's inside FDC3

  1. Overview of Security Demo App 2

    main

    Security Demo App 2 (Security POC 2) is a specialized demonstration application designed to showcase FDC3 security capabilities, specifically private channels and encryption.

    It functions as the counterparty to 'POC 1' in a pricing demonstration scenario. The app performs the following workflow:

    1. Listens for the demo.GetPrices intent on the fdc3.instrument context type.
    2. Responds via a private channel.
    3. Provides encrypted valuation-style context to the requester.
  2. What is the FDC3 Agent Proxy?

    main
    The FDC3 Agent Proxy package provides a complete implementation of the FDC3 Desktop Agent Communication Protocol (DACP). It acts as a bridge or proxy to facilitate communication between FDC3-compliant applications and the desktop agent, adhering to the standard FDC3 specifications.
  3. Overview of the Pricer sample application

    main

    Pricer is a sample application designed for the FDC3 Developer Course. It demonstrates how a pricing-oriented UI can react to FDC3 intents. Specifically, it listens for the following intents on the fdc3.instrument channel:

    • ViewQuote
    • demo.GetPrices

    This application is intended to be used alongside intent raisers and security Proof of Concept (POC) applications that return valuations to demonstrate FDC3 connectivity and security workflows.

  4. What is FDC3?

    main

    FDC3 (Financial Desktop Connectivity and Collaboration Consortium) is an open standard designed to enable interoperability and data exchange between applications on a financial desktop. It allows applications to:

    • Launch other apps: Build launchers that can trigger specific applications.
    • Respond to activity (Context Sharing): Share the current topic or data (context) with other applications so they stay synchronized.
    • Request functionality (Intents): Raise standardized requests (intents) for other applications to resolve, extending functionality across the desktop.

    FDC3 is platform-agnostic and can be implemented on Web and Native platforms using any language, provided a Desktop Agent is present to coordinate the interactions.

  5. Understand the FDC3 Project Structure and Modules

    main

    The FDC3 project is a monorepo containing several specialized modules. Depending on your needs, you may want to consume specific packages rather than the main entry point:

    • Main Entry Point: @finos/fdc3 is the primary package for TypeScript/JavaScript applications. It aggregates fdc3-standard, fdc3-context, fdc3-schema, and fdc3-get-agent.
    • Legacy Support: @finos/fdc3-commonjs is a roll-up of the main module for environments requiring CommonJS compatibility.
    • Schema Definitions:
      • @finos/fdc3-schema: Contains FDC3 For The Web and Desktop Agent Bridging protocol schemas (generates BridgingTypes.ts and BrowserTypes.ts).
      • @finos/fdc3-context: Contains schemas for standard FDC3 context types (generates ContextTypes.ts).
    • Web/Electron Integration: @finos/fdc3-get-agent implements getAgent and fdc3Ready() to enable FDC3 in web browsers or Electron containers.
    • Security: @finos/fdc3-security provides helpers for signed context, encrypted private channels, and verified user identity (JWS/JWE).
    • Implementation: @finos/fdc3-agent-proxy is a platform-agnostic implementation of the FDC3 DACP.
  6. Understand the value of FDC3-enabled applications

    main

    FDC3 standardizes how applications communicate on a desktop without requiring pre-defined inter-application workflows.

    Key benefits for users and businesses:

    • Low-touch integration: FDC3-enabled applications can participate in workflows automatically without manual coding or custom integration for every new pair of apps.
    • Workflow flexibility: You can replace a single application with another that supports the same Intents and Context without breaking the existing desktop workflow.
    • Best-of-breed selection: Enables businesses to use specialized, high-quality applications that work together seamlessly rather than being locked into a single monolithic suite.
  7. Understand the FDC3 Standard Module

    main

    The fdc3-standard module provides the core TypeScript interface definitions required to implement the FDC3 standard. This includes critical interfaces such as the DesktopAgent interface, which defines how an agent interacts with the desktop environment, and the app directory schema used for application discovery and registration.

    For full implementation details and the underlying logic of the FDC3 protocol, refer to the official FDC3 Specification.

  8. Understand the Equity Sell Side Trader Use Case

    main

    This use case demonstrates how an Equity Sell Side Trader uses FDC3 to interoperate between various desktop applications. The workflow highlights how instrument identifiers (e.g., Tesla) act as the glue between disparate tools.

    Scenario Components:

    • Internal Research & Analytics Platform: Provides liquidity tools and internal research.
    • Chat Application: Used for receiving instrument identifiers via messages.
    • Watchlist: A shared group of companies (e.g., "Automotive comparables") that synchronizes across linked apps.
    • Third-party Charting Application: Accessed via a browser window for technical analysis.
    • Market Data Terminal: Provides pricing, fundamental data, and financial statements.

    Key FDC3 Capabilities Demonstrated:

    • App Launching via Intents: Right-clicking an instrument in a chat app to see available analysis applications.
    • Context Propagation: Launching an app with specific instrument context (e.g., opening Tesla research automatically).
    • Context Updates: Changing an instrument in one app (e.g., switching from Tesla to BMW) and having all linked applications (Charting, Pricing, Financial Statements) update automatically.
    • Shared Context (Watchlists): Adding instruments to a shared group to synchronize state across the desktop environment.
  9. Understand the FDC3 API Schema structure

    main

    The schemas/api directory contains JSONSchema definitions used to implement wire protocols for applications interacting with a Desktop Agent (DA). These schemas are also used for importing into Bridging wire protocols.

    Key schema files include:

    • common.schema.json: Common element definitions used across multiple schemas.
    • appRequest.schema.json: The base definition for all request messages sent from an app to a DA.
    • agentResponse.schema.json: The base definition for all response messages sent from a DA to an app.
    • agentEvent.schema.json: The base definition for all event messages sent from a DA to an app.
    • *Request.schema.json: Specific request message definitions.
    • *Response.schema.json: Specific response message definitions.
    • *Event.schema.json: Specific event message definitions.
  10. What is FDC3 and how does it work?

    main

    FDC3 (Financial Desktop Connectivity and Collaboration Consortium) is an open standard designed to enable plug-and-play interoperability between desktop applications in financial workflows. It allows web and native applications to communicate without requiring prior bilateral agreements.

    The standard provides several key mechanisms for cross-application interaction:

    • Intents: Standardized verbs used to invoke specific actions between applications.
    • Context Data: A standardized format for sharing data (such as a stock ticker or account ID) between applications.
    • App Directory: A REST-based standard for discovering available applications.
    • Desktop Agent: Standardized API operations for a central agent that manages application communication.
    • Agent Bridging: Mechanisms to allow different agents or environments to communicate.
  11. Overview of Desktop Agent Bridging

    main

    Desktop Agent Bridging is an experimental feature (introduced in FDC3 2.1) designed to enable interoperability between applications running under different Desktop Agents (DAs). This allows cross-application workflows and context sharing to span multiple physical desktops or multiple DAs running on a single machine.

    Key characteristics:

    • Seamless Interop: Applications using the FDC3 API typically do not require significant changes to benefit from bridging, as the DAs cooperate on their behalf (e.g., forwarding channel broadcasts or retrieving intent resolution options).
    • Visibility: Bridging is made visible to applications via a new desktopAgent field in the AppIdentifier type and specific error messages indicating bridging issues.
    • Scope: It is intended for workflows involving the same user across different machines or agents, rather than cross-user workflows.
    • Experimental Status: As an experimental feature, it is exempt from standard FDC3 versioning and deprecation policies and its design may change.