In production since 2018

Software that outlives the app it was written for.

nCubo builds distributed systems across mobile clients, services, clusters, data centers and independent participants — and a domain technology of its own that keeps them coherent when the deployment, the client or the topology changes.

Our model

Projects end.
Domains continue.

Every implementation should solve something useful now and strengthen the domain asset available to the next one.

Published evidence · Paper 09
1
domain
5
measured stagings
6
clients
0
domain edits
IMPLEMENTATION 01Domain knowledgeIMPLEMENTATION 02Reusable architectureIMPLEMENTATION 03Validated capabilityDOMAIN ASSETKnowledgeArchitectureReusable systemsValidationNEXT IMPLEMENTATIONStarts enriched,not from zeroRETAINED CAPABILITYRETURNS ITS OWN01Domainknowledge02Reusablearchitecture03ValidatedcapabilityDOMAIN ASSETKnowledgeArchitectureReusable systemsValidationNEXT IMPLEMENTATIONStarts enriched,not from zeroRETAINED CAPABILITYRETURNS ITS OWN
Distributed engineering

The client is not just a window into the system. It can be part of the system.

Modern software often concentrates computation, state and coordination inside a data center, while powerful devices are reduced to interfaces. We design systems that can use the capacity already present across clients, servers, clusters, data centers and independent peers.

  • More participants can mean more capacity — not just more load.
  • Capability can live where it makes sense.
  • A device can participate in the system, not merely display what happened somewhere else.

The system can live where its participants live.

THE CENTERKubernetes · clusters · multi-data-centerEverything happens somewhere else.peer-to-peerCASHIERFlutterBOOKKEEPERC# · .NETPARTICIPANTPARTICIPANTLinuxWAREHOUSE KEEPERLOCAL CAPABILITYTHE CENTERKubernetes · clustersmulti-data-centerEverything happens somewhere else.peer-to-peerCASHIERFlutterBOOKKEEPERC# · .NETPARTICIPANTPARTICIPANTLinuxWAREHOUSE KEEPERLOCAL CAPABILITY
Under the story

Different runtimes. One coherent architecture.

The same system can span participant devices, shared services, clusters, multiple data centers and direct peer-to-peer coordination.

DISTRIBUTED TOPOLOGYDATA CENTER ADATA CENTER Bserver-to-serverpeer-to-peerSHARED INFRASTRUCTURESERVICE COREShared coordination where requiredC# · .NET · Linux · MicroservicesORCHESTRATIONKubernetes · clustersMESSAGING & DATAKafka · distributed dataPARTICIPANT SURFACESMOBILEFlutterINSTALLEDPARTICIPANT-OWNED STATEBROWSERPARTICIPANTPARTICIPANTLOCAL BEHAVIOR + STATEDISTRIBUTED TOPOLOGYDATA CENTER ADATA CENTER Bserver-to-serverpeer-to-peerSHARED INFRASTRUCTURESERVICE COREShared coordination where requiredC# · .NET · Linux · MicroservicesORCHESTRATIONKubernetes · clustersMESSAGING & DATAKafka · distributed dataPARTICIPANT SURFACESMOBILEFlutterINSTALLEDPARTICIPANT-OWNED STATEBROWSERPARTICIPANTPARTICIPANTLOCAL BEHAVIOR

Shared organizational state · Context-aware approvals · Privacy-preserving coordination · Event-driven operations

Centralized when appropriate. Peer-to-peer when required. Coherent in either topology.

Once a system can live in many places, a harder question appears.

Who owns identity, state and authority when no single place owns the whole system?

Puppeteer

An architecture for systems whose identity and authority must survive distribution.

Puppeteer emerged from our work on systems that must preserve identity, causality and authority across participants, machines and changing topologies.

Instead of assuming that one service, database or runtime is the permanent center of truth, it gives a software unit its own identity, behavior and durable consequences.

A domain asset developed at nCubo

WHO I AMWHAT I CAN DOWHAT IS TRUE NOWWHO I AMWHAT I CAN DOWHAT IS TRUE NOW
Research

Architecture should survive scrutiny. So we make ours inspectable.

Puppeteer did not stay an internal architectural idea. Its claims became papers, experiments and reproducible tests, so they could be examined by someone who does not work here.

The point is not to publish. It is to state assumptions where they can be disagreed with, make the claims measurable, and let the architecture be challenged.

9papers

A continuing investigation into identity, authority, causality and distributed software units.

The Puppeteer Papers Series · Álvaro Rivera · on Zenodo

Demos

The argument is executable.

Each demo holds a single thing fixed and varies everything around it, end to end and inspectable. Nothing here is a claim you cannot go and check.

Featured demo

The same invoice, built two ways.

A conventional .NET invoice flow, and the same domain enacted as a Puppeteer Puppet. Same products, same amounts, same invoice — different architectural center.

DecisionApplication owns the flowConventional implementationDomain owns the actPuppet implementation
HTTPDomainBoundary
PersistenceDomainBoundary
PresentationDomainBoundary
Whether the act is validHostDomain
  • 225Files in the domain
  • 50I/O calls inside the flow
  • 0Output formats in the domainConventional: web framework dependency

Counted in the repository. An existence proof that the separation is buildable — not a performance or cost evaluation.

Not the invoice. Not the values. Not the business outcome.

What changed was the architectural authority: who was allowed to validate, persist, transport and render the act.

More demos

Start a technical conversation.

Whether you are evaluating a capability, planning a distributed system or considering a technical partnership — we would like to understand what you are building.

Start a Conversation