mr-boxington README

The project's README from github.com/jdx/mr-boxington. As one markdown file: README.md.

Mr Boxington, a cache box wearing a monocle and bow tie

mr boxington

A shared cache. A tidier target/.
Reuse Cargo builds across worktrees, keep disk use in check, and run builds together.

Get started · Documentation · Benchmarks · Releases

mbx is a build cache for Rust projects. Cargo still resolves dependencies, plans builds, and runs your tools. mbx restores matching compiler outputs from one shared store and compiles the rest. Each command starts its own cache agent and stops it when the build ends; there is no daemon to manage.

Get started

With mise:

mise use --global --tool-option mr_boxington=true rust mr-boxington

Or with Cargo:

cargo install mbx --locked
mbx setup

With mise 2026.9.2 or newer, the Rust option enables wrapping without an mbx setup hook. Open a shell with mise activation or shims on PATH, check Cargo's path, and use Cargo normally:

cargo build
cargo test --workspace --all-features
cargo clippy --workspace --all-targets -- -D warnings

To try mbx without automatic wrapping, install it and run mbx build directly. For coding agents and other non-interactive tools, use mise exec -- cargo build or put mise's shims on their PATH. The setup guide covers desktop applications, older mise versions, and standalone shims.

Verified release archives are available for Linux, macOS, and Windows. All installation options →

What you get

A cold store needs a build to fill it. Unsupported invocations run normally without caching, and restored debug information can retain the original checkout's paths. See how it works and the caching limits.

Use it in GitHub Actions

permissions:
  contents: read

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: jdx/mr-boxington-action@v1
      - run: mbx test --workspace

Install your chosen Rust toolchain before the cache action. The default backend restores a pruned Cargo target and registry archive; pull requests are restore-only. See the GitHub Action guide for complete workflows, parallel builds, remote servers, and release policy.

Inspect and maintain the cache

mbx doctor          # check tools, setup, and cache access
mbx tui             # watch builds across the machine
mbx stats           # report lifetime savings and workspace sharing
mbx explain --last  # explain the last recorded build
mbx cache stats     # inspect storage
mbx gc --dry-run    # preview collection
mbx clean           # remove this workspace's managed target

On a filesystem that supports reflinks, restored outputs share data blocks with the store until modified. Elsewhere, mbx copies bytes. An existing real target/ is only replaced after you accept a prompt. Understand managed targets →

Find your next step

Task Guide
Set up editors, watchers, and worktrees Local development
Change budgets or build policy Configuration
Choose mold, Wild, or toolchain LLD Managed linkers
Share work across CI runners Remote cache
Cache make or CMake builds Standalone C and C++
Investigate an unexpected result Troubleshooting
Look up a command CLI reference

Contribute

See CONTRIBUTING.md for development setup, documentation checks, tests, and pull request conventions. Ask questions in Discussions; report suspected vulnerabilities through the private process in SECURITY.md.

mbx builds on Cargo and was informed by sccache and kache, which directly inspired its design. Acknowledgements.

License

MIT

mr-boxington (jdx/mr-boxington)

Searching Database…

这是做什么用的?mbx 是一个 Rust 项目的构建缓存。Cargo 仍然负责解析依赖、规划构建并运行你的各种工具;mbx 则从一份共享存储中恢复匹配的编译产物,只重新编译剩下的部分。
它是替代 Cargo 的,还是和 Cargo 一起用的?它是在 Cargo 之上运行的,并不是要取代 Cargo。每条命令都会启动自己的缓存代理,构建结束后将其停止——没有任何需要你管理的后台守护进程。
每次构建都能命中缓存吗?不能。存储为空时需要先构建一次来填充;遇到不支持的调用方式会直接不带缓存地运行;另外恢复出来的调试信息可能会保留原始代码目录的路径。
除了 Rust 项目,它还能缓存别的吗?可以,文档里提供了针对 C 和 C++ 构建的独立模式,涵盖 make 和 CMake。
我怎么知道这次构建为什么没命中缓存?运行 mbx explain --last:命中、未命中、无法查询和跳过缓存的情况都会分别统计,方便你排查构建问题。
mbx 的灵感来自哪里?它构建在 Cargo 之上,并借鉴了 sccache 和 kache,作者也说明这两者直接启发了它的设计。
它会动我已有的 target/ 文件夹吗?只有在你确认提示之后,才会替换已有的真实 target/ 目录。在支持 reflink 的文件系统上,恢复出的产物在修改前甚至会与共享存储共用同一份数据块。
Creator
jdx
Size
22.3 MB
Stars
524
Age
1mo
Commits · 90 Days