Products
Three products, one shape
Each one takes a declaration you write and derives the working artifact from it. Below, the declaration is on the left and what it produces is on the right.
LotusTable
Online multiplayer mahjong, with nine rulesets
Nearest to launch
A real-time multiplayer mahjong platform covering nine rulesets, and the system that proves the rest of our engineering under live load.
hand.state.yaml
machine: mahjong.hand
initial: dealing
states:
dealing:
on: { wall_dealt: discarding }
discarding:
on:
claim: melding
hand_complete: scoringWhat runs on it
- Real-time multiplayer tables with live seat occupancy
- An event-driven engine over Kafka and Redis
- Statelume machines exercised by real players, not fixtures
Statelume
Behavioural state machines, declared
Load-bearing in production
A declarative language for behavioural state machines that generates Java — and already builds a production service.
order.state.yaml
states:
awaiting_payment:
on:
paid: packing
after(45s): expired
packing:
entry: [reserve_stock]
on:
shipped: completeWhat Statelume derives
- Generated Java following the State pattern, ahead of time
- Or an interpreted runtime, for quick prototyping
- Structure kept separate from business logic throughout
Topos
Architecture models as code
In development — deployed, and modelling our own estate
Describe your architecture in a version-controlled language that a machine can check, and render it from that same source of truth.
payments.topos.yaml
element: payments-api
dimension: application
layer: logical
relations:
- serves: checkout-web
- reads: ledger-storeWhat Topos derives
- A schema-validated model, checked in CI before it lands
- A traversable graph projection you can query
- Rendered views, with layout decoupled from the model