beads

package module
v0.65.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2026 License: MIT Imports: 3 Imported by: 0

README

BeadsLog

Agent-first codebase memory.

BeadsLog remembers what your project actually became — the decisions, the dead ends, which components depend on which — recorded as you and your agent work and stored as a searchable graph in git.

That memory pays off twice. Agents reload full context in seconds — the architecture, the past decisions, why the last change was made — so you stop re-explaining your project every session. And it catches drift: BeadsLog records what you and your agent actually decided, so when an agent writes thousands of lines a session, the places the code wandered from the plan stay visible instead of compounding.

Built on Beads, a git-native issue tracker for AI agents.

For you if:

  • You vibecode on a team at high pace. Everyone's agents share one memory and build on each other's work instead of colliding or redoing it.
  • You're a solo vibecoder juggling many projects. Pick one back up after weeks; your agent reloads the context in seconds.
  • You don't have the dev reflexes yet — git hygiene, writing down scope and architecture, coordinating work across people. BeadsLog handles that.
  • You re-explain your project to your agent every session.

Not for you if: you're a seasoned dev who codes without AI agents.

Built for vibecoders, agent-agnostic — works with Claude Code, Cursor, Codex, ….

Quick Start

Requires Go 1.24+.

go install github.com/untoldecay/BeadsLog/cmd/bd@latest
bd init        # set up in this project — private by default, nothing is shared unless you choose to
bd onboard     # ask your agent to run this; it reads the setup and connects itself

[!TIP] BeadsLog keeps its notes on a separate git branch, not mixed into the code you and your team work on. Working solo, or on a team that doesn't use BeadsLog? Running Modes shows the fully private setup.

What agents do with it

As your agent works, it writes a short devlog — plain markdown, a few sentences. You don't write these; the agent does:

Switched auth to webhook-first validation — the sync response timed out under load. Touches AuthService, StripeClient.

Weeks later, any agent reads that back before touching the code — no re-explaining, no grep-and-guess. Your agent runs these, not you (local and instant — no network, no waiting):

Your agent's job Command it runs
Load where I left off bd devlog resume --last 1
Find a past decision bd devlog search "stripe timeout"
See what breaks if I change X bd devlog impact "AuthService"
See the key components bd devlog entities
Trace how A connects to B bd devlog path "A" "B"
See what the team shipped bd catchup

Trust badges keep the history honest: [🟢 VALIDATED] code landed in main; [⏸ PAUSED] and [🚫 ABANDONED] warn agents off dead branches. See Lifecycle.

The loop — acquire context, implement, record — runs as your agent works. The one command you run yourself: bd catchup.

Folder-naming note

Entity extraction filters common words and branch names (master, main, test, core, …). If your project folder is named one of these, BeadsLog tracks it as <name>-repository. A hand-written relationship arrow targeting a filtered word is dropped with a warning — rename the entity (e.g. master-repository) to keep the edge.

Does it hold up?

Blind-judged against brute-force grep, BeadsLog wins even on flat lookups — ~50% fewer tool-calls at equal answer quality — and the gap widens with complexity: on system-reasoning questions, ~14% higher quality for ~15% fewer tokens. See the benchmarks for the method and every run.

Docs

Start here

  • Running Modes — team, solo, switching: which to run and why.
  • Commands — full command reference.
  • Use Cases — real scenarios for agents and teams.

Concepts

Operate

Documentation

Overview

Package beads provides a minimal public API for extending bd with custom orchestration.

Most extensions should use direct SQL queries against bd's database. This package exports only the essential types and functions needed for Go-based extensions that want to use bd's storage layer programmatically.

For detailed guidance on extending bd, see docs/EXTENDING.md.

Index

Constants

View Source
const (
	StatusOpen       = types.StatusOpen
	StatusInProgress = types.StatusInProgress
	StatusBlocked    = types.StatusBlocked
	StatusDeferred   = types.StatusDeferred
	StatusClosed     = types.StatusClosed
)

Status constants

View Source
const (
	TypeBug     = types.TypeBug
	TypeFeature = types.TypeFeature
	TypeTask    = types.TypeTask
	TypeEpic    = types.TypeEpic
	TypeChore   = types.TypeChore
)

IssueType constants

View Source
const (
	DepBlocks            = types.DepBlocks
	DepRelated           = types.DepRelated
	DepParentChild       = types.DepParentChild
	DepDiscoveredFrom    = types.DepDiscoveredFrom
	DepConditionalBlocks = types.DepConditionalBlocks // B runs only if A fails (bd-kzda)
)

DependencyType constants

View Source
const (
	SortPolicyHybrid   = types.SortPolicyHybrid
	SortPolicyPriority = types.SortPolicyPriority
	SortPolicyOldest   = types.SortPolicyOldest
)

SortPolicy constants

View Source
const (
	EventCreated           = types.EventCreated
	EventUpdated           = types.EventUpdated
	EventStatusChanged     = types.EventStatusChanged
	EventCommented         = types.EventCommented
	EventClosed            = types.EventClosed
	EventReopened          = types.EventReopened
	EventDependencyAdded   = types.EventDependencyAdded
	EventDependencyRemoved = types.EventDependencyRemoved
	EventLabelAdded        = types.EventLabelAdded
	EventLabelRemoved      = types.EventLabelRemoved
	EventCompacted         = types.EventCompacted
)

EventType constants

Variables

This section is empty.

Functions

func FindBeadsDir

func FindBeadsDir() string

FindBeadsDir finds the .beads/ directory in the current directory tree Returns empty string if not found. Supports both database and JSONL-only mode.

func FindDatabasePath

func FindDatabasePath() string

FindDatabasePath finds the beads database in the current directory tree

func FindJSONLPath

func FindJSONLPath(dbPath string) string

FindJSONLPath finds the JSONL file corresponding to a database path

Types

type BlockedIssue

type BlockedIssue = types.BlockedIssue

Core types from internal/types

type Comment

type Comment = types.Comment

Core types from internal/types

type DatabaseInfo

type DatabaseInfo = beads.DatabaseInfo

DatabaseInfo contains information about a beads database

func FindAllDatabases

func FindAllDatabases() []DatabaseInfo

FindAllDatabases finds all beads databases in the system

type Dependency

type Dependency = types.Dependency

Core types from internal/types

type DependencyCounts

type DependencyCounts = types.DependencyCounts

Core types from internal/types

type DependencyType

type DependencyType = types.DependencyType

Core types from internal/types

type EpicStatus

type EpicStatus = types.EpicStatus

Core types from internal/types

type Event

type Event = types.Event

Core types from internal/types

type EventType

type EventType = types.EventType

Core types from internal/types

type Issue

type Issue = types.Issue

Core types from internal/types

type IssueFilter

type IssueFilter = types.IssueFilter

Core types from internal/types

type IssueType

type IssueType = types.IssueType

Core types from internal/types

type IssueWithCounts

type IssueWithCounts = types.IssueWithCounts

Core types from internal/types

type Label

type Label = types.Label

Core types from internal/types

type RedirectInfo

type RedirectInfo = beads.RedirectInfo

RedirectInfo contains information about a beads directory redirect

func GetRedirectInfo

func GetRedirectInfo() RedirectInfo

GetRedirectInfo checks if the current beads directory is redirected. Returns RedirectInfo with IsRedirected=true if a redirect is active.

type SortPolicy

type SortPolicy = types.SortPolicy

Core types from internal/types

type StaleFilter

type StaleFilter = types.StaleFilter

Core types from internal/types

type Status

type Status = types.Status

Core types from internal/types

type Storage

type Storage = beads.Storage

Storage is the interface for beads storage operations

func NewSQLiteStorage

func NewSQLiteStorage(ctx context.Context, dbPath string) (Storage, error)

NewSQLiteStorage creates a new SQLite storage instance at the given path

type Transaction

type Transaction = beads.Transaction

Transaction provides atomic multi-operation support within a database transaction. Use Storage.RunInTransaction() to obtain a Transaction instance.

type TreeNode

type TreeNode = types.TreeNode

Core types from internal/types

type WorkFilter

type WorkFilter = types.WorkFilter

Core types from internal/types

Directories

Path Synopsis
_LEGACY
_rules
_evals command
cmd
bd command
Package main provides the CommandContext struct that consolidates runtime state.
Package main provides the CommandContext struct that consolidates runtime state.
bd/doctor
Package doctor provides health check and repair functionality for beads.
Package doctor provides health check and repair functionality for beads.
internal
beads
Package beads provides a minimal public API for extending bd with custom orchestration.
Package beads provides a minimal public API for extending bd with custom orchestration.
compact
Package compact provides AI-powered issue compaction using Claude Haiku.
Package compact provides AI-powered issue compaction using Claude Haiku.
formula
Package formula provides advice operators for step transformations.
Package formula provides advice operators for step transformations.
git
hooks
Package hooks provides a hook system for extensibility.
Package hooks provides a hook system for extensibility.
linear
Package linear provides client and data types for the Linear GraphQL API.
Package linear provides client and data types for the Linear GraphQL API.
molecules
Package molecules handles loading template molecules from molecules.jsonl catalogs.
Package molecules handles loading template molecules from molecules.jsonl catalogs.
recipes
Package recipes provides recipe-based configuration for bd setup.
Package recipes provides recipe-based configuration for bd setup.
rpc
storage
Package storage defines the interface for issue storage backends.
Package storage defines the interface for issue storage backends.
storage/memory
Package memory implements the storage interface using in-memory data structures.
Package memory implements the storage interface using in-memory data structures.
storage/sqlite
Package sqlite provides the blocked_issues_cache optimization for GetReadyWork performance.
Package sqlite provides the blocked_issues_cache optimization for GetReadyWork performance.
syncbranch
Package syncbranch provides sync branch configuration and integrity checking.
Package syncbranch provides sync branch configuration and integrity checking.
testutil/fixtures
Package fixtures provides realistic test data generation for benchmarks and tests.
Package fixtures provides realistic test data generation for benchmarks and tests.
timeparsing
Package timeparsing provides layered time parsing for relative date/time expressions.
Package timeparsing provides layered time parsing for relative date/time expressions.
types
Package types defines core data structures for the bd issue tracker.
Package types defines core data structures for the bd issue tracker.
ui
Package ui provides terminal styling for beads CLI output.
Package ui provides terminal styling for beads CLI output.
utils
Package utils provides utility functions for issue ID parsing and resolution.
Package utils provides utility functions for issue ID parsing and resolution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL