cyan.yaml Reference
Configuration format for template metadata
cyan.yaml Reference
The cyan.yaml file defines template metadata and declares dependencies on processors, plugins, and other templates.
Basic Structure
username: myorgname: my-templatedescription: A template descriptionproject: https://example.com/my-projectsource: https://github.com/myorg/my-templatetags: []readme: README.mdprocessors: []plugins: []templates: []
Fields Reference
username
Required. The organization or user name that owns this template.
username: myorg
- Use lowercase letters
- Use hyphens for separation
- Must match the registry user/organization
name
Required. The template identifier within the organization.
name: my-template
- Use lowercase letters
- Use hyphens for separation
- Must be unique within the organization
description
Required. Brief description of what the template provides.
description: A modern Node.js project template with TypeScript support
project
Required. URL to the project documentation or website.
project: https://docs.myorg.io/templates/node-service
source
Required. URL to the source code repository.
source: https://github.com/myorg/my-template
email
Required. Contact email for the template maintainer.
tags
Required. Tags for template discovery. Can be an empty array.
tags:- nodejs- typescript- react- starter
readme
Required. Path to the template's README file.
readme: README.md
processors
Required. Array of processor dependencies. Can be empty.
processors:- myorg/my-processor- atomi/typescript:3
Format: username/processor-name[:version]
Versions are auto-incrementing integers managed by the registry (not semantic versions). Version is optional: myorg/processor (latest) or myorg/processor:3 (specific version).
plugins
Required. Array of plugin dependencies. Can be empty.
plugins:- cyan/init-git- atomi/npm-install:2
Format: username/plugin-name[:version]
templates
Required. Array of other templates to compose with. Can be empty.
templates:- myorg/base-node- myorg/typescript:2- myorg/docker:1
Format: username/template-name[:version]
Version Management
Template versions are auto-incrementing integers managed by the registry, not semantic versions. When you push a template to the registry, it automatically receives the next available version number (1, 2, 3, ...).
This means:
- No
versionfield exists incyan.yaml - Versions are tracked internally by the registry
- Reference specific versions using the
:versionsuffix (e.g.,myorg/template:3)
Complete Example
# Organization and identityusername: myorgname: node-servicedescription: Production-ready Node.js microservice template# Linksproject: https://docs.myorg.io/templates/node-servicesource: https://github.com/myorg/node-service-templatereadme: README.md# Discoverytags:- nodejs- microservice- typescript- grpc# Processor dependenciesprocessors:- myorg/base-processor# Plugin dependenciesplugins:- cyan/init-git- cyan/npm-install# Compose with other templatestemplates:- myorg/base-node:3- myorg/typescript:2- myorg/docker:1- myorg/grpc:1