kache is a content-addressed, zero-copy build cache for Rust, C/C++ and more. It avoids file copies and wasted disk by hardlinking artifacts locally and sharing them via S3-compatible object storage. This is the pre-release (RC/beta) channel.
README
Kache
Build once. Reuse the work.
Kache is a compiler cache for Rust, C/C++, and CUDA on Linux, macOS, and Windows.
It restores matching compiler outputs across worktrees and CI runs, so you spend
less time rebuilding and less disk space storing the same bytes.
kache init shows the changes before applying them. It configures Cargo's compiler
wrapper and the background service. On Unix it also sets up Cargo and C/C++
shims, test pacing, and shell completions. Open a new terminal after setup.
Run kache init --check for a preview. The probe checks compile, store and
restore in an isolated local cache without contacting a remote.
Then use Cargo as usual in your project. Kache caches eligible compiler work
automatically.
V2 installs kache and its matching kache-engine companion. Keep both when
copying an installation into a container or managing release archives yourself.
What v2 covers
Workflow
Start here
Upgrade from 1.x, including the paired binaries and daemon
Build the same revision in two worktrees with separate target directories.
The second can restore compatible outputs from the first.
Try the walkthrough.
A new cache needs a build to fill it. Reuse requires matching inputs, toolchain,
and build settings. Unsupported compiler invocations run normally.
What can be cached →
Why use Kache?
Reuse eligible Rust libraries, executables, and build scripts across worktrees.
It also caches GCC, Clang, clang-cl, and single-source CUDA object compilations.
Keep identical output bytes once in a cache with a disk budget. On filesystems
with copy-on-write cloning, restored outputs share disk blocks with the cache.
Run builds together. Compiles with the same cache key share one in-flight
build, while the scheduler paces compiler processes.
Share work through S3-compatible storage, Google Cloud Storage, a shared
filesystem, or an OCI registry. The local cache works on its own.
See what happened. Inspect hits and misses, then ask kache explain what changed.
Rust executables and build-script runs are cached by default on Linux and macOS.
See platform support and caching limits
for Windows and other workload details.
Nightly workflows measure cold and warm builds of real projects, including
Firefox, LLVM, and SurrealDB. Browse the benchmark reports
to see the workload, platform, and validation behind each result.
Optional Blaze builds
From v2.0.0-rc.3, the Cargo shim can route eligible local commands
through an installed Blaze client.
Install Blaze separately and opt in from the project:
kache config set --project cache.blaze true
cargo build
It defaults to off and supports Linux and Apple silicon macOS. Installing Blaze
after init works; the shim checks PATH for each eligible command. CI, release
builds and explicit profiles stay on Cargo. Blaze has its own compiler/cache;
compatible dependency work can still use Kache. See the
Blaze guide for activation,
fallback behavior, worktrees, and the project-config selection rules.
Watch a build and explain a miss
kache monitor # live build and cache activity
kache stats --last-build # latest recorded build session
kache explain # why the latest build missed
kache explain --all # all recorded skips and passthroughs, by reason
kache doctor # check your setup
Reports describe recorded builds. Details missing means those builds did
not record enough information to explain a miss. Enable [cache] explain_miss = true
before the next build; this cannot reconstruct details from earlier builds.
kache config set cache.explain_miss true edits the setting from the CLI.