Make CWL workflows easier to discover, cite, reuse, and inspect.
Transpiler-Mate is a collection of open-source tools built around Common Workflow Language (CWL). Describe your workflow and its Software Application metadata once, then generate documentation, input templates, citations, research objects, service descriptions, and software bills of materials with independent plugins. These artifacts support FAIR research software practices and supply-chain assessment.
- Explore the repositories
- Get started
- What can you do with Transpiler-Mate?
- Build a plugin
- Edit Software Application metadata
Use Python 3.10 or newer. Install the runtime and the plugins you need in the same Python environment:
python -m pip install transpiler-mate-runtime ${TM_PLUGIN_1} ... ${TM_PLUGIN_N}
transpiler-mate --helpInstalled plugins become subcommands of transpiler-mate. Run transpiler-mate <plugin> --help for their options.
The runtime loads CWL documents, prepares a shared context, and discovers installed plugins. A separate API package defines the contracts that let plugins be developed and distributed independently.
| Project | Role | Documentation |
|---|---|---|
| transpiler-mate-runtime | The transpiler-mate CLI, plugin discovery and execution, source loading, and built-in CWL bundling. |
Docs |
| transpiler-mate-api | Shared plugin contracts and models for plugin authors and runtime implementations. | Docs |
| cwl-loader | Python utilities for loading, normalizing, and serializing CWL documents. | Docs |
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Inventory container dependencies | cwl2sbom | Local Trivy CycloneDX SBOMs, workflow inventory, image identity lock, and coverage report. | Docs |
With Trivy installed, generate SBOMs for the containers referenced by a selected workflow.
cwl2sbom follows nested workflows, inspects declared images with Trivy, and records image identities and coverage gaps. It produces local artifacts for your pipeline: use ORAS for OCI publication and attachment, then Trivy for downstream vulnerability and license assessment of the exported image SBOMs. Offline vulnerability scanning requires a provisioned database.
See the offline Trivy scanning guide for database preparation, per-image reports, and policy checks.
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Compare CWL releases | cwl-baseline-plugin | An explainable JSON report comparing resolved CWL releases, with a minimum SemVer increment. | Docs |
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Document workflows | cwl2markdown | Markdown pages with workflow details and software metadata. | Docs |
| Visualize workflows | cwl2puml | PlantUML diagrams, with optional PNG or SVG rendering. | Docs |
| Explore workflows interactively | cwl2webgl | A self-contained, offline HTML explorer for workflow dependencies, nested workflows, ports, and step bindings. | Docs |
With a CWL document containing the required Schema.org SoftwareApplication metadata, generate documentation and diagrams.
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Describe processing services | cwl2ogc | OGC API – Processes input/output descriptors and JSON Schemas. | Docs |
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Prepare publication metadata | cwl2datacite | DataCite metadata JSON for workflow software. | Docs |
| Generate citations | cwl2citation | CFF, BibTeX, RIS, CSL-JSON, and styled text, with configurable CSL styles. | Docs |
| Publish research software | invenio-publish | Records, attachments, DOIs, and new versions in InvenioRDM or Zenodo. | Docs |
| Package research objects | cwl2ro-crate | Workflow RO-Crates, or Provenance Run Crates from existing CWLProv execution records. | Docs |
| Describe catalog records | cwl2ogcrecords | CWL as OGC API – Records. | Docs |
| Export software metadata | cwl2codemeta | CodeMeta JSON-LD derived from embedded Schema.org metadata. | Docs |
Use CodeMeta, DataCite, and OGC Records exports to describe workflows for discovery; provide citations with cwl2citation; and package workflows or recorded executions with cwl2ro-crate. invenio-publish handles publication to InvenioRDM or Zenodo.
The cwl2ro-crate distribution registers the command cwl2rocrate. Its optional --run argument accepts an existing CWLProv directory to package execution provenance.
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Dereference a CWL document and create a uber-CWL | bundle | A bundled, dereferenced CWL document | Docs |
| Generate command-line interfaces | cwl2click | Python Click CLI scaffolding from CWL command-line tools. | Docs |
| Annotate container images | cwl2oci | OCI image annotation JSON with software and CWL process metadata. | Docs |
| Prepare workflow inputs | cwl2inputs | YAML input templates generated with cwltool for a selected CWL process. | Docs |
| Compose Earth observation workflows | eoap-cwlwrap | Type-safe composition of CWL steps with stage-in and stage-out patterns, packed into a self-contained CWL document. | Docs |
Validate workflow inputs before execution:
| Project | Role | Documentation |
|---|---|---|
| assertions-mate | Input validation using JSON Schema, Rego policies, and CQL2 assertions embedded as CWL hints. | Docs |
Warning
Available since version 1.1.0 of the transpiler-mate-runtime
The batch plugin runs multiple plugin executions sequentially with the same resolved CWL context. An execution plan in YAML specifies the plugins and their inputs.
Create tmom.yaml in your working directory:
cwl2sbom:
- platform: 'linux/amd64'
output: 'build/sbom'
cwl2markdown:
- output: 'build/docs'
cwl2puml:
- output: 'build/diagrams'
cwl2webgl:
- output: 'build/explorers'
baseline:
- previous: 'oci://mycompany.org/released.cwl'
output: 'baseline.json'Then run:
transpiler-mate batch workflow.cwl#mainStart with the transpiler-mate-plugin-project-template, a Copier template with Python packaging, tests, documentation, and CI. Implement the plugin API and register your package in the transpiler_mate.plugins entry-point group so the runtime can discover it.
Bug reports, examples, documentation improvements, and new plugins are welcome. Open an issue or pull request in the relevant repository, and follow its contribution and development instructions.
This .github repository hosts the organization's landing-page and profile content.