Introduction
rx is a fast local-CI and task runner for Rust workspaces. Define your pipeline once, run it the same way locally and in CI.
The problem
CI failures you could have caught locally waste round-trips, and every project reinvents the same fmt/clippy/test/build pipeline in shell scripts and YAML. Workspace-aware concerns — which packages did my change affect? what order do tasks run in? — get solved ad hoc, per repo.
What rx does
- One-command CI —
rx ciruns your full pipeline locally - Task runner — define tasks once in
[tasks]withdepends-onpipelines, run them anywhere withrx run - Affected-only testing —
rx test --affectedtests only packages changed since a base ref - Workspace orchestration — dependency-aware parallel execution across members
- Unified commands —
rx testpicks nextest when available,rx lintruns clippy strict,rx fmtruns rustfmt - Fast builds — auto-detected
mold/lldlinkers - CI generation —
rx init --ciwrites a workflow that mirrors your local pipeline
rx deliberately does not replace Cargo, rustup, or the cargo plugin ecosystem. Compilation scheduling and target/ belong to Cargo; compiler caching belongs to tools like sccache; releases, audits, and scaffolding belong to their dedicated tools. See PRODUCT.md for the full list of non-goals.
Getting started
curl -fsSL https://raw.githubusercontent.com/iPeluwa/rx/master/install.sh | sh
cd my-rust-project
rx init --ci
rx ci