—
Key Features • Documentation • Toolchain • Status • License
Six layers run as separate processes and communicate over a message bus. Each layer owns one stage of the path from market data to an executed trade.
| Layer | Name | Job | Language |
|---|---|---|---|
| L1 | Ingestion | Turns venue data into normalized messages and keeps the book | C++ |
| L2 | Strategy | Turns market observations into trading intentions | C++ / Python |
| L3 | Risk | Approves or rejects each intention | C++ |
| L4 | OMS | Records positions, cash, orders, and P&L | C++ |
| L5 | EMS | Sends orders to the venue and reports the outcomes | C++ |
| L6 | Observability | Shows what is happening and lets a human stop it | Python / TBD |
| Document | Read it for |
|---|---|
docs/overview.md |
The runtime picture: layers, processes, channels, and one tick end to end. Start here |
docs/layers.md |
What each layer does, what it must not do, and how it fails |
docs/contracts.md |
The message set: every field of every message, and the conventions they follow |
docs/lifecycle.md |
Three worked flows: a tick, an order, and a restart |
docs/operations.md |
How to build and run, and the configuration files |
docs/phases.md |
The implementation plan: sixteen phases, what each delivers, and what each one proves |
docs/decisions.md |
Why the system is built this way, one decision per entry |
If you read one document, read docs/overview.md.
| Concern | Choice |
|---|---|
| C++ compiler | Clang 22 |
| Standard | C++20 |
| Meta-build | CMake, driven by presets |
| Build tool | Ninja |
| C++ packages | vcpkg, manifest mode |
| Host tools | pkg-config, clang-tidy, clang-format |
| Python | 3.11 or later, managed with uv |
| Testing | GoogleTest |
| Benchmarking | Google Benchmark |
To build, run or test the codebase, see docs/operations.md,
P0 to P2 are closed: the contract, the fixed-point arithmetic, and the clock. P3 is open, and it
builds the runtime, the transport over Aeron, and the recorder. What each phase proves is in
docs/phases.md.