Last reviewed: 2026-05-08
Freshness source: cmd/bd/setup*.go and internal/recipes/.
For: Setting up beads integration with AI coding tools Version: current CLI behaviour; verify recipe lists against the freshness source above.
The bd setup command uses a recipe-based architecture to configure beads integration with AI coding tools. Recipes define where workflow instructions are written—built-in recipes handle popular tools, and you can add custom recipes for any tool.
bd prime is the single source of truth for operational workflow commands. The beads section in each tool's instruction file provides a pointer to bd prime for hook-enabled agents (Claude, Gemini) or the full command reference for AGENTS-first agents (Factory, Mux). Codex uses a Beads skill plus generated AGENTS.md guidance that points Codex at that skill.
Each integration uses one of two profiles that control how much content is written to tool instruction files (AGENTS.md, CLAUDE.md, or GEMINI.md):
| Profile | Used By | Content |
|---|---|---|
full |
Factory, Mux, OpenCode | Complete command reference, issue types, priorities, workflow |
minimal |
Claude Code, Gemini CLI | Pointer to bd prime, quick reference only (~60% smaller) |
Hook-enabled agents (Claude, Gemini) use the minimal profile because bd prime injects full context at session start. AGENTS-first agents use the full profile because their instruction file remains the primary integration surface. Skill-aware agents use .agents/skills/beads/SKILL.md, with project AGENTS.md or global $CODEX_HOME/AGENTS.md/~/.codex/AGENTS.md telling Codex when to use the skill.
Profile precedence: If a file already has a full profile section and a minimal profile tool installs to the same file (e.g., via symlinks), the full profile is preserved to avoid information loss.
| Recipe | Path | Integration Type |
|---|---|---|
cursor |
.cursor/rules/beads.mdc |
Rules file |
windsurf |
.windsurf/rules/beads.md |
Rules file |
cody |
.cody/rules/beads.md |
Rules file |
kilocode |
.kilocode/rules/beads.md |
Rules file |
claude |
~/.claude/settings.json + CLAUDE.md |
SessionStart hook + minimal section |
gemini |
~/.gemini/settings.json + GEMINI.md |
SessionStart hook + minimal section |
factory |
AGENTS.md |
Marked section |
codex |
.agents/skills/beads/SKILL.md + AGENTS.md |
Beads agent skill + generated skill guidance |
mux |
AGENTS.md |
Marked section |
aider |
.aider.conf.yml + .aider/ |
Multi-file config |
# List all available recipes
bd setup --list
# Install integration for your tool
bd setup cursor # Cursor IDE
bd setup windsurf # Windsurf
bd setup kilocode # Kilo Code
bd setup claude # Claude Code
bd setup gemini # Gemini CLI
bd setup factory # Factory.ai Droid
bd setup codex # Beads agent skill + AGENTS.md guidance
bd setup mux # Mux
bd setup aider # Aider
# Verify installation
bd setup cursor --check
bd setup claude --check
# Print template to stdout (for inspection)
bd setup --print
# Write template to custom path
bd setup -o .my-editor/rules.md
# Add a custom recipe
bd setup --add myeditor .myeditor/rules.md
bd setup myeditor # Now you can use itFactory.ai Droid integration uses the AGENTS.md standard, which is compatible with multiple AI coding assistants.
# Create or update AGENTS.md with beads integration
bd setup factoryCreates or updates AGENTS.md in your project root with:
- Issue tracking workflow instructions
- Quick command reference
- Issue types and priorities
- Auto-sync explanation
- Important rules for AI agents
The beads section is wrapped in HTML comments (<!-- BEGIN/END BEADS INTEGRATION -->) with metadata for safe updates. The begin marker includes profile and hash metadata (e.g., <!-- BEGIN BEADS INTEGRATION profile:full hash:d4f96305 -->) for freshness detection. Legacy markers without metadata are auto-upgraded on the next install or update.
AGENTS.md is an industry-standard format for AI coding agent instructions, supported by:
- Factory.ai Droid - Specialized coding agents
- Cursor - Also reads AGENTS.md (in addition to .cursor/rules)
- Aider - Can be configured to read AGENTS.md
- Gemini CLI - Google's command-line AI assistant
- Jules - Google's coding assistant
- Codex - OpenAI's code generation model
- Zed - AI-enhanced editor
- And many more emerging tools
Using AGENTS.md means one configuration file works across your entire AI tool ecosystem.
| Flag | Description |
|---|---|
--check |
Check if beads section exists and is current (reports missing, stale, or current) |
--remove |
Remove beads section from AGENTS.md |
# Check if beads section is in AGENTS.md
bd setup factory --check
# Output: ✓ Factory.ai integration installed: AGENTS.md
# Beads section found in AGENTS.md
# Remove beads section
bd setup factory --removeFactory Droid and other AGENTS.md-compatible tools automatically read AGENTS.md from:
- Current working directory (
./AGENTS.md) - Parent directories up to repo root
- Personal override (
~/.factory/AGENTS.md)
The beads section teaches AI agents:
- To use
bd readyfor finding work - To use
bd createfor tracking new issues - To use
bd dolt pushat session end - The complete workflow pattern and best practices
If you already have an AGENTS.md file with other project instructions:
bd setup factorywill append the beads section- Re-running it will update the existing beads section (idempotent)
- The markers (
<!-- BEGIN/END BEADS INTEGRATION -->) ensure safe updates
Use Factory integration when:
- ✅ You use Factory.ai Droid
- ✅ You want one config file for multiple AI tools
- ✅ You prefer the AGENTS.md standard
- ✅ Your team uses multiple AI coding assistants
Use other integrations when:
- ✅ You only use Claude Code →
bd setup claude(hooks are more dynamic) - ✅ You need tool-specific features (like Claude's stealth mode)
You can use multiple integrations simultaneously - they complement each other!
Codex reads project instructions from AGENTS.md in the current working directory or project root, and global instructions from $CODEX_HOME/AGENTS.md when CODEX_HOME is set, otherwise ~/.codex/AGENTS.md. The Codex setup path installs the generic beads agent skill and writes a managed section to the Codex-readable instruction file telling Codex to use that skill for Beads workflow guidance.
bd setup codex # Project Beads skill + AGENTS.md guidance
bd setup codex --global # Global Beads skill + global AGENTS.md guidanceProject install (bd setup codex):
- Creates or updates
.agents/skills/beads/SKILL.md - Creates or updates
.agents/skills/beads/agents/openai.yaml - Creates or updates project
AGENTS.mdwith a marked section generated bybd setup codex
Global install (bd setup codex --global):
- Creates or updates
~/.agents/skills/beads/SKILL.md - Creates or updates
~/.agents/skills/beads/agents/openai.yaml - Creates or updates
$CODEX_HOME/AGENTS.mdwhenCODEX_HOMEis set, otherwise~/.codex/AGENTS.md, with a marked section generated bybd setup codex --global
| Flag | Description |
|---|---|
--check |
Check the Beads agent skill and managed Codex AGENTS.md guidance |
--remove |
Remove the Beads agent skill and managed Codex AGENTS.md guidance |
--global |
Install/check/remove the global skill and global Codex AGENTS.md guidance |
- Restart Codex if it's already running to pick up the new instructions.
- The plugin package under
plugins/beads/is separate frombd setup codex. The setup command writes a small setup-only skill and managed guidance into the target repository or user-level.agentsdirectory. - In worktree/shared/
BEADS_DIRsetups, usebd whereto confirm the resolved workspace; the integration does not require a local./.beads. bd setup codexuses its own marker pair (BEGIN/END BEADS CODEX SETUP), distinct from theBEGIN/END BEADS INTEGRATIONmarkers used bybd setup factoryandbd setup mux. Running bothbd setup codexandbd setup factory/muxagainst the sameAGENTS.mdwill leave two managed sections side by side; eachbd setup … --checkonly inspects its own section, andbd setup … --removeonly removes its own section.
Mux reads layered instruction files, including workspace AGENTS.md. Adding the beads section is enough to get Mux and beads working together.
bd setup mux # Root AGENTS.md
bd setup mux --project # Root AGENTS.md + .mux/AGENTS.md
bd setup mux --global # Root AGENTS.md + ~/.mux/AGENTS.mdCreates or updates AGENTS.md with the beads integration section (same markers as Factory.ai and Codex).
- Mux instruction file behavior is documented at https://mux.coder.com/AGENTS.md.
- Restart the workspace session if Mux is already running.
| Flag | Description |
|---|---|
--check |
Check root integration (and with layer flags, also check those layers) |
--remove |
Remove root integration (and with layer flags, also remove those layers) |
--project |
Install/check/remove workspace-layer instructions in .mux/AGENTS.md |
--global |
Install/check/remove global-layer instructions in ~/.mux/AGENTS.md |
Claude Code integration uses hooks to automatically inject beads workflow context at session start and before context compaction.
# Global installation (recommended)
bd setup claude
# Project-only installation
bd setup claude --project
# With stealth mode (flush only, no git operations)
bd setup claude --stealthGlobal installation (~/.claude/settings.json):
SessionStarthook: Runsbd prime --hook-jsonwhen a session starts, resumes, clears, or restarts after compaction
Project installation (.claude/settings.local.json):
- Same hooks, but only active for this project
Instruction file (CLAUDE.md in project root):
- Minimal-profile beads section pointing to
bd prime - Managed with hash/version markers for safe updates and
--checkfreshness detection
| Flag | Description |
|---|---|
--check |
Check both hooks and the managed CLAUDE.md beads section |
--remove |
Remove beads hooks and managed CLAUDE.md beads section |
--project |
Install for this project only (not globally) |
--stealth |
Use bd prime --stealth (flush only, no git operations) |
# Check hooks + CLAUDE.md beads section
bd setup claude --check
# Output: ✓ Global hooks installed: /Users/you/.claude/settings.json
# ✓ Claude Code integration installed: /path/to/CLAUDE.md (current)
# Remove hooks
bd setup claude --remove
# Install project-specific hooks with stealth mode
bd setup claude --project --stealthThe hook calls bd prime --hook-json which:
- Outputs workflow context wrapped in the SessionStart JSON envelope Claude Code expects
- Prints persistent memories near the top so hook-output previews do not hide them
- Starts with a truncation warning telling agents to read the full persisted hook output when the host caps previews
- Ensures Claude always knows how to use beads
- Follows resolved workspace semantics, so
bd whereis the right diagnostic check when local./.beadsis absent
For low-token hooks that only need durable project facts, use bd prime --memories-only.
This is more context-efficient than MCP tools (~1-2k tokens vs 10-50k for MCP schemas).
Gemini CLI integration uses a SessionStart hook to automatically inject beads workflow context when a session opens.
# Global installation (recommended)
bd setup gemini
# Project-only installation
bd setup gemini --project
# With stealth mode (flush only, no git operations)
bd setup gemini --stealthGlobal installation (~/.gemini/settings.json):
SessionStarthook: Runsbd prime --hook-jsonwhen a new session starts, wrapped in the JSON envelope Gemini's hook contract requires
Project installation (.gemini/settings.json):
- Same hooks, but only active for this project
Instruction file (GEMINI.md in project root):
- Minimal-profile beads section pointing to
bd prime - Managed with hash/version markers for safe updates and
--checkfreshness detection
| Flag | Description |
|---|---|
--check |
Check both hooks and the managed GEMINI.md beads section |
--remove |
Remove beads hooks and managed GEMINI.md beads section |
--project |
Install for this project only (not globally) |
--stealth |
Use bd prime --stealth (flush only, no git operations) |
# Check hooks + GEMINI.md beads section
bd setup gemini --check
# Output: ✓ Global hooks installed: /Users/you/.gemini/settings.json
# ✓ Gemini CLI integration installed: /path/to/GEMINI.md (current)
# Remove hooks
bd setup gemini --remove
# Install project-specific hooks with stealth mode
bd setup gemini --project --stealthThe hooks call bd prime which:
- Outputs workflow context for Gemini to read
- Prints persistent memories near the top so hook-output previews do not hide them
- Starts with a truncation warning telling agents to read the full persisted hook output when the host caps previews
- Ensures Gemini always knows how to use beads
For low-token hooks that only need durable project facts, use bd prime --memories-only.
This works similarly to Claude Code integration, using Gemini CLI's hook system (SessionStart event). Unlike Claude Code, Gemini requires hook stdout to be valid JSON — bd prime --hook-json wraps the markdown in the required envelope.
Cursor integration creates a rules file that provides beads workflow context to the AI.
bd setup cursorCreates .cursor/rules/beads.mdc with:
- Core workflow rules (track work in bd, not markdown TODOs)
- Quick command reference
- Workflow pattern (ready → claim → work → close → sync)
- Context loading instructions
| Flag | Description |
|---|---|
--check |
Check if integration is installed |
--remove |
Remove beads rules file |
# Check if rules are installed
bd setup cursor --check
# Output: ✓ Cursor integration installed: .cursor/rules/beads.mdc
# Remove rules
bd setup cursor --removeCursor reads .cursor/rules/*.mdc files and includes them in the AI's context. The beads rules file teaches the AI:
- To use
bd readyfor finding work - To use
bd createfor tracking new issues - To use
bd dolt pushat session end - The basic workflow pattern
Aider integration creates configuration files that teach the AI about beads, while respecting Aider's human-in-the-loop design.
bd setup aider| File | Purpose |
|---|---|
.aider.conf.yml |
Points Aider to read the instructions file |
.aider/BEADS.md |
Workflow instructions for the AI |
.aider/README.md |
Quick reference for humans |
| Flag | Description |
|---|---|
--check |
Check if integration is installed |
--remove |
Remove beads configuration |
# Check if config is installed
bd setup aider --check
# Output: ✓ Aider integration installed: .aider.conf.yml
# Remove configuration
bd setup aider --removeUnlike Claude Code, Aider requires explicit command execution. The AI will suggest bd commands, which the user runs via /run:
You: What issues are ready to work on?
Aider: Let me check. Run:
/run bd ready
You: [runs the command]
Aider: Great! To claim bd-42, run:
/run bd update bd-42 --claim
This respects Aider's philosophy of keeping humans in control while still leveraging beads for issue tracking.
| Feature | Factory.ai | Codex | Mux | Claude Code | Gemini CLI | Cursor | Aider |
|---|---|---|---|---|---|---|---|
| Command execution | Automatic | Automatic | Automatic | Automatic | Automatic | Automatic | Manual (/run) |
| Context injection | AGENTS.md | Skill + AGENTS.md | AGENTS.md | Hooks + CLAUDE.md | Hooks + GEMINI.md | Rules file | Config file |
| Global install | No (per-project) | No (per-project) | No (per-project) | Yes | Yes | No (per-project) | No (per-project) |
| Stealth mode | N/A | N/A | N/A | Yes | Yes | N/A | N/A |
| Standard format | Yes (AGENTS.md) | Yes (AGENTS.md) | Yes (AGENTS.md) | No (proprietary) | No (proprietary) | No (proprietary) | No (proprietary) |
| Multi-tool compatible | Yes | Yes | Yes | No | No | No | No |
-
Start with Factory integration - Creates AGENTS.md which works across multiple AI tools:
bd setup factory
-
Add tool-specific integrations as needed - Claude hooks, Cursor rules, or Aider config for tool-specific features
-
Install globally for Claude Code or Gemini CLI - You'll get beads context in every project automatically
-
Use stealth mode in CI/CD -
bd setup claude --stealthorbd setup gemini --stealthavoids git operations that might fail in automated environments -
Commit instruction files to git - This ensures all team members and AI tools get the same instructions (
AGENTS.md,CLAUDE.md,GEMINI.md, as applicable) -
Run
bd doctorafter setup - Verifies the integration is working:bd doctor | grep -iE "claude|gemini" # Claude Integration: Hooks installed (CLI mode) # Gemini CLI Integration: Hooks installed
- Restart your AI tool after installation
- Verify with
bd setup <tool> --check - Check
bd doctoroutput for integration status
For Claude Code, ensure bd prime works standalone:
bd primeIf this fails, fix the underlying beads issue first.
# Remove global hooks
bd setup claude --remove
# Install project hooks
bd setup claude --projectYou can add custom recipes for editors/tools not included in the built-in list.
# Add a recipe that writes to a specific path
bd setup --add myeditor .myeditor/rules.md
# Install it
bd setup myeditor
# Check it
bd setup myeditor --check
# Remove it
bd setup myeditor --removeCustom recipes are stored in .beads/recipes.toml:
[recipes.myeditor]
name = "myeditor"
path = ".myeditor/rules.md"
type = "file"For one-off installs without saving a recipe:
# Write template to any path
bd setup -o .my-custom-location/beads.md
# Inspect the template first
bd setup --print| Type | Description | Example |
|---|---|---|
file |
Write template to a single file | cursor, windsurf, cody, kilocode |
hooks |
Modify JSON settings to add hooks | claude, gemini |
section |
Inject marked section into existing file | factory |
multifile |
Write multiple files | aider |
Custom recipes added via --add are always type file.
- CLAUDE_INTEGRATION.md - Design decisions for Claude Code integration
- AIDER_INTEGRATION.md - Detailed Aider workflow guide
- QUICKSTART.md - Getting started with beads
- CLI_REFERENCE.md - Full command reference