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
What we are
Two things at once, and we would rather say so
We are a consultancy that builds self-hosted delivery platforms and works on distributed systems that have to hold up under load. We are also aproduct company building formal languages for describing software.
The consulting funds the products and is meant to shrink as they earn. That is why our engagements are scoped to finish — a hand-over or a date — rather than to continue indefinitely.
The two halves are not separate. The platform we would build for you is the one we run. The language we would sell you already builds a service of ours that real people use.
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.
A complete, self-hosted delivery platform — set up, proven, and handed over
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.
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.
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.