GitPedia

Cargo rail

Graph-aware monorepo orchestration for Rust workspaces

From loadingalias·Updated June 25, 2026·View on GitHub·

> Rust monorepo tooling for change detection, graph unification, release automation, and split/sync. The project is written primarily in Rust, distributed under the MIT License license, first published in 2025. Key topics include: build-tools, cargo, cargo-plugin, change-detection, ci.

Latest release: v0.13.4cargo-rail v0.13.4
June 1, 2026View Changelog →

cargo-rail

Rust monorepo tooling for change detection, graph unification, release automation, and split/sync.

Crates.io CI MSRV

What It Covers

  • plan / run: file-first change detection for selective build, test, bench, docs, and infra execution
  • unify: workspace dependency unification, feature cleanup, unused dependency detection, and MSRV derivation
  • release: version bump, changelog generation, tagging, and publish flow without a large external toolchain
  • split / sync: copybara-style crate extraction and bidirectional sync without a separate DSL

Quick Start

bash
cargo install cargo-rail cargo rail init cargo rail unify --check cargo rail plan --merge-base --explain cargo rail run --merge-base --profile ci

Pre-built binaries: GitHub Releases

Core Workflows

Change Detection

Use plan to build the deterministic contract and run to execute only the selected work.

bash
cargo rail plan --merge-base cargo rail plan --merge-base -f github cargo rail run --merge-base --profile ci

impact is diagnostic. scope is the execution handoff.

Graph Unification

Use unify to keep the workspace dependency graph lean and consistent.

bash
cargo rail unify --check cargo rail unify --check --explain cargo rail unify

Release Workflow

Use release for checks, changelog generation, tags, remote push, GitHub Releases, and publish ordering.

bash
cargo rail release check cargo rail release run cargo-rail --bump patch --yes

For an owned GitHub release, set both push = true and create_github_release = true.
cargo-rail pushes the release commit and tag before publishing crates or making the GitHub Release public.

Split / Sync

Use split and sync when a crate needs to live in both a monorepo and a standalone repository.

bash
cargo rail split init crates/my-crate cargo rail split run crates/my-crate cargo rail sync crates/my-crate --to-remote

GitHub Actions

Use cargo-rail-action for planner gates and execution scope in GitHub Actions.

Config

bash
cargo rail init cargo rail config sync cargo rail config validate

Primary references:

Migration

Getting Help

Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md.

License

Licensed under MIT.

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from loadingalias/cargo-rail via the GitHub API.Last fetched: 6/27/2026