Skip to content

How It Works

The 30-Second Version

You write trading logic as a plugin. The kernel handles order lifecycle, positions, cash, and audit. A sidecar on localhost:9191 handles messaging, access control, and recovery. Plugins never talk to each other directly — they communicate through a message bus. That's it. Everything else is detail.


Data Flow

A signal starts as raw market data and flows through the pipeline until it becomes a recorded position:

graph LR
  DGM["DGM<br/><small>market data</small>"] --> SIG["Signal Engine<br/><small>alpha signals</small>"]
  SIG --> PO["Portfolio Optimizer<br/><small>target weights</small>"]
  PO --> OMS["OMS<br/><small>compliance checks</small>"]
  OMS --> EMS["EMS<br/><small>smart order routing</small>"]
  EMS --> CCM["CCM<br/><small>broker / venue</small>"]
  CCM -- "fills" --> BOR["BOR<br/><small>positions, cash, NAV</small>"]

Every box is a plugin. Every arrow is a message on the bus. Replace any box without touching the others.

Three Guarantees

Full Instance Recoverability

Any plugin can crash, restart, and reconstruct its complete state from the event log. No data is lost. No manual intervention required. Your 3 AM pages become non-events.

Full Message Observability

Every message passes through three correlated observation points — publish, route, deliver. You get a complete audit trail of every decision the system made, searchable and replayable.

Zero External Dependencies

A plugin's only contract is its local sidecar on localhost:9191. No service discovery, no DNS tricks, no cloud-specific SDKs. If your code can open a gRPC connection to localhost, it can run on Meridian.

You Focus on Logic, Meridian Handles the Rest

Write a signal engine. Write an execution algorithm. Write a compliance rule. The platform takes care of everything else:

  • Message routing — pub/sub with topic-based filtering
  • Order lifecycle — new, partial fill, filled, cancelled, rejected
  • Position tracking — real-time shares, cash, and settlement state
  • Access control — per-plugin, per-topic permissions
  • Audit logging — every message, every state change, every decision
  • State recovery — automatic replay on restart

Architecture at a Glance

graph TD
  UI["Management UI"]
  BUS["Bus API · Execution Kernel<br/><small>gRPC / HTTP &nbsp;·&nbsp; Event-sourced state</small>"]
  UI --> BUS
  subgraph plugins [" "]
    direction LR
    DGM["<b>Data Gateway</b><br/><small>Sidecar</small>"]
    SIG["<b>Signal Engine</b><br/><small>Sidecar</small>"]
    OMS["<b>OMS</b><br/><small>Sidecar</small>"]
    CCM["<b>Broker Adapter</b><br/><small>Sidecar</small>"]
    VAL["<b>Valuation</b><br/><small>Sidecar</small>"]
  end
  BUS --- DGM
  BUS --- SIG
  BUS --- OMS
  BUS --- CCM
  BUS --- VAL

Every plugin runs alongside a sidecar — a lightweight process that handles the protocol so your code doesn't have to.

The Sidecar

The sidecar is your plugin's gateway to the platform. It handles pub/sub messaging, access control, schema validation, audit logging, health monitoring, state recovery, and entitlement checks. Your plugin talks to the sidecar over gRPC on localhost. The sidecar talks to the bus. You never touch the bus directly.

Deep dive on GitHub


Four Tiers

The platform separates responsibilities cleanly:

Tier Who What They Own
Platform Meridian Kernel, security master, plugin registry, sidecar runtime
Vendor Plugin developers Plugin code, marketplace listings, pricing
Deployment Your fund All data — orders, positions, cash, audit trail
User Individual Role-scoped access within a deployment

Data Ownership

Your data stays yours

The deployment owns all data. Orders, positions, fills, audit logs — everything lives inside your deployment boundary. Meridian the company never sees your trading data.

If Meridian ceases to exist, your deployment continues to run. The kernel, SDKs, CLI, and documentation are all Apache 2.0 open source. No vendor lock-in. No hostage situations.


Want the deep technical details?

Kernel model, sidecar protocol, plugin specifications, message schemas — it's all open source.

meridian-core on GitHub

Explore the plugin ecosystem