
shippy
shippy, shippyd, shippy-warm
A shared compiler cache for cargo and rustc
Compile a crate on one machine, reuse it on all of them.
A fresh checkout builds in seconds.
A new clone at a different path with an empty target directory, after another machine had built the same code. Same toolchain and flags in both runs.
The first build into an empty cache is slower than plain cargo (135.3 s against 127.8 s on tempo) because it also stores about a thousand results. All measurements

Uploads are checked before they are served.
An upload from an untrusted machine is only a claim. The box, the shippyd server everyone shares, compiles the same inputs again and serves its own output.
- Local store. shippy looks in the machine's own cache first. Switching branches or undoing an edit is usually answered here.
- The box. On a local miss, shippy asks the box for a verified result.
- Upload. Whatever was compiled locally is uploaded in the background as a claim.
- Verification. The box compiles the claim again from the same inputs, in a sandbox without network access, and serves only its own output.
991 published from the box's sandbox
967 byte-identical to the upload
shippy build runs cargo build with shippy as the compiler wrapper, and the same for any other cargo command.
Each result is stored under a hash of every input the compiler read. When the inputs match, the result is reused instead of compiled.
shippyd is a single server that laptops, CI runners and new machines all read from and upload to.
Dependency build scripts, such as ones that compile C or C++ libraries, run once in the box's sandbox and are cached like any other result.
With SHIPPY_EXEC=auto, the box compiles a cache miss in its sandbox, and the result is available to every machine when it finishes.
shippy-warm builds each new commit on the branches it watches, so the cache already has those results when people pull.
# install $ cargo install --path crates/shippy # use it in place of cargo $ shippy build $ shippy test -p my-crate # connect to a shared box $ shippy setup --remote https://box:7447 --token-file token.txt $ shippy doctor