cranko 0.3.3

A cross-platform, cross-language release automation tool
cranko-0.3.3 is not a library.

Build Status


Cranko is a release automation tool implementing the just-in-time versioning workflow. It is cross-platform, installable as a single executable, supports multiple languages and packaging systems, and is designed from the ground up to work with monorepos.

To learn more, check out the book!


Cranko is delivered as a single standalone executable for easy installation on continuous integration systems. On Unix-like systems (including macOS), the following command will drop an executable named cranko in the current directory:

curl --proto '=https' --tlsv1.2 -sSf | sh

On Windows systems, the following command will do the same in a PowerShell window:

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString(''))

For more details and additional methods, see the Installation section of the book.

Getting Started

Because Cranko is a workflow tool, to really start using it you’ll need to learn a bit about how it works and then think about how to integrate it into your development processes. To learn more, check out the Getting Started and Just-in-Time Versioning sections of the book.

Development Roadmap

Cranko is still a new project and is lacking many features that would be useful. Here are some of the things on the radar:

  • Built-in support for more languages / frameworks:
    • Rust
    • NPM
    • Python
    • Visual Studio?
  • Per-repo config file
    • Identify upstream remote from its URL
    • Customize project configuration
      • Custom per-project "rewriter" additions
    • Defined "unaffiliated" projects
  • Revamp error handling infrastructure
  • cranko bootstrap command to help people onboard
  • Figure out how we're going to make a test suite for this beast

Here are some larger projects that would be cool:

  • Split the main implementation into multiple crates
  • Pluggable framework for auto-generating release notes (e.g., taking advantage of Conventional Commit formats, auto-linking to GitHub pull requests)
  • Pluggable framework for knowing when releases should be made and/or determining how to bump version numbers (e.g., Conventional Commits plus semantic-release type standards)
  • Pluggable framework for deciding which commits affect which projects
  • Additional templates for release notes, tag names, etc. etc.
  • More robust CLI interface for querying the project/release graph so that external tools can build on Cranko as a base layer.

cargo Features

The cranko Cargo package provides the following optional features:

  • vendored-openssl — builds the git2 dependency with its vendored-openssl feature, which uses a builtin OpenSSL library rather than attempting to link with the system version. This is useful when cross-compiling because often the target environment lacks OpenSSL.


Are welcome! Please open pull requests or issues against the pkgw/cranko repository.


Cranko copyrights are held by Peter Williams and the Cranko project contributors. Source code is licensed under the MIT License.