CarterT27 / scion
git clone https://github.com/CarterT27/scion.git
Implementation of Anthropic's version control system
—
stars, 24h
+229
stars, 7 days · #272
+229
stars, 30 days · #1,142
229
★ total · +229% this week
17
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
LicenseApache-2.0
Created2026-10-14 (6d ago)
Last push4d ago
Watchers1
OwnerUser
Links
- GitHub: github.com/CarterT27/scion
- Releases · Issues · Hacker News mentions
README excerpt
# Scion Source control for always-online clients, coding agents, and CI. Scion is an independent, clean-room Rust implementation inspired by Anthropic's Redesigning source control. It explores the architecture described in that post: keep history and expensive operations on the server, fetch immutable objects as needed, and check out only the paths a job needs. This repository is not Anthropic's implementation and is not affiliated with Anthropic. ## Star History ## Benchmarks The benchmark runner compares Scion with Git on the four synthetic workloads used by OpenScion. These are local measurements of this implementation, using its own deterministic fixture. Median wall-clock times, measured 2026-10-14 on an Apple M4 Pro with 24 GiB RAM, macOS 26.6.2, Rust 1.98.0, and Git 2.56.0. Scion was built in release mode from `9d27736` plus the benchmark runner. Each file contains 4 KiB of seeded pseudorandom bytes, spread across 10 directories; the 1,000-file case uses seven runs and the 10,000-file case uses five. All times are milliseconds; lower is better. | Scenario | Git, 1k files | Scion, 1k | Git, 10k files | Scion, 10k | | --- | ---: | ---: | ---: | ---: | | Import directory | 456.6 | 39.7 | 3,907.1 | 500.5 | | Commit one changed file | 33.6 | 36.8 | 166.9 | 203.6 | | Full clone / checkout | 242.2 | 170.1 | 2,223.9 | 1,590.2 | | One-directory clone / checkout | 89.8 | 29.8 | 159.7 | 173.2 | Scion imports and materializes the full tree faster in this setup. Git commits faster at both sizes and is slightly faster for the 10k-file sparse case. Sparse checkout materializes 100 or 1,000 files respectively and fetches exactly that many blobs plus two trees. Reproduce the measurements (requires Git and the build prerequisites below): [code] The positional arguments are files per directory and run count (defaults: `100 5`). The runner prints each sample to stderr and a median table to stdout, uses a fresh temporary repository and server per run, and removes its scratch files afterward. Setup, fixture generation, authentication, and byte-for-byte checkout verification are outside the timers. - **Import:** Git runs `init`, `add -A`, and `commit`. Scion reads the fixture files, hashes and uploads blobs in batches of 256, creates a parentless changeset, and creates a ref through the write APIs. This measures directory ingestion, not `scion-import`'s Git-history migration; fixture path enumeration is prepared beforehand. - **Commit:** Change one byte in one file of the full working copy, then time Git `commit -a` or Scion's working-copy commit, including status scanning and blob upload. Neither side includes a subsequent push or land. - **Full checkout:** Git uses `clone --no-local` to build and transfer a pack; Scion uses `WorkingCopy::checkout` with its default 256-object fetch batches. - **Sparse checkout:** Git uses `clone --no-local --filter=blob:none --sparse` followed by `sparse-checkout set dir0000`, with filtering enabled on the source. Scio