| Crates.io | monoverse |
| lib.rs | monoverse |
| version | 0.1.9 |
| created_at | 2024-01-29 13:58:51.972396+00 |
| updated_at | 2026-01-09 16:17:23.363407+00 |
| description | A CLI tool for managing version numbers in monorepos. |
| homepage | |
| repository | https://github.com/jannekem/monoverse |
| max_upload_size | |
| id | 1118950 |
| size | 141,056 |
Monoverse is a tool for managing application version numbering using the CalVer versioning scheme. It is designed to be used with monorepos, but it can also be used with single projects.
The monoverse implementation of CalVer follows the YY.MM.MICRO format, where YY is the current year, MM is the current month, and MICRO is a monotonically increasing number that is reset to 0 at the beginning of each month.
Monoverse updates manifest files based on project type and uses git history to decide whether a new release is needed. It can also update dependent files with the new version number so that they stay in sync.
Documentation: https://jannekem.github.io/monoverse/
Create a monoverse.yaml file at the repository root, define your projects, then run a release.
projects:
server:
type: rust
path: server
client:
type: node
path: client
Run the release command:
monoverse release server --commit --tag
git push && git push --tags
This edits the version number (e.g. 25.12.0) in the server project's manifest file, in this case Cargo.toml for a Rust project, creates a commit and a git tag (e.g. server-25.12.0). The commit and tag needs to be manually pushed to the remote if desired.
If there are no commits touching the server directory since the last update to the line containing the version number, the command is a no-op. A release can be forcibly created using the --force flag.
Configuration lives in monoverse.{yaml,json,toml} at the repository root. Project types include rust, node, helm, toml, versionfile, and yaml.
See the documentation for full configuration and selector details.
Monoverse is written in Rust and requires the Rust toolchain. The easiest way to install Rust is with rustup.
Once Rust is installed, you can install the latest published release:
cargo install monoverse
You can also clone the repository and build the binary yourself:
cargo install --path .
Monoverse is available as a container image on GitHub Container Registry.
docker pull ghcr.io/jannekem/monoverse:latest
You can run the container against a local repository by mounting it to /repo:
docker run --rm -v /path/to/repository:/repo ghcr.io/jannekem/monoverse:latest release <project-name>
The container includes git, which makes it easier to integrate monoverse into CI/CD pipelines.