bradfitz/go-tool-cache

Go

131

73 commits

updated Oct 1, 2026

See the code

README

go-tool-cache

Do you like Go's built-in build & test caching but wish it weren't purely stored on local disk in the $GOCACHE directory?

Want to share your cache over the network between your various machines, coworkers, and CI runs without all that GitHub actions/caches tarring and untarring?

Go's GOCACHEPROG lets you do that!

This was a demonstration repro for when GOCACHEPROG was still a proposal. Now it just contains some misc examples.

Status

GOCACHEPROG shipped as an experiment in Go 1.21. It became official in Go 1.24.

Using

First, build your cache child process. For example,

$ go install github.com/bradfitz/go-tool-cache/cmd/go-cacher@latest

Then tell Go to use it:

$ GOCACHEPROG=$HOME/go/bin/go-cacher go install std

See some stats:

$ GOCACHEPROG="$HOME/go/bin/go-cacher --verbose" go install std
Defaulting to cache dir /home/bradfitz/.cache/go-cacher ...
cacher: closing; 548 gets (0 hits, 548 misses, 0 errors); 1090 puts (0 errors)

Run it again and watch the hit rate go up:

$ GOCACHEPROG="$HOME/go/bin/go-cacher --verbose" go install std
Defaulting to cache dir /home/bradfitz/.cache/go-cacher ...
cacher: closing; 808 gets (808 hits, 0 misses, 0 errors); 0 puts (0 errors)

bradfitz/go-tool-cache

Go

131

73 commits

updated Oct 1, 2026

See the code

README

go-tool-cache

Do you like Go's built-in build & test caching but wish it weren't purely stored on local disk in the $GOCACHE directory?

Want to share your cache over the network between your various machines, coworkers, and CI runs without all that GitHub actions/caches tarring and untarring?

Go's GOCACHEPROG lets you do that!

This was a demonstration repro for when GOCACHEPROG was still a proposal. Now it just contains some misc examples.

Status

GOCACHEPROG shipped as an experiment in Go 1.21. It became official in Go 1.24.

Using

First, build your cache child process. For example,

$ go install github.com/bradfitz/go-tool-cache/cmd/go-cacher@latest

Then tell Go to use it:

$ GOCACHEPROG=$HOME/go/bin/go-cacher go install std

See some stats:

$ GOCACHEPROG="$HOME/go/bin/go-cacher --verbose" go install std
Defaulting to cache dir /home/bradfitz/.cache/go-cacher ...
cacher: closing; 548 gets (0 hits, 548 misses, 0 errors); 1090 puts (0 errors)

Run it again and watch the hit rate go up:

$ GOCACHEPROG="$HOME/go/bin/go-cacher --verbose" go install std
Defaulting to cache dir /home/bradfitz/.cache/go-cacher ...
cacher: closing; 808 gets (808 hits, 0 misses, 0 errors); 0 puts (0 errors)

Project health

Overall

5.1/10

Maintained

10/10

Code review

6/10
OpenSSF Scorecard

Significant stargazers

Matt Layher

2,100 followers · starred Apr 2023

Emmanuel T Odeke

724 followers · starred Apr 2023

joe miller

203 followers · starred Apr 2023

William Storey

126 followers · starred Nov 2025