intropy sys
Authoritative reference for intropy sys: assembling scaffolded integrations into a System host.
sys create turns a workspace of scaffolded Components into one runnable, validatable System. It renders the host project; what that host contains (the topology declaration, the development definition, dotnet run -- check|graph|generate) is described in The system host. Scaffolding the individual Components is intropy int create.
The surface
Section titled “The surface”intropy sys create [flags]intropy sys create
Section titled “intropy sys create”The command reads before it writes. It scans the workspace for the .intropy/scaffold.json records that int create left behind, validates them into a System model, and renders the system-host template with the assembled values. The template writes the full declaration (Topics.cs, Ports.cs, the development and system definitions, and the project file); the CLI supplies only what the workspace records state. Run it from the workspace root that contains the scaffolded components and the shared contracts project.
| Flag | Description |
|---|---|
-n, --name <name> |
System name; PascalCase or kebab-case (OrderFlow and order-flow are equivalent). |
-o, --out-dir <dir> |
Destination directory. Defaults to the kebab-cased name. |
--force |
Allow rendering into a non-empty output directory. |
--output json |
Write the result document to stdout. |
--template-repo <owner/repo> |
Template library on GitHub. Defaults to templateRepo from configuration, or INTROPY_TEMPLATE_REPO. |
--template-version <tag> |
Template release tag. Defaults to the latest release. |
As in int create, -o is --out-dir here and machine output is --output json; see flag conventions.
Minimal example
Section titled “Minimal example”From a workspace holding the extractor and loader scaffolded on the intropy int page:
intropy sys create -n OrderFlowfetching integrio-intropy/intropy-templates@v0.4.1created order-flow from integrio-intropy/intropy-templates@v0.4.1 (template system-host)assembled system "order-flow": 2 component(s), 1 topic(s), 2 port(s), contracts from ContractsValidate the result from the host directory with dotnet run -- check.
Facts only, by design
Section titled “Facts only, by design”Unlike int create there are no --set or --values flags: every value in the rendered host is assembled from the workspace’s scaffold records, and the template never prompts. If the host declares something wrong, the fix is in a component’s scaffold record (or in the workspace’s layout), not in an override. This is what keeps the records the single source of truth the later commands (manifests, and the host’s own check/graph/generate) can rely on.
What gets assembled
Section titled “What gets assembled”Records are grouped by their blockKind:
extractor/loader— Topic-connected kinds. Their records carrytopic,contract, and one optionalport; a record without aportvalue keeps its component but gets noFrom/Toedge.transactional-integration— a port-to-port kind with no Topic. Its record carriesfromPortandtoPort; both are required, and a missing one fails the assembly.
Records without a blockKind (scaffolded by an older CLI) or with an unsupported kind are skipped with a warning listing the supported kinds. The workspace’s shared contracts project (record role shared-library, typically Contracts/) is referenced from the host’s project file, never declared as a component; a topic-bearing System whose workspace lacks one gets it scaffolded by the host template itself.
Naming
Section titled “Naming”-n accepts PascalCase or kebab-case; the System’s name is the kebab-cased form (OrderFlow becomes order-flow), and the default output directory matches it. The host expects its component projects as sibling directories, per the folder convention documented on int create.