Repository navigation
gitd 0.10.0: workspaces as Kubernetes volumes, and gitd on macOS.
Kubernetes: a CSI driver
- A pod asks for a workspace like any volume — an ephemeral inline volume of the driver
gitd.dev, with itsrepositoryandbranch— and gets a copy-on-write checkout from the
gitd on its node, with no credential in the pod. gitd-csi, the CSI node plugin, asks gitd for a workspace that carries its pool inside
it, mounts the pool's objects read-only there, and binds the workspace onto the pod's
volume; when the pod goes, it unmounts both and gitd removes the workspace.charts/gitd: the Helm chart running gitd (unprivileged, credentials from a Secret only
it mounts), the plugin and kubelet's registrar on every node.- On kind in CI, on every push: a pod commits in its workspace with no credential, and gitd
publishes the commit to GitHub with the gitd-e2e App. PrepareRequest.pool_inside, released in 0.9.0, is what the plugin uses: a workspace that
names its pool from inside itself, accepted only while the pool is truly mounted there.
macOS
gitd-darwin-amd64andgitd-darwin-arm64. With no overlay on macOS, gitd clones each
template whole with APFS'sclonefile(2). Ten workspaces of OCA/web on a GitHub macOS
runner: 0.159 s and 0.7 MB each (by the volume's free space), against 1.75 s and 38.1 MB
for agit clone --depth 1; all ten clean to git.
Guides
docs/guides: Docker, Kubernetes, Claude Code and Codex (with bubblewrap), remote
sandboxes (E2B, Modal) and macOS, each pointing at what CI runs of it.
Fixes
- A root reached through a symbolic link refused every workspace under it — every root
under/tmpor/varon macOS. Found by the macOS job.
Upgrading
The contract did not change since 0.9.0. CI now refuses any change buf breaking finds
against the last release. Clients: pip install gitd==0.10.0,
npm install gitd-client@0.10.0.