Elffuss Braid · where the ideas come fromElffuss Braid · de dónde vienen las ideas
Scion's ideas, with no server on one machine Las ideas de Scion, sin servidor en una sola máquina
Elffuss Braid is open-source version control built on the ideas Anthropic published about Scion.
Elffuss Braid es un sistema de control de versiones de código abierto que parte de las ideas que Anthropic publicó sobre Scion.
Many AI coding agents commit in parallel, each in a workspace of its own, and land on one main in turn. On one machine there is no server and no daemon; the hub is for agents that work from several machines.
Muchos agentes de IA hacen commit en paralelo, cada uno en su propio espacio de trabajo, y aterrizan por turnos en un solo main. En una sola máquina no hay servidor ni daemon; el hub es para los agentes que trabajan desde varias máquinas.
Braid is an independent implementation: it contains no Anthropic code and is not affiliated with or endorsed by Anthropic. Scion is Anthropic's internal source control system, and this page draws only on the post that describes it.
Braid es una implementación independiente: no contiene código de Anthropic y no tiene relación con Anthropic ni cuenta con su respaldo. Scion es el sistema interno de control de versiones de Anthropic, y esta página solo se basa en el artículo que lo describe.
Version 0.1: keep your git repository as the source of truth.Versión 0.1: tu repositorio de git sigue siendo la fuente de verdad.
What braid takes from Scion Qué toma braid de Scion
Anthropic described Scion, its internal source control system, in Redesigning source control at Anthropic, published on 13 October 2026. These are the ideas braid takes from it: what the post says, and what braid does today.
Anthropic describió Scion, su sistema interno de control de versiones, en Redesigning source control at Anthropic, publicado el 13 de octubre de 2026. Estas son las ideas que braid toma de él: lo que dice el artículo y lo que braid hace hoy.
- ChangesetsChangesets
format v1 In the post: “a changeset stores a list of the files that changed relative to its first parent”.
In braid: the same. A changeset records the files that changed against its first parent, plus the root tree it produces, so history, blame and rebase read a short list while the root id still commits to the whole repository. Files, directories and changesets are immutable objects named by their BLAKE3 hash, and format v1, which fixes their bytes, is frozen.
En el artículo: un changeset guarda la lista de los ficheros que cambiaron respecto a su primer padre.
En braid: lo mismo. Un changeset registra los ficheros que cambiaron respecto a su primer padre, más el árbol raíz que resulta, así que la historia, blame y el rebase leen una lista corta y el id de la raíz sigue fijando el estado de todo el repositorio. Ficheros, directorios y changesets son objetos inmutables que se nombran por su hash BLAKE3, y el formato v1, que fija sus bytes, está congelado.
- Landing in one short stepAterrizar en un paso corto
braid land In the post: “A proper merge queue, for example, doesn’t make much sense at agent scale.” Instead of a global repository lock on the merge queue, Anthropic “invested in post-merge and pre-deploy automated testing”: concurrent changes can then conflict, and Claude typically fixes those conflicts. Moving a ref “is a compare-and-swap on a single Spanner row that happens separately from creating changesets”.
In braid: creating a changeset takes no repository lock, and landing it is one short step that the landings on a branch take in turn: a fast-forward, or a rebase path by path that merges only the files both sides touched, so the step costs what the change touches. On one machine,
braid landtakes it in the local store, in one op log transaction, and moves the branch with a compare-and-swap; on BraidHub, one task per branch takes it in order. The step runs no tests: as in the post, they run after landing, andbraid verify, below, runs them on a branch's head. A landing that conflicts moves nothing and exits with status 2; with--json, each conflict gives its path, its kind and what each side has there. A branch never contains a conflict: the agent runsbraid update, fixes the conflicts, commits and lands again.En el artículo: una cola de fusión como es debido no tiene mucho sentido a la escala de los agentes. En vez de un cerrojo global del repositorio sobre la cola de fusión, Anthropic ha invertido en tests automáticos después de fusionar y antes de desplegar; los cambios simultáneos pueden entonces entrar en conflicto, y Claude suele arreglar esos conflictos. Mover una ref es un compare-and-swap sobre una sola fila de Spanner, aparte de crear changesets.
En braid: crear un changeset no bloquea el repositorio, y aterrizarlo es un paso corto que los aterrizajes en una rama dan por turnos: un fast-forward, o un rebase ruta a ruta que solo fusiona los ficheros que han tocado los dos lados, así que el paso cuesta lo que toca el cambio. En una sola máquina,
braid landlo da en el almacén local, en una sola transacción del registro de operaciones, y mueve la rama con un compare-and-swap; en BraidHub, una tarea por rama lo da en orden. El paso no ejecuta tests: como en el artículo, los tests van después de aterrizar, ybraid verify, más abajo, los ejecuta sobre la cabeza de una rama. Un aterrizaje con conflictos no mueve nada y sale con 2; con--json, cada conflicto da su ruta, su tipo y lo que tiene cada lado. Una rama nunca contiene un conflicto: el agente hacebraid update, arregla los conflictos, hace commit y vuelve a aterrizar.- Objects any cache can serveObjetos que sirve cualquier caché
In the post: “the client talks over a socket to a daemon, scion-daemon, that stores objects for the whole node”; cache servers come next, and the authoritative scion-servers read from Spanner or cloud storage.
In braid: objects are immutable and named by id, so any tier can serve them, and braid's design gives a local store, a per-machine daemon, a cache and a server the same API. Today there are the local store and a first version of the server, BraidHub; the caches and the daemon are planned (milestones 6 and 7), and so is a virtual file system.
En el artículo: el cliente habla por un socket con un daemon, scion-daemon, que guarda los objetos de todo el nodo; después vienen servidores de caché, y los scion-servers, que son la autoridad, leen de Spanner o del almacenamiento en la nube.
En braid: los objetos son inmutables y se nombran por su id, así que cualquier nivel puede servirlos, y el diseño de braid da la misma API a un almacén local, a un daemon por máquina, a una caché y a un servidor. Hoy existen el almacén local y una primera versión del servidor, BraidHub; las cachés y el daemon están previstos (fases 6 y 7), igual que un sistema de ficheros virtual.
- Bisect and revertBisección y reversión
braid verify In the post: every source control query that Scion's client uses is also exposed through an API, and “Many internal tools, such as our automated bisect and revert pipelines, wouldn’t be practical at scale without this cheap, programmatic access to source control.”
In braid:
braid verifyruns the project's tests on the head of a branch and keepsbraid/green/<branch>at the newest changeset that passed. When they fail, it bisects the changesets since then to find the first that fails, and with--revertit reverts that one and lands the revert. It runs where you run it, as you: it is not a sandbox.En el artículo: todas las consultas de control de versiones que usa el cliente de Scion están también en una API, y muchas herramientas internas, como sus procesos automáticos de bisección y reversión, no serían prácticas a gran escala sin ese acceso barato y programático al control de versiones.
En braid:
braid verifyejecuta los tests del proyecto sobre la cabeza de una rama y mantienebraid/green/<rama>en el changeset más reciente que los pasó. Cuando fallan, busca por bisección, entre los changesets posteriores, el primero que falla y, con--revert, lo revierte y aterriza la reversión. Se ejecuta donde lo lances y con tus permisos: no es un sandbox.
Where braid differs from Scion En qué se aparta braid de Scion
Scion is built around a server: “Clients are always online,” the post says. Braid starts from one machine.
Scion gira en torno a un servidor: según el artículo, sus clientes están siempre conectados. Braid empieza por una sola máquina.
- No server on one machine. In Scion, “every commit, rebase, or merge happens on the server, so there’s nothing to push”. In braid, the agents of one machine share one local store, each in a workspace of its own, and land on one main in turn. Many braid processes share that store: segments are leased with locks the kernel releases if a process dies, objects reach the disk before anything that refers to them, and an append-only op log records every change of a ref, so
braid undocan step back. Agents on one machine commit, land and read history with no network. When agents on several machines share a repository, it lives on BraidHub, which is then the authority, as Scion's servers are, andbraid landlands there with the output and exit statuses of a local landing. BraidHub is a first version: for anything that matters, keep a GitHub mirror as the source of truth. - Open source. Scion is “an in-house version control system”, and the post says “it’s difficult to offer Scion in a form that would be broadly useful to other organizations.” Braid is open source, under the Apache-2.0 license: anyone can read it, build it, run it and change it.
- Git at the edges. Anthropic moved its monorepo from git to Scion, and of Scion the post says: “It diverges significantly from git, meaning companies would need to migrate every piece of the development lifecycle”. Braid keeps git:
braid git importbrings in a git repository's whole history bit for bit: each commit is exported again as it is imported, and the import stops unless its id comes back the same.braid git synckeeps GitHub, Gitea or any git remote in step, and the remote only ever fast-forwards. In a clone where braid is not set up, agents work with git as before.
- Sin servidor en una sola máquina. En Scion, todo commit, rebase o fusión ocurre en el servidor, así que no hay nada que subir con push. En braid, los agentes de una máquina comparten un único almacén local, cada uno en su propio espacio de trabajo, y aterrizan por turnos en un solo main. Muchos procesos de braid comparten ese almacén: los segmentos se reservan con cerrojos que el kernel libera si un proceso muere, los objetos llegan al disco antes que lo que apunta a ellos, y un registro de operaciones que solo crece apunta cada cambio de ref, para que
braid undopueda dar marcha atrás. Los agentes de una máquina hacen commit, aterrizan y leen la historia sin red. Cuando agentes de varias máquinas comparten un repositorio, este vive en BraidHub, que pasa a ser la autoridad, como los servidores de Scion, ybraid landaterriza allí con la misma salida y los mismos códigos de salida que un aterrizaje local. BraidHub es una primera versión: para todo lo que importe, ten un espejo en GitHub como fuente de verdad. - Código abierto. Scion es un sistema de control de versiones interno, y el artículo dice que es difícil ofrecerlo de una forma que les sea útil a otras organizaciones en general. Braid es de código abierto, con licencia Apache-2.0: cualquiera puede leerlo, compilarlo, ejecutarlo y cambiarlo.
- Git en los bordes. Anthropic pasó su monorepo de git a Scion, y el artículo dice que Scion se aparta tanto de git que una empresa tendría que migrar cada pieza de su ciclo de desarrollo. Braid se queda con git:
braid git importtrae toda la historia de un repositorio de git bit a bit: cada commit se vuelve a exportar al importarlo, y la importación se detiene si su id no sale idéntico.braid git syncmantiene al día GitHub, Gitea o cualquier remoto de git, y el remoto solo avanza en fast-forward. En un clon donde braid no está configurado, los agentes trabajan con git, como siempre.
Prior art: Mononoke, Sapling and Jujutsu Lo que vino antes: Mononoke, Sapling y Jujutsu
The post names its own prior art: “Source control for huge monorepos has prior art, notably Google’s Piper and Meta’s Sapling”. Of Sapling's server, Mononoke, it says: “It pioneered many of the techniques we use in Scion, in particular the Bonsai data model.” Braid owes the same work, and more:
El artículo cita sus propios precedentes: Piper, de Google, y Sapling, de Meta. Del servidor de Sapling, Mononoke, dice que fue pionero en muchas de las técnicas que usa Scion, en particular el modelo de datos Bonsai. Braid les debe lo mismo, y algo más:
- Mononoke, Sapling's server. A Bonsai changeset holds a flat list of the files a commit changed rather than a tree, and pushrebase rebases a push on the server when the branch has moved and the push touches other files, so that clients do not fetch, rebase and push again. Braid's changesets and its landing follow the same two ideas; its landing also merges a file both sides changed, and needs no server on one machine.
- Sapling: history served at scale, and compressing a file version against the previous one.
- Jujutsu: the operation log and undo. Jujutsu also records conflicts in commits; braid keeps them out of the branch and hands them back as data.
- gitoxide, for the git bridge, and the rest of the credits: BLAKE3, FastCDC, prolly trees and imara-diff.
- Mononoke, el servidor de Sapling. Un changeset de Bonsai guarda una lista plana de los ficheros que cambió un commit, en vez de un árbol, y pushrebase hace en el servidor el rebase de un push cuando la rama se ha movido y el push toca otros ficheros, para que los clientes no tengan que volver a hacer fetch, rebase y push. Los changesets de braid y su forma de aterrizar siguen esas dos ideas; además, al aterrizar, braid fusiona un fichero que han cambiado los dos lados, y en una sola máquina no necesita servidor.
- Sapling: servir historia a gran escala y comprimir cada versión de un fichero respecto a la anterior.
- Jujutsu: el registro de operaciones y el deshacer. Jujutsu además guarda los conflictos en los commits; braid los deja fuera de la rama y los devuelve como datos.
- gitoxide, por el puente con git, y el resto de los créditos: BLAKE3, FastCDC, los prolly trees e imara-diff.
Other open implementations Otras implementaciones abiertas
Braid is not the only open project that started from the post. The most visible is gitai (feder-cr/git-ai; other tools share the name Git AI). It is written in Go, started as a fork of GitLab's Gitaly, is MIT licensed, and describes itself as an open-source version of the design “that anyone can run”. Like Scion, it is built around a server: agents work through a gitai server over gRPC, with SQLite or PostgreSQL and object storage, and normal git repositories underneath.
Braid no es el único proyecto abierto que salió de ese artículo. El más visible es gitai (feder-cr/git-ai; hay otras herramientas que se llaman Git AI). Está escrito en Go, empezó como un fork de Gitaly, de GitLab, tiene licencia MIT y se presenta como una versión de código abierto de ese diseño que cualquiera puede ejecutar. Como Scion, gira en torno a un servidor: los agentes trabajan a través de un servidor de gitai por gRPC, con SQLite o PostgreSQL y almacenamiento de objetos, y por debajo hay repositorios de git normales.
The two have much in common: both stay compatible with git, both rebase a change onto the tip when it lands, both hand a conflict back to the agent, and both can bisect a failing branch and revert the change that broke it. They start from different places: gitai from a server; braid from one machine with no server, with a hub for agents on several machines.
Los dos tienen mucho en común: ambos siguen siendo compatibles con git, ambos hacen rebase de un cambio sobre la punta al aterrizarlo, ambos devuelven el conflicto al agente y ambos pueden buscar por bisección el cambio que rompió una rama y revertirlo. Lo que cambia es el punto de partida: gitai, un servidor; braid, una sola máquina sin servidor, con un hub para los agentes de varias máquinas.
Questions Preguntas
Is Elffuss Braid an open-source version of Anthropic's Scion?
No. Braid is an independent implementation of ideas Anthropic published about Scion. It contains no Anthropic code, it is not affiliated with or endorsed by Anthropic, and it differs from Scion where this page says: above all, it needs no server on one machine.
Does braid need a server?
Not on one machine: every agent works in a workspace of its own over one shared store, and landings take their turn with no server and no daemon. When agents on several machines share a repository, it lives on BraidHub.
Does braid work offline?
On one machine, yes: committing, landing, history, blame and undo use the local store alone. braid git sync, and landing in a repository linked to BraidHub, need the network. Braid is not built for offline-first work among many equal peers: when several machines share a repository, the hub is the authority.
Can I keep git and GitHub?
Yes, and in version 0.1 you should keep git as the source of truth. Braid imports a repository's whole history bit for bit, braid git sync keeps GitHub or any git remote in step, and a fresh clone or CI, where braid is not set up, works with git as before.
Which coding agents can use braid?
Any agent that reads AGENTS.md. braid agents init writes there the rules every agent session follows, and adds the line @AGENTS.md to CLAUDE.md for Claude Code and to GEMINI.md for Gemini CLI, where those files exist.
Is braid faster than git?
Speed and size against git are under Measured against git, as ratios from one run of the script, with the commit measured. Check them before relying on braid for speed.
What is not there yet?
Version 0.1 has no garbage collection, per-machine daemon, caches or virtual file system yet. Merges are textual: two changes can merge cleanly and still break the build. CI tests Linux and other Unix-like systems; Windows is not tested yet.
¿Es Elffuss Braid una versión de código abierto de Scion, de Anthropic?
No. Braid es una implementación independiente de ideas que Anthropic publicó sobre Scion. No contiene código de Anthropic, no tiene relación con Anthropic ni cuenta con su respaldo, y se aparta de Scion donde dice esta página: sobre todo, en una sola máquina no necesita servidor.
¿Braid necesita un servidor?
En una sola máquina, no: cada agente trabaja en su propio espacio de trabajo sobre un único almacén compartido, y los aterrizajes van por turnos, sin servidor ni daemon. Cuando agentes de varias máquinas comparten un repositorio, este vive en BraidHub.
¿Braid funciona sin conexión?
En una sola máquina, sí: hacer commit, aterrizar, la historia, blame y deshacer usan solo el almacén local. braid git sync, y aterrizar en un repositorio enlazado a BraidHub, necesitan red. Braid no está pensado para trabajar sin conexión entre muchos iguales: cuando varias máquinas comparten un repositorio, el hub es la autoridad.
¿Puedo seguir con git y GitHub?
Sí, y en la versión 0.1 conviene que git siga siendo la fuente de verdad. Braid importa toda la historia de un repositorio bit a bit, braid git sync mantiene al día GitHub o cualquier remoto de git, y un clon nuevo o la integración continua, donde braid no está configurado, siguen con git como siempre.
¿Qué agentes de programación pueden usar braid?
Cualquiera que lea AGENTS.md. braid agents init escribe ahí las reglas que sigue cada sesión, y añade la línea @AGENTS.md a CLAUDE.md para Claude Code y a GEMINI.md para Gemini CLI, si esos ficheros existen.
¿Braid es más rápido que git?
La velocidad y el tamaño frente a git están en «Medido frente a git», como ratios de una ejecución del script y con el commit medido. Compruébalos antes de contar con la velocidad de braid.
¿Qué falta todavía?
La versión 0.1 aún no tiene recolección de basura, daemon por máquina, cachés ni sistema de ficheros virtual. Las fusiones son textuales: dos cambios pueden fusionarse limpiamente y aun así romper la compilación. La integración continua prueba Linux y otros sistemas tipo Unix; Windows aún no se prueba.
Try it Pruébalo
In a project that is a git repository, ask your coding agent:
En un proyecto que sea un repositorio de git, pídeselo a tu agente de programación:
Install braid in this project and set it up for agents, following https://braid.elffuss.com/agents.md (read it whole, with curl -fsSL)
Instala braid en este proyecto y configúralo para agentes siguiendo https://braid.elffuss.com/agents.md (léelo entero, con curl -fsSL)
Or follow the quick start, which builds braid and imports its own repository. The guide for agents is agents.md, and there is an llms.txt too.
O sigue los primeros pasos, que compilan braid e importan su propio repositorio. La guía para agentes es agents.md, en inglés, y también hay un llms.txt.