2b031b9441f0c9061f8a6ad3c3a27f5753882dd3
Problem: When the daemon auto-sync runs with --auto-commit --auto-push, the sync branch pull operation consistently fails with: fatal: '.git/beads-worktrees/beads-metadata' is a missing but already registered worktree; use 'add -f' to override, or 'prune' or 'remove' to clear This occurs because: 1. Daemon creates worktree at .git/beads-worktrees/<branch> 2. Git registers it in .git/worktrees/<branch> 3. After the operation, worktree contents are removed 4. Git registration persists, pointing to the now-empty path 5. Subsequent CreateBeadsWorktree calls fail because os.Stat() returns error (path missing), so no cleanup happens, then git worktree add fails because git still has it registered Root cause: The git worktree add commands in CreateBeadsWorktree() did not use the -f (force) flag, which is needed to override the "missing but already registered" state. Solution: Add -f flag to both git worktree add commands (for existing branch and new branch cases). Per git documentation, -f overrides the safeguard that prevents creating a worktree when the path is already registered but missing. The existing git worktree prune call (line 30-32) was intended to handle this, but it runs before the path check and may not always clear the registration in time. The -f flag provides a robust fallback. Testing: - All existing worktree tests pass - Added regression test TestCreateBeadsWorktree_MissingButRegistered that simulates the exact issue #609 scenario Fixes #609 Co-authored-by: Charles P. Cross <cpdata@users.noreply.github.com>
…
…
…
bd - Beads
Distributed, git-backed graph issue tracker for AI agents.
Beads provides a persistent, structured memory for coding agents. It replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context.
⚡ Quick Start
# Install (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
# Initialize (Humans run this once)
bd init
# Tell your agent
echo "Use 'bd' for task tracking" >> AGENTS.md
🛠 Features
- Git as Database: Issues stored as JSONL in
.beads/. Versioned, branched, and merged like code. - Agent-Optimized: JSON output, dependency tracking, and auto-ready task detection.
- Zero Conflict: Hash-based IDs (
bd-a1b2) prevent merge collisions in multi-agent/multi-branch workflows. - Invisible Infrastructure: SQLite local cache for speed; background daemon for auto-sync.
- Compaction: Semantic "memory decay" summarizes old closed tasks to save context window.
📖 Essential Commands
| Command | Action |
|---|---|
bd ready |
List tasks with no open blockers. |
bd create "Title" -p 0 |
Create a P0 task. |
bd dep add <child> <parent> |
Link tasks (blocks, related, parent-child). |
bd show <id> |
View task details and audit trail. |
bd quickstart |
Interactive guide for AI agents. |
🔗 Hierarchy & Workflow
Beads supports hierarchical IDs for epics:
bd-a3f8(Epic)bd-a3f8.1(Task)bd-a3f8.1.1(Sub-task)
Stealth Mode: Run bd init --stealth to use Beads locally without committing files to the main repo. Perfect for personal use on shared projects.
📦 Installation
- npm:
npm install -g @beads/bd - Homebrew:
brew install steveyegge/beads/bd - Go:
go install github.com/steveyegge/beads/cmd/bd@latest
Requirements: Linux (glibc 2.32+), macOS, or Windows.
🌐 Community Tools
- beads_viewer - Keyboard-driven terminal UI with kanban board, insights panel, and graph view. Built by @Dicklesworthstone.
- beads.el - Emacs UI to browse, edit, and manage beads. Built by @ctietze.
- beads-ui - Local web interface with live updates and kanban board.
npx beads-ui start. Built by @mantoni. - bdui - Real-time terminal UI with tree view, dependency graph, and vim-style navigation. Built by @assimelha.
- perles - Terminal UI with BQL (Beads Query Language) and multi-view kanban. Built by @zjrosen.
- vscode-beads - VS Code extension with issues panel and daemon management. Built by @jdillon.
📝 Documentation
Languages
Go
95%
Python
3.7%
Shell
0.7%
JavaScript
0.3%
PowerShell
0.1%