Skip to content
ReferenceCLI

intropy int

Authoritative reference for intropy int: scaffolding integrations and reading their scaffold records.

int creates one integration at a time and records exactly what it did. Assembling scaffolded integrations into a System host is intropy sys; browsing the template library before scaffolding is intropy template.

intropy int create <template> [flags]
intropy int list [dir] [flags]
intropy int show [dir] [flags]

Scaffold a new integration from the official Intropy template library. The positional argument selects which template subdirectory to render (for example hello-world or extractor); run intropy template show <template> first to see its parameters.

Flag Description
-n, --name <name> Integration name. Sets the template’s name parameter and, unless --out-dir is set, becomes the output directory.
-o, --out-dir <dir> Destination directory. Defaults to --name.
-s, --set <key=value> Set a template value. Repeatable.
-f, --values <file> Values file in YAML/JSON. Repeatable; use - to read one document from stdin.
--no-input Never prompt; fail if a required value is missing. Required for CI and scripts.
--force Allow rendering into a non-empty output directory.
--output json Write the result document to stdout. See Machine-readable result.
--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.

Note that -o is --out-dir here, not --output; see flag conventions.

Terminal window
intropy int create extractor -n OrderExtractor -o order-extractor \
-s organization=Fluxia -s topic=orders -s contract=Order -s empty=false \
--no-input
fetching integrio-intropy/intropy-templates@v0.4.1
created order-extractor from integrio-intropy/intropy-templates@v0.4.1 (template extractor)
created dependency Contracts from template shared-contracts

Any required parameter not supplied by -s, -f, or -n is prompted for interactively; --no-input fails fast instead. A non-empty output directory is refused without --force.

-n and -o split the same way dotnet new splits them: --name names the artifacts (the .NET project, root namespace, and assembly, so it must be PascalCase), and --out-dir is the literal output location. Without -o, the directory is the PascalCase name.

Scaffold each Component into a kebab-case directory matching its component name (-o order-extractor for -n OrderExtractor). The Aspire System host resolves each component’s project by folder convention: a sibling directory ../<component-name>/src/*.csproj (falling back to a flat <component-name>.csproj). A Component left in its PascalCase default directory is invisible to that convention, and dotnet run in the host fails with No project found for these components by folder convention, telling you to create the project next to the SystemHost. The component name is the kebab-cased --name (visible as appId in the scaffold values), so the rule is: pass -o <kebab-cased-name>.

Component templates declare a shared contracts library as a dependency, scaffolded as a sibling directory (by convention ../Contracts, from the contracts parameter). The first component to need it creates it; later components find it and skip:

dependency Contracts already scaffolded from shared-contracts — skipped

The dependency is recorded in the component’s scaffold record under dependsOn, and every component references the library via a ProjectReference.

--output json writes a result document to stdout, after the human-readable progress lines. Its fields, as captured from a real scaffold:

Field Contents
template The template rendered, e.g. "extractor".
owner, repo The template library, e.g. "integrio-intropy" / "intropy-templates".
version The exact release tag rendered from, e.g. "v0.4.1".
outputDir Absolute path of the created directory.
values The resolved parameter values, including derived ones (appId, port, projectName, pubsub).
dependencies One entry per auto-scaffolded dependency: its template, absolute outputDir, and action (e.g. "created").

Every scaffold writes .intropy/scaffold.json inside the new integration. Commit it: later commands read it. int list and int show are views over these records, sys create assembles the System model from them, and manifests derives each component’s workload from them. The record from the extractor scaffolded above:

{
"schemaVersion": 1,
"template": "extractor",
"owner": "integrio-intropy",
"repo": "intropy-templates",
"version": "v0.4.1",
"values": {
"appId": "order-extractor",
"port": "order-extractor-source",
"contract": "Order",
"contracts": "Contracts",
"empty": false,
"name": "OrderExtractor",
"organization": "Fluxia",
"projectName": "OrderExtractor",
"pubsub": "pubsub",
"topic": "orders"
},
"blockKind": "extractor",
"dataFlow": "in",
"dependsOn": [
{
"template": "shared-contracts",
"dir": "../Contracts"
}
]
}
Field Contents
schemaVersion Record schema version, currently 1.
template, owner, repo, version The template and the exact library release it was rendered from.
values The resolved parameter values, including derived ones.
role On non-component records only: shared-library (the contracts project) or system-host.
blockKind On component records: the Component’s kind — extractor, loader, or transactional-integration. The field name (and the Block: line in int show output) predates the Component vocabulary and follows it in an upcoming release.
dataFlow The Component’s direction: in (extractor), out (loader), or both (transactional).
dependsOn Auto-scaffolded dependencies, each with its template and relative dir.

Walk the directory tree from dir (default: the current directory) and list every project carrying a .intropy/scaffold.json record. Matched projects are not descended into (projects do not nest), and .git, .intropy, node_modules, bin and dist are skipped. Projects with an unreadable record are reported as warnings on stderr without hiding the rest.

Flag Description
-o, --output <format> plain (default) or json. The JSON document includes the pinned source and scaffold values.
Terminal window
intropy int list
PATH TEMPLATE VERSION
Contracts shared-contracts v0.4.1
order-extractor extractor v0.4.1
order-flow system-host v0.4.1
order-loader loader v0.4.1

Show the scaffold record of the integration at dir (default: the current directory, searched upward): which template rendered it, from which release, with which values.

Flag Description
-o, --output <format> plain (default) or json. json prints the record unchanged.
Terminal window
intropy int show order-extractor

The first line is the resolved project directory, followed by:

scaffolded from extractor @ integrio-intropy/intropy-templates@v0.4.1
Block: extractor (data flow: in)
Depends on:
shared-contracts -> ../Contracts
Values:
appId: order-extractor
port: order-extractor-source
contract: Order
contracts: Contracts
empty: false
name: OrderExtractor
organization: Fluxia
projectName: OrderExtractor
pubsub: pubsub
topic: orders

int describe and int local were removed. intropy template show <template> prints what describe printed (a template’s manifest and parameter schema), and intropy manifests render --env local renders what local rendered.