Skip to content
Concept

Systems and topology

A topology is the declared shape of one System: which Components exist, which Resources join them, and which Ports and Services sit at the edges.

The declaration lives in the system host, a small .NET project generated by intropy sys create. The host is also what runs the System locally.

File Contains
Messages.cs Each message, the contract it carries, and the Topic it is published on.
Ports.cs Port names. A Port is only a name.
Services.cs Platform services the Components call.
<Name>System.cs One builder call per Component.
<Name>Development.cs Local stand-ins: folders for Ports, mocks for Services.

The important file is the system definition:

builder.AddExtractor("order-extractor")
.From(Ports.OrderExtractorSource)
.Publishes(Messages.Order)
.Calls(Services.Idempotency);
builder.AddLoader("order-loader")
.Subscribes(Messages.Order)
.To(Ports.OrderLoaderDestination)
.Calls(Services.Idempotency);

Every line is a box or arrow in the System:

SYSTEMorder-extractor-sourceorder-extractorpublishesordersTopicsubscribesorder-loaderorder-loader-destinationusesSERVICEidempotency
FIG S1The declaration drawn: two Components, one Topic, one Service outside the boundary. The Port edges stop at their names; what stands behind them is not declared.

The Distribution tutorial works with a declaration like this hands-on: chapters 3 and 4 grow a System by editing Messages.cs, Ports.cs, the system definition, and the development stand-ins.

The topology does not contain adapter type, address, credentials, schedules, namespaces, or brokers. Those are environment-owned settings.

That split is why the same Component can run against:

  • a local folder during the tutorial,
  • an SFTP binding in a local cluster,
  • a production endpoint in a GitOps environment.

The Component still knows only the Port name.

  • Illegal edges do not compile. A loader cannot publish to a Topic.
  • Unused infrastructure does not enter the model. A Topic exists because something publishes to it.
  • The same declaration backs local run, validation, generated deployment model, and runtime manifests.

For generated file details and host verbs, use The system host.