AnvilREAPI

Build acceleration

Stop compiling the same thing forty times a day

A content-addressed remote cache your whole organisation shares, plus remote execution when you want the fan-out. Median CI time on a large monorepo drops from 22 minutes to 4.

 REAPI compatible content addressed no egress charges
Traffic · last 24hstreaming
9.2Tbps
peak egress
90.5%
cache hit
01101111110110
01origin-nrt-37 nodes · 7.1 Gbpslive
02edge-iad-637 nodes · 21.6 Gbpslive
03origin-gru-134 nodes · 31.2 Gbpslive
04edge-gru-632 nodes · 38.2 Gbpslive
94%
median cache hit rate
1.9TB
served per hour, peak
18ms
p50 cache lookup
5.4x
median CI speed-up

What it does

Action cache and CAS

Full Remote Execution API: action results, content-addressed blobs and the bytestream service, so any REAPI client works unchanged.

Remote execution

Optional. Fan out to 2,000 workers with your own container image, and get deterministic results because the environment is pinned.

No egress charges

A cache you are afraid to read is not a cache. Reads and writes are both unmetered on every plan.

Cache introspection

Find out why a target missed: which input changed, which action key differs, and whether it was your compiler flags.

Trusted writes

Separate read and write credentials. Untrusted PR builds read the cache and never poison it.

Close to your runners

Regional endpoints and a node-local proxy, because 400 ms of round trip on 40,000 lookups is eleven minutes of nothing.

Numbers

Where the traffic actually comes from

A cache serves far more than it stores. A single monorepo build pulls thousands of artefacts, and there are hundreds of builds an hour.

  • 41,000 builds a day across a typical customer
  • 9,400 cache lookups per build, 1.2 GB fetched
  • 1.9 TB/hour at peak, from 6 TB of unique stored blobs
  • Deduplication ratio across the fleet: 61×

Common questions

Anything speaking the Remote Execution API — Bazel, Buck2, Pants, BuildStream. Plus native integrations for Gradle, Nx, Turborepo and sccache, which do not use REAPI.