Introduction

Liquidity is Carta's platform for transacting shares of private companies. The platform supports auctions, tender offers, RSU settlements, and block trading. It includes a ledger that interfaces with our banking partner for movement of cash, and it interfaces with Carta's cap table subsystem for movement of securities.

The Liquidity business unit encompasses Carta Capital Markets (CCMX), a regulated broker-dealer subsidiary of Carta.

Architecture

The Liquidity system uses a distributed service-oriented-architecture (SOA). Within the system, state is communicated using an event-sourced model: we use Apache Kafka as our messaging fabric.

At the boundaries of the system are interfaces with:

  • Carta's cap table and portfolio subsystems
  • Carta's tax estimation subsystem
  • Alloy and Socure for KYC and AML
  • JPMorgan for cash escrow
  • Finicity for bank account integration
  • plus others.

Tech stack

There are currently three broad categories of application.

The first category consists of new applications. These are written in TypeScript, and live in a monorepo. The monorepo contains various shared libraries and tooling that reduces the degree of boilerplate required for each application.

The second category consists of just one application, MARS. This is the ledger and execution service that powers the cash management and trading functionality of the platform. MARS is written in C++ with a scaffold of TypeScript tooling. MARS also exists within the monorepo.

The remainder of the stack consists of a suite of applications referred to in this documentation as "legacy". The legacy applications are written in Python, mostly using the Django web framework, and each have their own individual source code repos.

First steps

To get started, we'll walk through setting up a new development machine.