Describe the system.
Run the description.
Paduma builds the languages and tooling that turn a formal description of software into the software itself — validated in CI, reviewed in merge requests, and never out of date. And we do the same kind of work for other people: platforms, distributed systems, and models that do not go stale.
hand.state.yaml
machine: mahjong.handinitial: dealing states: dealing: on: { wall_dealt: discarding } discarding: on: claim: melding hand_complete: scoring melding: on: { resume: discarding } scoring: on: { settled: dealing }derived machine
The through-line
One idea, three products
Architecture diagrams drift from the systems they describe. State charts get drawn once and then diverge from the code. The gap between a description and the thing described is where the errors live.
Every product we build closes that gap the same way: you write a declaration in a formal, version-controlled language, and the tooling derives the artifact from it. There is no second copy to keep in sync, because there is no second copy.
Products
LotusTable
Nearest to launch
Online multiplayer mahjong, with nine rulesets
A real-time multiplayer mahjong platform covering nine rulesets, and the system that proves the rest of our engineering under live load.
Statelume
Load-bearing in production
Behavioural state machines, declared
A declarative language for behavioural state machines that generates Java — and already builds a production service.
Topos
In development — deployed, and modelling our own estate
Architecture models as code
Describe your architecture in a version-controlled language that a machine can check, and render it from that same source of truth.
We also consult
The same competence, applied to someone else's system
Building the products above means running the infrastructure they need and solving the problems they surface. That work is available to other teams: self-hosted delivery platforms, distributed systems that have to hold up under load, and architecture models that stay true to what is deployed.
The platform we would build for you is the one we run ourselves. The language we would put in front of your team already builds a service of ours that real people use.
Engagements are scoped to finish — a hand-over, or a date — because the point is that your team owns the result afterwards.
Services
Architecture and delivery for systems that have to hold up under load
Architecture-led work on distributed, event-driven and legacy-modernisation problems on the JVM, sold as bounded projects.
Self-hosted delivery platforms, with DevSecOps built in rather than bolted on
We build the whole automated environment a team needs to ship software safely on infrastructure it controls, then hand it over.
Models that a machine can check, instead of diagrams that quietly go stale
Enterprise and solution architecture modelling governed by a meta-model, so a model cannot drift into meaning whatever its author wanted.
Work with us
Tell us what you are building
If your system falls over when it gets busy and nobody can say why, if you are trying to move off a cloud bill and the operating model is the part nobody has staffed, or if your architecture lives in diagrams nobody trusts — we would like to hear about it.