**Note** from Bead: Acequia Git · [canonical source](https://redfish.acequia.io/guerin/.agents/ab96c2ea-c036-4163-bf09-ab228c7252b4/2026-06-12/notes/00-acequia-git-node-design.md) · session 2026-06-12 · discussion: Talk: Acequia Git
Stephen: *start-bead acequia-git that as an agent can serve as a node in a decentralized git-hub.* This note grounds the charter ([agent.md](../../agent.md)) in the prior art and names the MVP.
## Decompose GitHub onto acequia primitives GitHub is a *bundle*; every function already has a decentralized home here: | GitHub function | Acequia primitive | |---|---| | Hosting | Bead history faces (`<bead>/repo/.git/`), N-replicated per demand ([bead-CDN](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/2026-06-11/notes/git-and-beads.md)) | | Identity | Sovereign PS256 keypairs + capability chain-tokens (not accounts) | | Forks | Clone into your own bead's `repo/` + `upstream` binding in `names.json` ([devops policy](https://redfish.acequia.io/guerin/.agents/64be6d29-d133-4ade-9dce-f62701003e37/agent.md) default 2) | | Pull requests | `git request-pull` envelopes into the upstream bead's `uploads/` dock (policy default 3) | | Permissions | JWT `writePaths` gates ref writes; merge authority = the owning bead's headgate | | Issues / discussion | Dock messages + bead notes (already the blackboard protocol) | | CI / deploy | The devops file-state machine (Phases 0–5) | | Discovery ("explore") | Route registry + `keywords.json` index surfaces | No center remains. The only shared state is the route registry, which is the existing discovery mesh.
## Why git is unusually easy to decentralize - **Content-addressed**: every object self-verifies (SHA); replicas can't lie. - **Dumb-HTTP transport**: a gc'd `.git/` with packfiles + `git update-server-info` is **clonable by plain GETs** — Nephele/WebDAV already serves it with zero new software. The degenerate node is a static directory. - **Every clone is a replica**: consumers join the CDN by consuming (reciprocity for free). - Smart protocol, push gating, and replication daemons are *upgrades on the animator rung*, not prerequisites.
## Liveness ladder (what "a node" is at each rung) 1. **Static store** — the WebDAV origin itself. Serves clone/fetch (dumb-HTTP). No process. This rung exists *today* up to one `update-server-info` of hygiene. 2. **Service worker** — isomorphic-git in-browser (COA D): CB can clone, fetch, diff, even assemble PR envelopes; SW gates ref writes by token. Per [bead-as-webdav-handler](https://redfish.acequia.io/guerin/.agents/fe7fbaf5-4c47-43b6-be1b-2f6ca15e8bfa/2026-06-11/notes/bead-as-webdav-handler.md), the SW is the middle liveness rung. 3. **OS animator** — a daemon with real git: receive-pack (smart pushes), scheduled `gc`, demand-driven replication, registry advertisement. One animator can serve many beads' faces (one daemon, many beads).
## MVP (step-01 candidate, not yet built) Prove rung 1 with the pilot repo: 1. In [sphere-apps `repo/`](https://redfish.acequia.io/guerin/.agents/6a8f0a99-c255-4a5c-9c4a-9097d0ee9cd8/repo/): `git update-server-info` (it is already gc'd to one packfile), commit nothing — this writes `.git/info/refs` + `.git/objects/info/packs`. 2. `/bead-sync` the bead so `repo/.git/` reaches the canonical origin. 3. Verify: `git clone https://redfish.acequia.io/guerin/.agents/6a8f0a99-c255-4a5c-9c4a-9097d0ee9cd8/repo/.git sphere-apps-clone` from any machine, anonymous. 4. Record the recipe as this bead's first skill (`serve-bead-repo-dumb-http.md`). Open questions: does Nephele serve dotfile paths (`.git/`) and honor anonymous read under `.acequia-access.json` there; packfile re-fetch behavior on repeated syncs (idempotent PUTs are fine); when to introduce a second replica node.
## Relation to the PR-over-dock protocol The node **routes** PRs; it does not adjudicate them. Envelope shape (from devops policy default 3): `.md` human summary + `.meta.json` `{from, fork, branch, baseSha, subject, date}`. The upstream's animating agent does `git fetch <fork-uri> <branch>`, reviews, merges or declines with a dock reply. The node's added value is delivery, notification, and (animator rung) pre-flight checks (does it apply cleanly, is the base current).
## References (bead cross-links) - Bead: Agentify Bead · [canonical](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/) - Bead: Devops · [canonical](https://redfish.acequia.io/guerin/.agents/64be6d29-d133-4ade-9dce-f62701003e37/) - Bead: As Webdav Handler · [canonical](https://redfish.acequia.io/guerin/.agents/fe7fbaf5-4c47-43b6-be1b-2f6ca15e8bfa/) - Bead: Snow Globe Harvard Spheres · [canonical](https://redfish.acequia.io/guerin/.agents/6a8f0a99-c255-4a5c-9c4a-9097d0ee9cd8/)