Open-source exchange infrastructure · v0.5.0-beta

Benchmarks

Separate measurements for latency, ingress throughput and the money path. Read the load, date and boundary before comparing a number.

Measurements, not a production rating
These results come from different runs on a single host. They do not establish multi-host capacity, a latency SLA or an availability SLO. The local Quickstart uses a lighter setup.

Committed matching latency · 2026-07-25

At 50,000 offered orders/s, the three-node cluster acknowledged 999,869 orders. The same tool recorded two different boundaries:

One run, the same orders; values in microseconds
Measurementp50p99
Successful offer → first committed status back307.97 µs615.42 µs
Enqueue → local ingress publication accepted0.35 µs0.83 µs

The committed measurement covers replication, matching and the return status after the successful offer. It excludes HTTP/API ingress and the Assets Engine hold. Ingress publication is a local handoff; it is not exchange latency. The roughly 880× difference explains the measurement boundary, not a speedup.

Source: matching load-generator measurement and method, PR #161. This is a closed measurement window, not evidence for latency at 800k offers/s. The published run does not establish a coordinated-omission-safe service latency distribution.

Ingress throughput · 2026-07-02

Historical ingress-offer acceptance, 12–45 second windows
Driver setupOffered rateIngress acceptance
Tuned OS, prod drivers800,000 ingress offers/s100.00% in this run
Dev drivers, backoff~148,000 ingress offers/s100.00% in this run

Environment: Intel i7-13700K, 32 GB RAM, Linux 6.17, Java 21, Aeron 1.51.0. Three cluster nodes used loopback UDP, external media drivers, pinned cores and tmpfs archives. There was no network between physical hosts.

“Acceptance” means AeronCluster.offer accepted the ingress publication; it does not itself count durably acknowledged or settled orders. The source also contains backpressure in lower-rate runs. Those short windows do not determine a stable maximum or a guaranteed operating envelope.

Source: July 2 baseline, environment, limitations and reproduction method. Its later “500k–600k clean envelope” statement conflicts with its own 800k row; no such capacity boundary is claimed here.

Money path · v0.5.0-beta, July 2026

The Assets release reports an improvement from about 4,400 to 120,000 orders/s with the fund-hold gate before matching. Its benchmark driver has no OMS in the loop. This is a separate result from matching ingress throughput, and is not a REST throughput figure.

Source: Assets Engine v0.5.0-beta release. The release does not supply a complete percentile table and matching run manifest for this claim, so those values are left unspecified here.

Failure testing

The OMS failover E2E starts a real three-node matching cluster, a single-node Assets Engine, a settlement bridge, OMS and PostgreSQL. It kills the matching leader during load, checks that a different node takes leadership, continues placing orders, then checks fills, balances, positions and ledger conservation.

This tests matching-node loss and recovery on one machine. It does not prove tolerance to host loss, a replicated Assets deployment, every network partition, or a numerical recovery-time guarantee.

Reproduce and compare

  1. Start with the working local Quickstart to verify build and correctness. Its small buffers and shared threads are for evaluation.
  2. For a performance run, use a dedicated test environment and the baseline’s linked harness. Record source SHAs, CPU, memory, disk, JVM, transport, driver profile, topology and offered load.
  3. Warm up the JVM, retain histogram/sample counts, and report offered, accepted, acknowledged and settled work separately. Keep the same metric boundary in before/after comparisons.
  4. Repeat steady-state windows and run an endurance test with disk-backed archives before choosing an operating limit. Publish overload and failure behavior alongside latency and throughput.
Open Exchange

The open-source core to launch your own exchange. Fast, fault-tolerant, built in public.

v0.5.0-beta

Apache 2.0 · Beta software: the public API is frozen, but it has not had an external security audit yet and should not hold production money until it does. Open Exchange is the infrastructure you build an exchange on; KYC/AML, custody, fiat, identity, and compliance are the integrator’s responsibility.

Analytics uses a persistent random browser identifier and EU-hosted storage; session recordings mask inputs. Do Not Track and Global Privacy Control are honoured. Details.