Introduction
What Open Exchange is, what it isn't, and how the pieces fit. Five minutes here saves an hour everywhere else.
What Open Exchange is
Open Exchange is the core of a trading venue, as open-source software. It takes orders, checks them against risk rules, matches buyers with sellers, keeps every balance exact, and streams live market data, and it keeps doing all of that even while one of its servers is being killed. It is licensed Apache 2.0: free to run, read, and modify.
It is deliberately infrastructure, not a turnkey exchange. It does not do KYC, hold custody of coins, or connect to banks. Those parts depend on your jurisdiction and your business, so they stay yours. The scope page draws that line precisely.
The five repositories
The stack is five repos that work as one system:
| Repo | What it does |
|---|---|
match | The matching engine. Three servers run the same deterministic engine and agree on every order using Raft consensus, so a dying server never loses your trade. |
oms | The order management service. It's what your apps talk to: REST and gRPC APIs, authentication, risk checks, balances, and the PostgreSQL read models. |
assets | The Assets Engine. A deterministic money ledger running as its own Raft cluster: every hold, settle, and release is a replicated state-machine transition, recorded in a replayable money journal. |
admin-gateway | The operations brain. A Go service that starts, stops, monitors, backs up, and safely upgrades everything else, refusing operations that would hurt an unhealthy cluster. |
trading-ui | A web trading and admin interface, ready to use or to fork as a starting point. |
One version, five repos
The whole stack is versioned together: v0.4.0-beta means match, oms, admin-gateway, trading-ui, and assets all at v0.4.0-beta. Mixing versions across repos is unsupported. Releases are annotated tags plus GitHub release notes in each repo, and every repo carries a CHANGELOG.md.
What beta means
In practice, beta means:
- The API contract is frozen. Breaking changes to REST, gRPC, or the WebSocket surface now require a major version bump and a deprecation window.
- Failure is tested, not assumed. On every commit, CI boots the full stack, kills the cluster leader mid-load, and proves every order and balance comes out exact.
- The numbers are published honestly, with the environment and the caveats: see benchmarks.
Where to go next
- Quick start: a fresh clone to a running stack on one Linux box.
- Architecture: how an order travels through the system, and what happens when a server dies.
- API reference: the frozen v1 surface your apps will call.
- Scope: what we provide and what you own. Read this before planning a production deployment.