Rel-Ease
Rel-Ease (release-cli on PyPI) is a terminal release manager that pairs a Click CLI with an AI agent. The LLM reads your diff, proposes SemVer bumps, updates release_notes.md, stages commits, and for Python packages runs uv build and twine upload — all through explicit tools you control.
Requirements
- Python 3.11+
- Python projects:
uv,twine(and PyPI credentials viaTWINE_USERNAME/TWINE_PASSWORDor standardtwineconfig) - Node/TypeScript:
npm(fornpm install --package-lock-onlyafter version bumps) - Rust: manual
cargo publishafter the assistant bumpsCargo.tomland commits (by design)
Install
cd rel-ease
uv sync
uv pip install -e .
# or: uv tool install .
Quick start
# Sanity-check environment and repo detection
rel-ease doctor .
# Show how the project is classified (no network)
rel-ease detect .
# Run the release assistant (creates/updates agent named `rel-ease`)
rel-ease release .
# Read-only rehearsal
rel-ease release . --dry-run
# Extra guidance for the model
rel-ease release . --hint "User asked for a minor bump for the new API."
Optional: set REL_EASE_ASSISTANT_ID to pin a specific agent UUID after the first run.
Repo detection (deterministic)
Order of precedence from the repository root:
- Rust —
Cargo.tomlwith a[package]version - Python —
pyproject.tomlwith[project].version - Node/TS —
package.jsonwithversion
If the kind is Python, uv_build and twine_upload run for real. For Node or Rust, those tools return a skipped result so the model does not pretend PyPI ran.
Tools exposed to the assistant
| Tool | Role |
|---|---|
get_repo_context |
Refresh kind, version file, current version |
increment_version |
Bump patch / minor / major or set explicit_version |
git_diff |
git diff with optional --stat and path filters |
git_status_files |
Porcelain status per path |
git_add |
Stage explicit paths |
git_commit |
Commit with your message |
uv_build |
Clean dist/ and uv build (Python only) |
release_notes_update |
Create/update release_notes.md (replace or append) |
twine_upload |
Upload artifacts from dist/ (Python only) |
The language model interprets diffs and drives the sequence; every mutation goes through these tools on your machine.
Environment
| Variable | Purpose |
|---|---|
REL_EASE_ASSISTANT_ID |
Optional UUID override |
TWINE_USERNAME / TWINE_PASSWORD |
PyPI upload (if not using another twine config) |
What Rel-Ease does not do
- No automatic
git push, tags, or GitHub releases (keep usingghor CI). - No
cargo publishwrapper yet — the assistant will remind you after a Rust bump.
License
MIT
Release files for rel-ease-agent 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rel_ease_agent-0.8.0.tar.gz | 17.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rel_ease_agent-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.0 kB
Release files / rel_ease_agent-0.8.0.tar.gz
| Download URL | rel_ease_agent-0.8.0.tar.gz |
|---|---|
| Size | 17.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06b49e8dc48bb7e6dd4dd059b74c69cda05b001717705cd1a653e7c574440f06
|
|
BLAKE2b-256 checksum How to use checksums |
232af09d830c73b0e46f19df0b6c8e6ae289ff204c2b1875cfdc9eea07198d37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / rel_ease_agent-0.8.0-py3-none-any.whl
| Download URL | rel_ease_agent-0.8.0-py3-none-any.whl |
|---|---|
| Size | 22.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
36b5f288d52fbd62b46c68a478ed9e18ad3d6b78119d9508b61b35de8afafc0d
|
|
BLAKE2b-256 checksum How to use checksums |
e22344e6e3b2f7c4d2ad7bf883948a8305da5fe418f5b82db7d9840131ab5a4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|