OpenAI published its account of Pando on November 2, describing a Git backend that serves stored packs repeatedly instead of constructing a bespoke pack for each reader. When many coding workspaces need the same source history, sending each one the smallest possible package is not the only useful goal. A pack is a compressed collection of Git objects—the files and history behind a revision.
Pando is the serving system behind OpenAI’s monorepo, according to the company. The public openai/git fork exposes client changes that help this arrangement work. Those are two different artifacts: inspectable Git software and a privately operated backend.
Illustrative dispatch manifest
Same pack. Different needs.
Two readers want the same revision. Both have its common base. A and B stand for additional portions of history.
Reader 1
- Already has
- Common base
- Still needs
- A + B
- Receives pack P
- A + B
Both portions add missing history.
Reader 2
- Already has
- Common base + A
- Still needs
- B
- Receives the same P
- A + B
A arrives again. Only B adds missing history.
A reusable shipment can contain more than this reader needs.
A possible arrangement, not an observed Pando request or a byte comparison. Different starting histories may need other packs; the server can also use combined packs.
A six-year-old opening in the protocol
The foundation predates this announcement. Jonathan Tan’s June 10, 2020 design document introduced packfile URIs as a way to move part of a Git response through download links, including a content-delivery network. The protocol already made room for a server to negotiate what a reader needs while another service delivers the bytes.
The client still has work to do: download the linked packs, index their objects and check that the required history connects. Reusing delivery does not make that responsibility disappear. The older design also explains why a pack link is more than a downloadable archive: it participates in Git’s reconstruction of the requested history.
OpenAI’s account applies this opening to heavy concurrent development. It also describes two costs: readers may receive objects they already hold, and reads of different branches need not form one repository-wide snapshot. Packs are still combined in the background. The saving sought is repeated per-reader preparation, not the abolition of packing.
Keep the branch check. Change the package’s dependencies.
A September 14 change in OpenAI’s fork separates two meanings that a server’s branch advertisement normally carries. One tells the writer where the branch currently points. The other helps decide which objects the outgoing pack can leave out.
The distinction matters when replacing an earlier branch pack. A writer using --force-with-lease still needs the branch’s current ID to check whether somebody else moved it. But it should not necessarily build the replacement assuming that the old pack will remain available.
The new explicit-haves capability preserves the branch’s current ID for update checks. It limits omission prerequisites to explicitly advertised shared objects and negotiated acknowledgments. The pinned implementation makes that split visible in the pack-generation inputs. This is a concrete way to make an update’s packaging less dependent on the particular pack it replaces.
Parallel downloads require a promise
There is another dependency inside compressed packs. One object may be represented as a difference from another. If the base arrives in a separate pack, indexing the dependent pack first can fail.
The fork’s parallel URI-pack change therefore negotiates a no-ref-delta promise before running multiple download-and-index jobs. The client checks the inline pack and every linked pack against it. This removes that form of cross-pack decoding dependency; it does not mean every pack contains a complete repository.
The configuration defaults to one job. More than one requires the negotiated capability and multiple URIs; the caller must also manage the temporary files that protect downloaded packs. The test fixture supplies three external packs, configures two jobs and checks the negotiated request and verified indexers. We inspected the code and tests; we did not run them or benchmark a deployment.
What reaches other Git users
The public tracker, updated October 31, distinguishes features carried in OpenAI’s build from work accepted upstream. The parallel-indexing and explicit-haves changes discussed here belong to the fork. Separately, Git 2.56.0’s release notes already include fixes for concurrent pack downloads and tracing of external-pack transfers. The public benefit has several stages, rather than one all-or-nothing release.
The fork alone does not supply Pando or establish its reported performance. For teams running many workspaces, the more transferable question is what they repeatedly distribute: can related readers share prepared data, and which dependencies prevent that reuse? A smaller individual transfer and less total serving work are different optimization targets. The next useful evidence is a public, pinned server-and-client workload that measures both, including repeated branch updates and readers with different histories.