Local-only release manager CLI for git repositories.
python3.12 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e ".[dev]"arm --repo . status
arm --repo . validate
arm --repo . plan
arm --repo . release --dry-run --project-name demo
arm --repo . rollback --dry-runarm --repo . release --dry-run --allow-dirty --project-name demoarm --repo . release --project-name autonomous-release-managerarm --repo . release --sign-commit --sign-tag --project-name autonomous-release-managerarm --repo . release --push --no-remote-safe --remote origin --project-name autonomous-release-manager- Default is enabled (
--remote-safe). - When enabled,
--pushis blocked to prevent accidental remote side effects. - Disable explicitly with
--no-remote-safeonly when you intend to push.
- Set via
arm.toml([policy].allowed_branches). - Supports exact branch names and simple globs like
release/*. - Release execution fails fast when the current branch is not allowed.
--sign-commitsigns the release commit (git commit -S).--sign-tagsigns the release tag (git tag -s).- Requires local git signing setup (GPG/SSH signing config).
[policy]
initial_version = "0.1.0"
fail_on_dirty = true
unknown_type_behavior = "patch" # patch|none|fail
patch_types = ["fix", "perf", "docs", "chore", "refactor", "test", "build", "ci", "style"]
no_bump_types = ["revert", "merge"]
allowed_branches = ["main", "release/*"]
remote_safe_default = true
default_remote = "origin"arm status
arm validate [--from REF --to REF]
arm plan [--json] [--level auto|major|minor|patch]
arm release [--dry-run] [--level ...] [--no-commit] [--no-tag] [--allow-dirty] \
[--sign-commit] [--sign-tag] [--push] [--remote-safe/--no-remote-safe] [--remote origin]
arm rollback [--dry-run] [--hard] [--keep-artifacts]