Skip to content

Maestro Releaser

The only way to cut a release.

Releaser is a command-line tool that cuts releases for Python, Node and Rust projects. It reads your conventional commits, bumps the version, writes the changelog with git-cliff, tags, pushes, and creates the GitHub release. There is also an undo.

sh — releaser

How it ships

Five steps in, one command out.

01

It learns your project in one command.

releaser init detects the project type (pyproject.toml, package.json or Cargo.toml), checks the tools, and scaffolds a default cliff.toml. git-cliff is bundled; there is nothing else to install.

sh — releaser init

02

Five steps. Always the same five.

Pre-flight insists on a clean tree and the right branch. The next version comes from your conventional-commit history: feat bumps minor, fix bumps patch. Then changelog, commit, tag, push, GitHub release. Deterministic, every time.

  1. 01

    pre-flight

    clean tree · right branch

  2. 02

    version

    from conventional commits

  3. 03

    changelog

    bundled git-cliff

  4. 04

    commit · tag · push

    chore(release)

  5. 05

    GitHub release

    notes attached

03

CI and agents cut releases the same way you do.

One tool, one behaviour, three audiences: a human at a prompt, a CI job, an unattended agent. Maestro's own releases are cut by the same command this page documents.

--dry-run

See the whole release (version, changelog, tag) before any of it is made.

--yes

No prompts, no surprises. CI and unattended agents cut releases exactly the way you do.

releaser push

Cut locally with --skip-push, review, then push the release and its GitHub entry later.

The safety net

Every release is reversible.

releaser undo walks the whole thing back (tag, commit, changelog, GitHub release) in one reset. Local by default, --remote when you mean it.

sh — releaser undo

▪ shipping deterministic orchestration

Take the podium.