An architecture organized around causality, not only state.
Puppeteer is a distributed-systems substrate built around software subjects with identity, authority and durable histories of their own. It preserves a domain as a continuous program of actions, consequences and manifestations.
State still exists. Infrastructure still exists. The difference is where continuity is defined.
In production since 2018 · an ongoing research series.
State tells you what is true.
The journal tells you how it became true.
The causal program preserves what happened, why it mattered, and what may still need to happen.
- ActSomething is done in the domain.
- JournalWhat happened, and what it meant.
- ConsequenceWhat has to follow from it.
- NowWhat the participant sees immediately.
- DeferredWhat stays open without losing its cause.
- Replay · ContinueThe same history, enacted again or carried forward.
An entry is not a record of a change. It is the reason for one.
- Currently viewingEntry 01 · Participant joined
- Cause
- A participant entered the shared domain.
- Now
- Presence acknowledged; the roster updates.
- Deferred
- Eligibility for the next distribution.
- May follow
- Open a boundary · assign a role.
- →Current domain condition
The journal keeps the narrative where the domain happened, instead of reconstructing it later from unrelated traces.
Paper 0A, §3.2The assembled verbFrom actor to subject.
A Puppet is a software subject with identity, authority and a durable history of its own.
Where it runs
- process
- host
- node
- cluster
- network
- runtime
What it is
- identity
- authority
- voice
- verbs
- roles
- durable history
Its history is constituted through what it enacts.
- ActorAn independent unit of execution.
- EnactThe act becomes part of the Puppet's own history.
- Durable historyActs are persisted so the subject can be reconstructed.
- SubjectThe Puppet that history constitutes.
The loop is in the story, not in the machine.
A concern that stays open for a month is not a process that waited a month: it is a handful of short enacted acts with the subject’s own history between them.
Infrastructure determines where it runs. Its history determines who it is.
The process may disappear. The subject remains reconstructable from its history. Whether that continuity remains attributable through runtime host changes is an active test.
Attention is not memory.
A journal cannot, by itself, remember to act because something did not happen — that is what attention adds. remember is how a subject arranges its own return to a concern still open.
Memory preserves what happened. Attention preserves what still matters.
Built to exist in distributed systems.
Puppeteer is built so populations of independent subjects can execute concurrently, persist their acts and be reconstructed across changes in process, host and topology.
- Actor Modelhelps to read independent, concurrent execution.
- CQRShelps to read the separation of intent from reads.
- Event Sourcinghelps to read history as a source of reconstruction.
- Puppeteeruses enacted acts to constitute a subject's durable history.
History is not only how state is rebuilt. It is part of who the Puppet is.
The substrate keeps active state predominantly in memory, journals each history densely and runs compactly, so populations of Puppets can appear, disappear and scale with the system. The subject model does not require a single topology.
How nCubo engineers across topologiesActors give us concurrency. Puppeteer gives them subjecthood.
One play. Many stages.
The production can change. The domain should not have to.
A screen is one staging of the domain, not the domain itself.
Acting and observing are architectural roles, not properties of a particular screen.

- 1
- domain
- 5
- measured stagings
- 6
- clients
- 0
- domain edits
Meaning must survive replay, delay and changing environments.
Not uptime, and not failover. Continuity here is architectural.
Continuity preservescausalityidentityauthoritypending consequence
Organized as two integrity families.
Causal integrity requires authority integrity.
The Continuity ContractCausal Integrity
Causality · Identity- Interpretable actions
- Preserved history
- Attributable consequences
Authority Integrity
Authority · Pending consequence- Legitimate observables
- Explicit bindings
- Authorized destinations
Familiar primitives. A different architectural center.
- Actor ModelIsolate concurrent executionDoes the process that runs it decide who it is?
- Event SourcingPreserves what happenedWho authors the observable account?
- Ports & adaptersInvert dependenciesDoes the domain still ask the outside world to complete it?
The primitives are familiar. The authority contract is different.
The question is who is actually in a position to make the decision.
The architecture was isolated, tested and extended through research.
Not only proposed. Each paper examines one architectural property on its own.
- 02ProgramIdentityWhat makes a running unit remain itself?
- 04ParticipantsContinuityWhat must hold when one cause reaches many actors?
- 05JournalCausalityWhat must be preserved for behavior to continue?
- 08AuthorityAuthorityWho is entitled to decide what becomes observable?
- 09StagingIdentityWhat remains itself when stage, client and deployment change?
Research isolated the architectural properties. Engineering turned them into an executable asset.
From architectural proposition to executable asset.
- Research
- Specification
- Compilation
- Manifestation
- Validation
No step replaces the one before it. The result is not only an implementation — it is a reusable architectural asset.
The architecture is still unfolding.
The research documents not only its propositions, but the conditions under which they must still be tested.
- 01External side effects
- 02Authority across trust boundaries
- 03Long-running deferred consequences
- 04Scale and partition boundaries
- 05Semantic versioning of historical programs
- 06Determinism across manifestations
- 07Authorization of causal operations
- 08Observation and journal governance
- 09Compatibility across domain evolution
- 10Governance of destination bindings
- 11Whether complexity is removed or relocated
