beads-remote
Set up beads (bd) in a repo so its issues sync through a git remote on any host (GitLab, GitHub, Gitea, a bare repo on disk), or bring an existing remote's beads into a fresh clone. Use when the user
SKILL.mdplugins/beads-remote/skills/beads-remote/SKILL.md
GitHubbeads-remote
Dolt stores beads in the repo's own git remote under refs/dolt/data (plus a __dolt_remote_info__
branch), so no extra server or account is needed: whoever can push the code can push the beads.
Set up or join
Run the script from anywhere inside the repo:
scripts/beads-remote.sh # the repo's origin, prefix = directory name
scripts/beads-remote.sh --prefix web # choose the prefix of a new database
scripts/beads-remote.sh --url git@github.com:org/repo.git
scripts/beads-remote.sh --cache-dir /var/tmp/cache/dolt-remote/web # repo on EFS/NFS
It does only what is missing, so it is safe to run again:
- Normalizes the URL for Dolt:
https://,http://,ssh://andfile://getgit+;git@host:pathbecomesgit+ssh://git@host/path; a path becomesgit+file://. - No
.beadsyet: if the remote already hasrefs/dolt/data, clones those beads (their prefix wins); elsebd init --stealth(beads files stay out of git via.git/info/exclude). - Adds the Dolt remote (
--allow-git-origin, since sharing the code remote is the point) and setssync.remote. A remote of the same name pointing elsewhere is an error, never overwritten. - With
--cache-dir, moves Dolt'sgit-remote-cachethere (embedded databases only). - Pulls when the remote has beads, pushes, then checks
refs/dolt/dataexists on the remote.
scripts/test.sh runs the whole round trip against a bare repo in a temp dir.
Gotchas
- Auth is plain git auth. Whatever makes
git ls-remote <url>work (SSH key, credential helper, a URL rewrite such as a broker'sinsteadOf) makes the push work. Check that first. - "ensure non-interactive auth is configured for GCM" can be a timeout, not auth. Dolt reports a
killed push that way. On a network filesystem the cache inside
.doltmakes pushes slow: use--cache-diron local disk, and recreate that directory at login if the disk is wiped on reboot (a dangling cache symlink breaks every push). - Shared Dolt server mode (
BEADS_DOLT_SHARED_SERVER=1) keeps the database outside.beads;--cache-diris skipped there. - Protected branches: the remote must accept a push of
refs/dolt/dataand the__dolt_remote_info__branch. Push rules that restrict branch names or refs block it. - Not stealth? The script always uses
--stealth. To commit.beads/config with the code, runbd inityourself first; the script then only adds the remote.