Product
A cache, an executor, and a way to debug both
The cache is the easy part. Explaining a miss is what people actually need.
Cache tiers
| Tier | Location | Typical hit rate | p50 latency |
|---|---|---|---|
| In-memory | runner process | 31% | 0.2 ms |
| Node proxy | runner host disk | 44% | 1.8 ms |
| Regional | same region | 18% | 18 ms |
| Origin | primary region | 1% | 64 ms |
Explaining a miss
bash
anvil explain //services/api:image --build 9c31f0a2
action key differs from cached entry:
input src/handler.go sha256:4f2a… → sha256:8c31…
env GOFLAGS '-mod=mod' → '-mod=readonly'
tool go 1.25.0 → 1.25.1
3 differences · 2 are non-hermetic (env, tool)
suggestion: pin toolchain in the workspace to restore hit rate