The Intropy model
Intropy describes an integration with a small set of terms. The same terms appear in the C# code, the CLI output, deployment manifests, traces, and these docs.
The five terms
Section titled “The five terms”| Term | Meaning | Where you meet it |
|---|---|---|
| System | The named integration as a whole. | intropy sys create, OrderFlowSystem.cs |
| Component | One deployable unit inside a System. | order-extractor, order-loader, order-sync |
| Resource | Infrastructure the System owns. | Topic, internal queue |
| Port | A named edge to an external system. | order-extractor-source, order-loader-destination |
| Service | A platform capability the System calls but does not own. | idempotency, business incidents |
A Port separates build from connect: build transforms input into output; connect is how data actually reaches the real system. A Component declares where data flows in and out by Port name, never how. Each environment resolves the name in deployment configuration; in production that is an endpoint like SFTP, during build a plain folder stands in as the mock.
Contracts
Section titled “Contracts”A contract is the message type a Topic carries — one C# record per contract, defined once in the workspace’s Contracts/ project and referenced by every Component that publishes or subscribes. Publisher and subscriber agree on the shape of a message because they compile against the same record, not because they exchange schema at runtime. The distribution tutorial shares the OrderPlaced contract between an extractor and two loaders this way.
Where you meet it: the --publishes and --subscribes scaffold flags, whose message name the contract’s type derives from (order gives Order), the shared-contracts template that renders Contracts/, and the system host’s Messages.cs, where each message names the contract it carries.
Component kinds
Section titled “Component kinds”| Kind | Job | Tutorial |
|---|---|---|
extractor |
Pull from a source system and publish to a Topic. | Distribution |
loader |
Subscribe to a Topic and write to a destination system. | Distribution |
transactional-integration |
Move from one source to one destination inside one Component, through its own internal queue. | Transactional integration |
Two common shapes
Section titled “Two common shapes”A Transactional Integration is one Component:
source Port → transactional-integration → destination Port │ └─ internal queueA Distribution is several Components joined by a Topic:
source Port → extractor → Topic → loader → destination Port └→ loader → destination PortNext: Systems and topology shows where these names are declared.