Understanding Mesa architecture

Prev Next

Important

This feature is in Early Access and is subject to change.

Mesa is FINBOURNE's dashboarding and business intelligence tool for LUSID, giving you a flexible, configurable way to visualise and monitor your data in near real time.

Whether you're tracking portfolio performance or monitoring operational workflows, Mesa lets you build and share tailored dashboards directly on top of your LUSID environment, with no manual exports or synchronisation steps.

Architecture

Mesa sits between the FINBOURNE APIs and the applications that display your data, such as Mesa dashboards and LUSID web. Rather than querying the APIs directly each time data is needed, Mesa maintains a shared database that applications read from, enabling fast filtering, grouping, and sorting response times.

The architecture has four core components:

Mesa Server

Mesa Server is the backend service that:

  • Authenticates users

  • Fetches data from LUSID for each source

  • Keeps that data refreshed on a regular cycle

  • Serves the live data connection to each dashboard

Mesa Preloader

Mesa Preloader is a separate background process that proactively fetches data for source factories configured for preloading.

Rather than waiting for a user to open a dashboard, Mesa Preloader keeps these shared sources continuously up to date. When a dashboard opens, the data is already available and appears instantly.

Mesa Database

Mesa Database is the shared data store used at runtime. It holds:

  • Live data for each active source

  • Metadata and version history of each source

  • Registry of source factories

Note that configuration (dashboards and source factory definitions) is stored in LUSID Workspaces rather than the database. The Mesa Database only holds the data Mesa is currently fetching and displaying.

Mesa Dashboards

Mesa Dashboards is the user-facing web application where you can:

  • Build and view dashboards

  • Configure widgets

  • Create source factories

It connects to Mesa Server to receive live data. See How do I build a Mesa dashboard?

1. Mesa Server and Mesa Preloader regularly fetch data from the FINBOURNE APIs. Mesa Database stores the data as tables.
2. Mesa Server handles the sources users create, using the parameters they provide. It reads and writes fetched rows in Mesa Database.
3. Mesa Preloader handles source factories with Preload enabled. It creates sources with fixed parameters from the source factory and writes fetched rows to Mesa Database.
4. Each dashboard keeps a live connection open to Mesa Server, so new data appears without you refreshing the page. Mesa Server reads data from Mesa Database instead of calling the FINBOURNE APIs each time, so grouping, filtering, and sorting are faster.

Configuration and workspaces

Mesa's configuration is stored in LUSID workspaces. Two types of workspace item drive Mesa's behaviour:

  • Mesa source factories: Define the type of data to fetch and the parameters used to retrieve it. Once you create and enable a source factory, anyone with access to its workspace can use it as a ready-made data source.

  • Mesa dashboards: Define a dashboard’s sources, widgets, and layout, including everything the dashboard displays and how it displays it.

1. Mesa Server and Preloader load mesa-source-factory workspace items to create sources. They define the source type and parameters.
2. Mesa Dashboards load mesa-dashboard workspace items to render dashboards. They define the dashboard’s sources, widgets, and context.

Structure

Mesa organises data through a chain of five concepts. Each concept builds on the one before it:

Source types

FINBOURNE defines and maintains source types. Each source type represents a specific category of data, such as orders, portfolios, quotes, transactions, output transactions, tasks, or valuations, and defines the base shape of that data, including:

  • The parameters it accepts

  • The columns the resulting data will have

Source types don’t include extra columns such as properties or address keys. You add these as additional parameters when you create a source or a source factory.

FINBOURNE controls how often Mesa refreshes data. Once a refresh finishes, Mesa waits 60 seconds before starting the next one.

Mesa currently supports source types based on LUSID and Workflow Service data. Support for additional FINBOURNE services is planned for a future release.

Source factories

You can define a source factory to build on top of a source type. The source factory inherits the base columns of its source type and lets you define the shape, behaviour, and parameters of the data source for your specific use case.

For example, you might build a UK Equity Valuation factory on a valuation source type with the scope and recipe already locked, so users only choose the effective date.

When you create a source factory, you choose where to save it, whether Mesa preloads its data, which account fetches the data, and which parameters to lock. For the full steps, see How do I configure a Mesa source factory?

Sources

A source is a live feed of data that widgets display. You create a source from a source type or a source factory.

Mesa fetches the data, stores it in the Mesa Database, and keeps it refreshed on a regular cycle.

Each source has a version number that increases every time Mesa refreshes its data, so you are always looking at current data. A single source can be shared by many widgets on the same dashboard, with each widget filtering, grouping, and sorting the data in its own way.

To create a source, see How do I build a Mesa dashboard?

Dashboards

A dashboard is a saved, shareable display that holds:

  • The sources it uses

  • The widgets it displays

You save dashboards in a LUSID workspace, and anyone with access to that workspace can view them. For the steps to create a dashboard, see How do I build a Mesa dashboard?

Widgets

A widget is a single visualisation on a dashboard. Mesa supports several widget types including:

  • Grids

  • Bar charts

  • Pie charts

  • Time-series charts

  • Stat displays

  • Scorecards

Each widget has a data source and a set of transforms that define how the source data is filtered, aggregated, and sorted before being displayed.

Because each widget has its own transforms, multiple widgets can share a single source while each showing a completely different slice of it.