docs/INSTALLING.md
Complete installation guide for all platforms.
Beads has several components - here's what they are and when you need them:
| Component | What It Is | When You Need It |
|---|---|---|
| bd CLI | Core command-line tool | Always - this is the foundation |
| Claude Code Plugin | Slash commands + enhanced UX | Optional - if you want /beads:ready, /beads:create commands |
| MCP Server (beads-mcp) | Model Context Protocol interface | Only for MCP-only environments (Claude Desktop, Amp) |
How they relate:
Important: Beads is installed system-wide, not cloned into your project. The .beads/ directory in your project only contains the issue database.
Typical setups:
| Environment | What to Install |
|---|---|
| Claude Code, Cursor, Windsurf | bd CLI (+ optional Plugin for Claude Code) |
| GitHub Copilot (VS Code) | bd CLI + MCP server |
| Claude Desktop (no shell) | MCP server only |
| Terminal / scripts | bd CLI only |
| CI/CD pipelines | bd CLI only |
Are they mutually exclusive? No - you can have CLI + Plugin + MCP all installed. They don't conflict. But most users only need the CLI.
brew install beads
Why Homebrew?
brew upgradeYou can install beads using mise in 2 different ways:
mise install github:gastownhall/beads
mise use -g github:gastownhall/beads
mise install go:github.com/steveyegge/beads/cmd/bd@latest
mise use -g go:github.com/steveyegge/beads/cmd/bd
NOTE: The -g enables beads globally. To enable project-specific versions, omit that.
Why Mise?
mise up, works without Go, handles PATHcurl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
The installer will:
checksums.txtgo install if Go is availableOn macOS, the script preserves the downloaded binary signature by default. If you explicitly want ad-hoc local re-signing, opt in:
BEADS_INSTALL_RESIGN_MACOS=1 curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
| Method | Best For | Updates | Prerequisites | Notes |
|---|---|---|---|---|
| Homebrew | macOS/Linux users | brew upgrade beads | Homebrew | Recommended. Handles everything automatically |
| npm | JS/Node.js projects | npm update -g @beads/bd | Node.js | Convenient if npm is your ecosystem |
| bun | JS/Bun.js projects | bun install -g --trust @beads/bd | Bun.js | Convenient if bun is your ecosystem |
| Install script | Quick setup, CI/CD | Re-run script | curl, bash | Good for automation and one-liners |
| go install (nocgo) | Go developers, simplest install | Re-run command | Go 1.24+ | Server-mode only (no embedded Dolt) |
| go install (cgo) | Go developers wanting embedded mode | Re-run command | Go 1.24+, C compiler | Full embedded-Dolt support |
| From source | Contributors only | git pull && go build | Go, git | Full control, can modify code |
| AUR (Arch) | Arch Linux users | yay -Syu | yay/paru | Community-maintained |
TL;DR: Use Homebrew if available. Use npm if you're in a Node.js environment. Use the script for quick one-off installs or CI.
go install capabilitygo install supports two build modes that give different capabilities:
CGO_ENABLED=0 go install .... Works on any machine with a Go toolchain, no C compiler needed. Produces a server-mode-only binary — you must run an external dolt sql-server and use bd init --server. See DOLT.md for server-mode setup.CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install .... Requires a C compiler (gcc/clang on Unix, MinGW on Windows). Produces a binary with the default embedded-Dolt backend — bd init Just Works.If you don't have a preference, brew install beads / install.sh give you the embedded-capable build with no fuss.
Via Homebrew (recommended):
brew install beads
Via go install (server-mode only, simplest):
CGO_ENABLED=0 go install github.com/steveyegge/beads/cmd/bd@latest
# Then: bd init --server (requires a running dolt sql-server)
Via go install (embedded-capable, needs Xcode CLI tools):
CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install github.com/steveyegge/beads/cmd/bd@latest
From source:
git clone https://github.com/gastownhall/beads
cd beads
make build # uses gms_pure_go tag and CGO
sudo mv bd /usr/local/bin/
Via Homebrew (works on Linux too):
brew install beads
Arch Linux (AUR):
# Install from AUR
yay -S beads-git
# or
paru -S beads-git
Thanks to @v4rgas for maintaining the AUR package!
Via go install (server-mode only, simplest):
CGO_ENABLED=0 go install github.com/steveyegge/beads/cmd/bd@latest
# Then: bd init --server (requires a running dolt sql-server)
Via go install (embedded-capable, needs gcc):
CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install github.com/steveyegge/beads/cmd/bd@latest
From source:
git clone https://github.com/gastownhall/beads
cd beads
make build # uses gms_pure_go tag and CGO
sudo mv bd /usr/local/bin/
Via Quick Install Script:
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
Via go install (server-mode only, simplest):
CGO_ENABLED=0 go install github.com/steveyegge/beads/cmd/bd@latest
Beads now ships with native Windows support—no MSYS or MinGW required.
Prerequisites:
%USERPROFILE%\go\bin to your PATH)Via PowerShell script:
irm https://raw.githubusercontent.com/gastownhall/beads/main/install.ps1 | iex
The script installs a prebuilt Windows release if available and verifies the downloaded ZIP checksum against release checksums.txt. Go is only required for go install or building from source.
Via go install (server-mode only, simplest):
$env:CGO_ENABLED=0
go install github.com/steveyegge/beads/cmd/bd@latest
# Then: bd init --server (requires a running dolt sql-server)
This produces a server-mode-only binary with no C compiler requirement — the fastest path to a working bd on Windows.
Via go install (embedded-capable, needs MinGW):
$env:CGO_ENABLED=1
$env:GOFLAGS="-tags=gms_pure_go"
go install github.com/steveyegge/beads/cmd/bd@latest
Requires MinGW-w64 gcc on your PATH. ICU is not required — gms_pure_go selects Go's stdlib regexp.
From source:
git clone https://github.com/gastownhall/beads
cd beads
make build # uses gms_pure_go tag and CGO
Move-Item bd.exe $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps\
The -tags gms_pure_go flag tells go-mysql-server to use Go's stdlib regexp instead of ICU.
Verify installation:
bd version
Windows notes:
bd.exe loopback traffic through any host firewallNote: These dependencies are only needed if you build from source. If you installed via Homebrew, npm, or the install script, skip this section entirely.
Building from source requires a C compiler (for CGO / embedded Dolt). ICU is
not required -- all builds use the gms_pure_go tag which selects Go's
stdlib regexp instead of ICU regex. See ICU-POLICY.md for
details.
macOS (Homebrew):
brew install zstd
Linux (Debian/Ubuntu):
sudo apt-get install -y libzstd-dev
Linux (Fedora/RHEL):
sudo dnf install -y libzstd-devel
For maintainers only: If you intentionally need to run
scripts/test-icu-path.sh(which exercises the leftover ICU code path), install ICU headers:brew install icu4c(macOS) orsudo apt-get install -y libicu-dev(Linux). This is not needed for normal development.
The recommended approach for Claude Code, Cursor, Windsurf, and other editors with shell access:
# 1. Install bd CLI (see Quick Install above)
brew install beads
# 2. Initialize in your project
cd your-project
bd init --quiet
# 3. Setup editor integration (choose one)
bd setup claude # Claude Code - installs SessionStart/PreCompact hooks
bd setup cursor # Cursor IDE - creates .cursor/rules/beads.mdc
bd setup aider # Aider - creates .aider.conf.yml
bd setup codex # Codex CLI - creates/updates AGENTS.md
bd setup mux # Mux - creates/updates AGENTS.md
How it works:
bd prime automatically on session startbd prime provides ~1-2k tokens of workflow contextbd CLI commands directlybd init) auto-sync the databaseWhy this is recommended:
Verify installation:
bd setup claude --check # Check Claude Code integration
bd setup cursor --check # Check Cursor integration
bd setup aider --check # Check Aider integration
bd setup codex --check # Check Codex integration
bd setup mux --check # Check Mux integration
For enhanced UX with slash commands:
# In Claude Code
/plugin marketplace add gastownhall/beads
/plugin install beads
# Restart Claude Code
The plugin adds:
/beads:ready, /beads:create, /beads:show, /beads:update, /beads:close, etc.See PLUGIN.md for complete plugin documentation.
For VS Code with GitHub Copilot:
Install beads-mcp:
uv tool install beads-mcp
Configure MCP - Create .vscode/mcp.json in your project:
{
"servers": {
"beads": {
"command": "beads-mcp"
}
}
}
For all projects: Add to VS Code user-level MCP config:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Code/User/mcp.json |
| Linux | ~/.config/Code/User/mcp.json |
| Windows | %APPDATA%\Code\User\mcp.json |
{
"servers": {
"beads": {
"command": "beads-mcp",
"args": []
}
}
}
Initialize project:
bd init --quiet
Reload VS Code
See COPILOT_INTEGRATION.md for complete setup guide.
Use MCP only when CLI is unavailable (Claude Desktop, Sourcegraph Amp without shell):
# Using uv (recommended)
uv tool install beads-mcp
# Or using pip
pip install beads-mcp
Configuration for Claude Desktop (macOS):
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"beads": {
"command": "beads-mcp"
}
}
}
Configuration for Sourcegraph Amp:
Add to your MCP settings:
{
"beads": {
"command": "beads-mcp",
"args": []
}
}
Trade-offs:
See integrations/beads-mcp/README.md for detailed MCP server documentation.
After installing, verify bd is working:
bd version
bd help
For additional troubleshooting, see TROUBLESHOOTING.md.
bd: command not foundbd is not in your PATH. Either:
# Check if installed
go list -f {{.Target}} github.com/steveyegge/beads/cmd/bd
# Add Go bin to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH="$PATH:$(go env GOPATH)/bin"
# Or reinstall (server-mode only, no C compiler needed)
CGO_ENABLED=0 go install github.com/steveyegge/beads/cmd/bd@latest
zsh: killed bd or crashes on macOSSome users report crashes when running bd init or other commands on macOS. This is typically caused by CGO/SQLite compatibility issues.
Workaround:
# Build with CGO enabled
CGO_ENABLED=1 go install github.com/steveyegge/beads/cmd/bd@latest
# Or if building from source
git clone https://github.com/gastownhall/beads
cd beads
CGO_ENABLED=1 go build -o bd ./cmd/bd
sudo mv bd /usr/local/bin/
If you installed via Homebrew, this shouldn't be necessary as the formula already enables CGO. If you're still seeing crashes with the Homebrew version, please file an issue.
If the Claude Code plugin's MCP server fails immediately after installation, it's likely that uv is not installed or not in your PATH.
Symptoms:
command not found: uvSolution:
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Restart your shell or update PATH
source ~/.local/bin/env
# Verify uv is available
which uv
# Restart Claude Code
See the "Claude Code Plugin" section above for alternative installation methods (Homebrew, pip).
After installation:
cd your-project && bd initAGENTS.md (see README.md)Use the update command that matches how you installed bd.
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
irm https://raw.githubusercontent.com/gastownhall/beads/main/install.ps1 | iex
brew upgrade beads
npm update -g @beads/bd
bun install -g --trust @beads/bd
Use whichever mode you installed with originally:
# Server-mode only
CGO_ENABLED=0 go install github.com/steveyegge/beads/cmd/bd@latest
# Embedded-capable
CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install github.com/steveyegge/beads/cmd/bd@latest
cd beads
git pull
go build -o bd ./cmd/bd
sudo mv bd /usr/local/bin/
bd info --whats-new
bd hooks install
bd version
To completely remove Beads from a repository, see UNINSTALLING.md.