Machines
The SDK's Machine, an application with a reader, a writer and an optional recorder, whose state is rebuilt from its own recorded history.
A Machine is the mintBlue SDK's name for a runtime: the component that runs your application logic, writes every method call it processes to the platform, and rebuilds its state by replaying what it wrote.
Nothing about that state lives in a database somebody has to trust. It is derived, every time, from the recorded history.
The four parts
Your application is a class holding state and the methods that change it. A supply-chain application might keep a list of batches and expose a method that adds one.
The reader watches for records in a project and dispatches them to the Machine in order. The SDK ships a reader that reads from mintBlue, and the interface is small enough to implement against another source.
The writer takes each method call your application makes, with its arguments, and submits it as a data output. That is why the history is complete: the call is the record.
The recorder is optional and stores snapshots of state after a dispatch, so a Machine can resume from a snapshot instead of replaying everything, and so you can step back through past states while debugging.
Why replay rather than storage
Two Machines that consume the same records in the same order arrive at identical state. That is the property worth designing around, because it removes a class of work rather than automating it: two organisations holding the same history do not have to reconcile their views of it, and neither has to send the other a copy to be trusted.
The SDK calls stepping back through recorded state time travel debugging. The name describes what you do with it; the property underneath is that the state was derived rather than stored in the first place.
Specified by the SDX Protocol. mintBlue implements this concept; the SDX Protocol specifies it. Read the specification
The reader, writer and recorder split is not a mintBlue invention: the protocol names the same three roles, which is the strongest existing alignment between the two documents. The specification linked above defines them normatively, and also covers what happens when two runtimes disagree, which the shipped SDK leaves to your application.
Where to go from here
The task-shaped walkthroughs for building a Machine, implementing a custom writer and storing snapshots are under Guides.