ExplainersSource: Anthropic Engineering

Source control / An instrument for Git users

Scion,
explained through Git.

On , Anthropic described Scion, the version control system it built to replace Git for its monorepo. Rather than read about it, operate it: change a file and record it in both systems, fetch that revision, send jobs through Scion’s cache tiers, and ask the repository a question with no checkout at all.

4 scenes · A closing · Sources and limits · Reading view

Documented What Anthropic’s post states, or Git’s own documented behavior, with where it says so.

Illustration Invented for this page: the repository, every id, the presets and every count on a stage. Counts are objects and requests, never bytes or time.

Git · Scion · ■ blob · ▬ tree · ● commit or job · ⬡ changeset · ⚑ ref · Reused an object a revision points at again

Change one file. Follow the revision.

Edit a file in the fictional repository and record it. Git writes a blob, a new tree for every directory up the path, and a commit, all in the local repository; everything else is reused by id. Scion’s changeset, created on the shared service, lists only what changed relative to its first parent. Click any object to see what it references.

Get this revision.

Another client now needs the revision you recorded. Git advertises refs, negotiates wants and haves, and answers with one pack. Scion’s client walks from a root tree and asks for each object it lacks by name. Change the scope, the client’s starting point or the Git configuration, and watch what travels.

Send another job.

In Anthropic’s fleet a job’s client asks its node’s scion-daemon, which asks its region’s scion-cache, which asks scion-server. Click a node to send a job. Then go back to scene 1, record another revision, and send the same jobs again: old objects stay useful, and only new ones travel.

Documented The Git side, before Scion. Anthropic ran Git’s standard workarounds: several hundred internal Git mirrors at the peak, and repository snapshots (seeds) kept in blob storage. Seeds fell further from the tip of main between refreshes. Post · Growing our monorepo
Internal Git mirrors … several hundred at the peak Seed in blob storage main, over time → seed refreshed falls behind until the next refresh

Not simulated: the post gives no figures for mirror load or seed age, so this strip is a diagram, not a model.

Ask a question without a checkout.

Many jobs only need an answer: a diff, or a file’s history. Ask one, and see where each system does the work. Under Scion the job’s working copy stays empty and the service answers; under Git the working copy can stay empty too, but the job must already hold the repository’s objects.

What it bought, and what it costs.

The stages above are illustrations. These are the measurements Anthropic reported, each with the scope the post gives it.

200×

smaller infrastructure footprint than the previous Git mirroring infrastructure, in CPU and memory

Post · Scaling Scion

two orders of magnitude

faster checkouts for CI and research jobs: seconds rather than minutes

Post · Scaling Scion

25%

CPU capacity win realized by CI alone

Post · Scaling Scion

over 99%

cache hit rate maintained by each tier of the checkout architecture

Post · Scaling Scion

7 people · 5 months

a team of seven built Scion and Antique and fully migrated to them in five months

Post · What we learned building Scion

10×

growth in code merged per day over those same five months

Post · What we learned building Scion

Documented Merges: ≈ 2,500 code changes merged per day, averaged, in May 2026; over 30,000 merged per day as of September 2026. Post · Introduction

Two caveats, in the post’s words

“Scion is by no means a suitable replacement for git for general use.”

In practice, “it’s difficult to offer Scion in a form that would be broadly useful” to other organizations.

What the post asks of Git

  • A Git server does not have to work the way a Git client does: server architectures can scale further without changing the client.
  • Git platforms can offer comprehensive server-side RPCs, perhaps standardized across forges, that the Git client learns to talk to.
  • The negotiation protocol need not stay as it is, and Git’s sparse and shallow features can be made to compose well.

Post · Contributing to the wider ecosystem

Calculation Not a measurement, and not part of the fleet model

Naive transfer: every checkout fetches a whole working copy

625 PB a day

Decimal units: a petabyte is a million gigabytes. The defaults are rounded from the post’s own qualified figures, and the product, 625 PB, is consistent with its naive estimate:

  • on the order of 25 million: code checkouts per day for CI alone, before developer environments, agent sandboxes, and research jobs. Post · Growing our monorepo
  • over 25 GB: one compressed working copy. Post · Growing our monorepo
  • over 600 PB: Git traffic per day if those checkouts were fetched naively: an estimate, not a measurement of traffic that occurred. Post · Growing our monorepo
  • almost 100 GB: the history of the main branch alone. Post · Growing our monorepo

Merges a day and checkouts a day are different quantities, and no control here sets one from the other.

Sources and limits

Source

Quoted, reported, paraphrased, and invented

Left unspecified by the post, and so not modeled here

The fleet’s figures

Anthropic reports a cache hit rate of over 99% for each tier. The fleet board in scene 3 does not produce that number and is not evidence for it; its counts come from its presets.