AnvilREAPI

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.

ClientREAPIEdge proxynode-localAction cachekeysCASblobsExecutoroptional

Cache tiers

TierLocationTypical hit ratep50 latency
In-memoryrunner process31%0.2 ms
Node proxyrunner host disk44%1.8 ms
Regionalsame region18%18 ms
Originprimary region1%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