Flag Default Description -r, --registry <URL>https://api.zinc.sulfone.raichu.cluster.atomi.cloudRegistry endpoint -d, --debug- Enable debug output --version- Print version
Variable Corresponding Flag CYANPRINT_REGISTRY-r, --registry
Command Alias buildbcreatecupdateutrytdaemondpushptestte
Build Docker images using buildx.
cyanprint build < TA G > [OPTIONS]
Argument Required Description <TAG>Yes Build tag (e.g. v1)
Option Default Description -c, --config <PATH>cyan.yamlPath to config file -p, --platform <PLATFORMS>- Target platforms (comma-separated) -b, --builder <NAME>- Buildx builder to use --no-cache- Don't use cache --dry-run- Show commands without executing --folder <DIR>.Working directory for the build
Create a new project from a template.
cyanprint create < TEMPLATE_RE F > [PATH]
Argument Required Description <TEMPLATE_REF>Yes Template reference (format: <username>/<name>:<version>) [PATH]No Output directory (default: .)
Option Default Description -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL
Variable Corresponding Flag CYANPRINT_COORDINATOR-c, --coordinator-endpoint
Update an existing project to the latest template version. This command uses the .cyan_state.yaml file to perform a 3-way merge between your local changes and the upstream template.
Argument Required Description [PATH]No Project directory (default: .)
Option Default Description -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL -i, --interactive- Select versions interactively --force- Force update even if git is dirty (skip confirmation prompt)
Variable Corresponding Flag CYANPRINT_COORDINATOR-c, --coordinator-endpoint
Try a local template or group without publishing to the registry.
Try a local template (with build/images).
cyanprint try template < TEMPLATE_PAT H > < OUTPUT_PAT H > [OPTIONS]
Argument Required Description <TEMPLATE_PATH>Yes Path to template <OUTPUT_PATH>Yes Output directory
Option Default Description --dev- Enable dev mode for local development --keep-containers- Preserve template container and blob volume after execution --disable-daemon-autostart- Skip automatic daemon start -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL
Try a local group template (no build, dependencies from registry).
cyanprint try group < TEMPLATE_PAT H > < OUTPUT_PAT H > [OPTIONS]
Argument Required Description <TEMPLATE_PATH>Yes Path to template <OUTPUT_PATH>Yes Output directory
Option Default Description --disable-daemon-autostart- Skip automatic daemon start -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL
Variable Corresponding Flag CYANPRINT_COORDINATOR-c, --coordinator-endpoint
Manage the CyanPrint Coordinator daemon.
cyanprint daemon < COMMAN D >
Start the CyanPrint Coordinator daemon.
Docker must be installed and running before starting the daemon.
cyanprint daemon start [VERSION] [OPTIONS]
Argument Required Description [VERSION]No Coordinator version (default: latest)
Option Default Description -p, --port9000 Port to host the daemon container -r, --registryhttps://api.zinc.sulfone.raichu.cluster.atomi.cloudRegistry endpoint for the coordinator
Variable Corresponding Flag CYANPRINT_REGISTRY-r, --registry
Stop the CyanPrint Coordinator daemon and cleanup.
cyanprint daemon stop [OPTIONS]
Option Default Description -p, --port9000 Port where daemon is running
Push templates, processors, plugins, resolvers, or groups to the registry.
cyanprint push [OPTIONS] < COMMAND >
Option Default Description -t, --token <TOKEN>- Authentication token -c, --config <CONFIG_PATH>cyan.yamlPath to config file -m, --message <MESSAGE>No descriptionPublish message --platform <PLATFORMS>- Target platforms for build (comma-separated) --builder <NAME>- Buildx builder to use for build --no-cache- Don't use cache during build --dry-run- Show build commands without executing --folder <DIR>.Working directory for the build (used with --build)
Variable Corresponding Flag CYAN_TOKEN-t, --token
Push a template to the registry.
cyanprint push --token < TOKE N > template [OPTIONS] [BLOB_IMAGE] [BLOB_TAG] [TEMPLATE_IMAGE] [TEMPLATE_TAG]
Option Description --build <TAG>Build with tag before pushing (requires build config in cyan.yaml)
Argument Required Description [BLOB_IMAGE]No Blob image name [BLOB_TAG]No Blob tag [TEMPLATE_IMAGE]No Template image name [TEMPLATE_TAG]No Template tag
Push a processor to the registry.
cyanprint push --token < TOKE N > processor [OPTIONS] [IMAGE] [TAG]
Option Description --build <TAG>Build with tag before pushing (requires build config in cyan.yaml)
Argument Required Description [IMAGE]No Image name [TAG]No Image tag
Push a plugin to the registry.
cyanprint push --token < TOKE N > plugin [OPTIONS] [IMAGE] [TAG]
Option Description --build <TAG>Build with tag before pushing (requires build config in cyan.yaml)
Argument Required Description [IMAGE]No Image name [TAG]No Image tag
Push a conflict resolver artifact to the registry.
cyanprint push --token < TOKE N > resolver [OPTIONS] [IMAGE] [TAG]
Option Description --build <TAG>Build with tag before pushing (requires build config in cyan.yaml)
Argument Required Description [IMAGE]No Image name [TAG]No Image tag
Push a template group (meta-template that combines other templates) to the registry.
Groups are config-only artifacts with no Docker images. Define the group structure in cyan.yaml and push without specifying images.
cyanprint push --token < TOKE N > group
Automated snapshot-based testing for templates, processors, plugins, and resolvers. Unlike try (interactive development testing), test runs automated test cases defined in test.cyan.yaml and compares output against expected snapshots.
Auto-generate test cases by walking a template's Q&A tree. For each question, all possible answer branches are explored to produce test combinations.
test init is only available for templates. Processors, plugins, and resolvers require manually creating test.cyan.yaml.
cyanprint test init [PATH] [OPTIONS]
Argument Required Description [PATH]No Path to template directory (default: .)
Option Default Description --max-combinations <N>30Maximum test combinations to generate --text-seed <VALUE>"dummy"Seed value for Text question answers --password-seed <VALUE>"secret"Seed value for Password question answers --date-seed <VALUE>today's date Seed value for Date question answers (YYYY-MM-DD) -i, --interactive- Interactively select which branches to explore -p, --parallel <N>1Parallel test cases for snapshot generation -o, --output <DIR>.cyan_outputOutput directory for test results --config <PATH>cyan.yamlPath to build config file -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL --disable-daemon-autostart- Skip automatic daemon start
Run snapshot tests for a template.
cyanprint test template [PATH] [OPTIONS]
Argument Required Description [PATH]No Path to template directory (default: .)
Option Default Description --test <NAME>- Run only a specific test by name --parallel <N>1Number of parallel test cases --update-snapshots- Update expected snapshots with actual output -o, --output <DIR>.cyan_outputOutput directory for test results --config <PATH>cyan.yamlPath to build config file --junit <PATH>- Write JUnit XML report to file -c, --coordinator-endpointhttp://coord.cyanprint.dev:9000Coordinator URL --disable-daemon-autostart- Skip automatic daemon start
Run snapshot tests for a processor.
cyanprint test processor [PATH] [OPTIONS]
Arguments and options are the same as test template.
Run snapshot tests for a plugin.
cyanprint test plugin [PATH] [OPTIONS]
Arguments and options are the same as test template.
Run snapshot tests for a resolver.
cyanprint test resolver [PATH] [OPTIONS]
Arguments and options are the same as test template.
Variable Corresponding Flag CYANPRINT_COORDINATOR-c, --coordinator-endpoint
Test cases are defined in a test.cyan.yaml file at the project root:
path : ./fixtures/expected/my-test-case
# Template-specific fields:
- "bun install --dry-run"
# Processor-specific fields:
# Resolver-specific fields:
- path : ./inputs/template-a
File Type Comparison Method .json filesDeep comparison (field order ignored) Other text files Exact string match (trailing whitespace trimmed) Binary files Skipped (reported but not compared)
Extra files in actual output or missing files from expected output cause test failure.