Skip to content
ReferenceCLI

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.

intropy sys create [flags]

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.

From a workspace holding the extractor and loader scaffolded on the intropy int page:

Terminal window
intropy sys create -n OrderFlow
fetching integrio-intropy/intropy-templates@v0.4.1
created 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 Contracts

Validate the result from the host directory with dotnet run -- check.

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.

Records are grouped by their blockKind:

  • extractor / loader — Topic-connected kinds. Their records carry topic, contract, and one optional port; a record without a port value keeps its component but gets no From/To edge.
  • transactional-integration — a port-to-port kind with no Topic. Its record carries fromPort and toPort; 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.

-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.