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
Edit / 01
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.
Fetch / 02
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.
Fleet / 03
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.
DocumentedThe 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
Not simulated: the post gives no figures for mirror load or seed
age, so this strip is a diagram, not a model.
Query / 04
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.
Closing
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.
Quoted: the two caveats in the closing, and the
phrase “took more and more care” in scene 2.
Reported: every figure in the closing, with the
scope the post gives it. over 600 PB is the post’s naive-fetch
estimate, not observed traffic.
Paraphrased: every Documented statement in a
scene’s badges, each with the post section it comes from.
Git background: how Git shares trees and blobs
between commits, negotiates a fetch, and filters a partial clone is
Git’s documented behavior, given as the baseline the post contrasts
with.
Invented for this page: the fictional repository
(README.md, api/config.py,
api/handler.py, api/routes/users.py,
docs/faq.md, docs/setup.md,
web/app.js, web/index.html), its revisions
and every object id, which are toy hashes; the Scion trees a
checkout walks, a teaching representation; the fleet of two regions
with two nodes each, its presets and every count; the branch graph
with its given merge base; and the derived-data policy switch.
Left unspecified by the post, and so not modeled here
How a checkout’s root trees are constructed from changesets.
The review-and-landing workflow, including when main moves and what
moves it.
scn command syntax, and the names of Scion’s APIs.
How edited file contents reach the service when a changeset is made.
Scion’s hashing scheme.
What a daemon’s snapshot contains, and how often it is refreshed.
Which derived-data types are computed ahead and which on first
request.
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.