---
title: Kache
description: Install Kache, verify reuse, and find the guide for your workflow
---
Kache reuses matching compiler outputs for Rust, C/C++, and CUDA. Keep using your
build tools; Kache restores eligible work from a shared local store and compiles
the rest. Optional remote storage shares that work between machines.
## Start with a local build
```bash
cargo install kache --locked
kache init
cargo build
```
You need Rust 1.95 or newer to install through Cargo. Prebuilt packages are
available in the [installation guide](/docs/getting-started/installation).
`kache init` shows its setup plan before applying changes.
A fresh cache needs a build to fill it. If Cargo already has up-to-date outputs,
it skips the compiler and Kache has nothing to restore. Follow the
[quick start](/docs/getting-started/quick-start) to verify reuse in two worktrees
with separate target directories.
## Set up your workflow
| Task | Guide |
| --- | --- |
| Cache Make, CMake, or build-script C/C++ | [C and C++](/docs/getting-started/c-cpp) |
| Cache CUDA object compilations | [CUDA](/docs/getting-started/cuda) |
| Cache Rust documentation | [Rustdoc](/docs/getting-started/rustdoc) |
| Use Kache with cargo-mutants | [Mutation testing](/docs/getting-started/mutation-testing) |
| Share work between machines | [Remote cache](/docs/remote-cache/overview) |
| Configure GitHub Actions or another CI | [CI setup](/docs/remote-cache/ci) |
| Change storage limits or build policy | [Configuration](/docs/getting-started/configuration) |
## Understand a build
Start with [Troubleshooting](/docs/getting-started/troubleshooting) if a build
has unexpected misses or no hits. Use [Monitor](/docs/monitor) to inspect live
activity and [the full report](/docs/commands/reference#the-full-report) to save
a build's results.
For the details, read [cache keys](/docs/how-it-works/cache-key),
[build-script inputs](/docs/how-it-works/build-scripts),
[concurrent builds](/docs/how-it-works/limits), and
[storage deduplication](/docs/deduplication).
## Current support
| Area | Support |
| --- | --- |
| Rust libraries | Linux, macOS, and Windows |
| Rust executables, test binaries and build scripts | Cached by default on Linux and macOS, off by default on Windows (`cache_executables`). Build-script runs are cached on Linux and macOS |
| C and C++ object compilation | GCC, Clang, Apple Clang, and clang-cl. MSVC `cl.exe` is not cached |
| CUDA object compilation | Single-source `nvcc -c` and `-dc` |
| Rust documentation | Unix with compatible Cargo versions and [unstable rustdoc flags](/docs/getting-started/rustdoc). Rust 1.99 and Windows pass through |
| Local cache | Content-addressed storage with automatic garbage collection |
| Remote cache | S3-compatible storage, GCS, filesystems, and OCI registries |
| Build visibility | Live monitor, stats, miss explanations, and reports |
Kache passes unsupported compiler invocations through unchanged. A passthrough is not a cache hit or miss. Its reason appears in the monitor's Why tab and in the Not cached section of `kache stats --full`.
## Reference and measurements
- [Command reference](/docs/commands/reference): commands, flags, and report formats.
- [Compatibility](/docs/compatibility): what stays stable across 1.x releases, and the Rust version needed to build from source.
- [Architecture](/docs/how-it-works/architecture): wrapper, store, daemon, and planner.
- [Daemon lifecycle](/docs/daemon/lifecycle): services, restarts, and environment changes.
- [Benchmarks](/docs/benchmarks): real-project workloads, measurements, and validation.
- [Kache or sccache?](/docs/getting-started/comparison): capabilities and tradeoffs.
## Feedback
If Kache behaves differently from these docs, [open a bug report](https://github.com/kunobi-ninja/kache/issues/new?template=bug_report.md).
For a missing compiler, remote backend, or workflow, [request a feature](https://github.com/kunobi-ninja/kache/issues/new?template=feature_request.md).