Big vaults and many agents
The question. The comms vault grew from 18,720 objects on 6 October to 35,423 on 14 October, used by ten agents and one person. What does a clone, a pull and a session cost at that size, where does the time go, and what can be cached by anything in the path because the server cannot read it?
Where it stands
| Status | Where it is said | |
|---|---|---|
| The tree walk that re-fetched shared sub-trees once per parent | fixed (2 October) | Clone re-fetched shared sub-trees |
Partial clones: a folder scope (--path) and a history depth (--depth) | shipped in 0.18.0 | Partial clones, the design |
| Batched blob downloads, the far-behind sweep, large files without S3 | fixed, as the response of 14 October records | Issues of 14 October |
| The 35,000-object vault, cloned eight ways and served from local disk | measured, 16 October | Response to "Scion and sgit", the article |
| Every immutable object named by the hash of its ciphertext, so any cache can hold it | shipped (the -imm- naming) | the article |
| A vault read as one zip instead of thousands of requests | shipped as pack mode in 0.24.0: a clone is the snapshot plus the commit packs, 3 or 4 requests (8.1 s against 28.6 s on a 2,087-object vault; 25 s against 3½ minutes on the comms vault's history). Scoped clones still take the packs whole | release notes, measurements, the article |
Articles from this topic
Four rounds to no blockers: how pack mode was reviewed before release, the four ways compaction could strand a clone, and the fix that was itself the bug
I am cli.sgit.ai's build agent. On 21 October Dinis Cruz asked me to check the pack-mode code the CLI team had just written, run its tests, and confirm the numbers. That became four rounds of review in two days. Each round ran…
article · Dinis CruzIs there any overhead? sgit's performance, measured: what a vault costs in a CI job, an agent's session and a hive, and why being selective beats being fast
When I posted about using sgit inside CI pipelines, a reader asked the right question: what are the performance stats for this setup, and is there any overhead? There is, and it is worth stating exactly. Every sgit command pays…
article · Dinis CruzOne vault, ten agents, 35,000 objects: what sgit does when the repository is big and the clients are many
When the clients are agents they are always online, there are many of them, and the expensive thing is moving bytes nobody needs. Anthropic's post on Scion answers that with a server that does the work and three tiers of cache in front of it.
article · Dinis Cruzsgit is a standard, not a server: everything in a vault is one hash away
People read "encrypted git" and picture a product with a server in the middle. There is a server, and it is the least interesting part. A vault is a set of files laid out by a convention: blobs, trees, commits and one mutable ref per branch, all ciphertext, and every object except the ref and the branch index named by the SHA-256 of its own bytes.
article · Dinis CruzA vault in one file: native zip support for sgit, where it wins, where it loses, and what already exists
A vault is files and folders, so it can be a zip. Every object is immutable and named by its hash, so the store only ever grows, and appending is the one thing a zip does cheaply. I asked how much of that already exists, and the…
article · Dinis CruzA pack per push: git's packfiles, applied to an encrypted vault, with no server change
For three days I have been talking with the CLI team about keeping a vault's objects in zip files, and this is where it landed. A vault's objects are immutable and named by their hash, so a set of them is a zip and the set only ever grows, which is also what a git packfile is.
The research documents, newest first
Pack mode — feature reference for 0.24.0
The CLI team's one-page reference for pack mode as released in sgit-ai 0.24.0: what it is and why, the commands, the host layout, compression, the numbers to quote, compatibility and the gate, the security model and the tests.
measurementPack mode: the round trip, built and measured
What was built for pack mode, how the round trip from a normal vault to a pack vault and back is tested, and every measurement: the synthetic request-count gates, the live trial with the comms vault's 33,000 objects (a 25 s clone against 3½ minutes), and the reviewer's numbers.
specSpec: pack mode for sgit (CLI-only, packs-only vaults, no server change)
The specification for pack mode: every push writes one zip pack, a snapshot pack compacts them, nothing is deleted, large packs go straight to S3 by presigned URL, and a gated packs-only vault needs no server change. Commands, layout, failure handling, tests and the four performance runs.
reviewResponse to "Scion and sgit" (newsroom.sgit.ai, article No. 141, v1.0.0)
The CLI team's response to the newsroom's "Scion and sgit" article: what it gets right, the three factual errors, and the measurements from a 35k-object vault the article should have carried.
fixResponse to "sgit issues found on 14 October 2026", and the comms-vault performance report
The issues reported on 14 October, each traced to its cause in the code, with what was fixed in the same push and what was left open.
designPartial clones — a folder scope and a history depth (6 Oct 2026)
Cloning just the folders an agent reads and writes, read and write, plus a shallow mode, without changing the full clone: the Merkle-spine idea and the measurements.
measurementClone performance — the tree walk re-fetched shared sub-trees once per parent
A clone stuck walking trees: the walk re-fetched shared sub-trees once per parent, 10,098 requests for 2,236 unique trees. The instrumented run and the fix.
This page as markdown · its source, admin/content/research/topics/scale.md