Published on

Brain: Beads as a domain-based task store

Authors
  • avatar
    Name
    Trillium Smith
    Twitter

Hey folks,

I have been using an extension of beads for the last 7 months. I thought it was a good use case and wanted to share and hear your thoughts.

The problem

I wanted agent-native tools to be a personal information tracker, with the ability to store my thoughts big or small at any time. Beads was the right shape but was limited to a single project or domain. I wanted it to grow to take over any agent-based record that needed to be saved.

Why extend beads

Beads were locked to one project. I wanted the ability to link projects and ideas, and to have cross-store dependencies. That is the main thing that brain provides: cross-linked stores, so that records can be interdependent.

How it started

This whole suite started with one of my first suggestions to Beads. In February 2026 I proposed letting bd run under different names, each pointing at its own store, so AI agents could tell my task lists apart (beads#1594). Steve Yegge shipped a lighter version of the idea the same day as the BD_NAME setting, noting that the use case "directly led to the fix." That small change — one tool, many named stores — is what grew into Brain and its family of domain stores: project, inbox, runbooks and the rest.

The solution

One database with multiple prefixes per domain type, allowed to interconnect in any way necessary.

Brain: Beads as a domain-based task store.

One database, many named stores, e.g. "task, brain, robot, status, project".

I've been using this and am up to roughly 20,000 beads, some manually generated and others generated as part of tool errors or misbehaving agent actions that need resolution. Agents are empowered to use the tools to record problems, and make new stores if they see fit.

Three kinds of bead, because "generated" hides a difference:

  • Procedural: a formula writes it, fixed title shape, no judgment (session trails, guard hook decisions, dispatch "State change" records, pane-blocked alerts).
  • Agent-authored: an agent wrote real content under instruction (findings, tasks, handoffs, ChatGPT-by-voice captures).
  • Human-authored: I typed it.

As of 2026-10-22, across 31,001 beads:

KindBeadsShare
Procedural18,13958%
Agent-authored (marked)2,5548%
Unmarked (me or an agent at my CLI; the data can't separate them)8,77228%
Write-test probes1,5365%

So human-authored is at most 28%.

How I've been using it

I've been using Brain as a project management and documentation store. Generalized abilities are P0 beads; an instance of that ability is a P1 bead underneath it. For example:

  • project-mqis (P0): Phone-to-computer input: voice, dictation and keyboard, the general ability.
    • project-n9xv (P1): Talon ASR app, one concrete implementation, with its own knowledge beads beneath it: a current-state snapshot and an intended-architecture draft.
    • project-12j: SayType, another implementation of the same ability.

Because every store lives in one database, links can cross projects and scopes:

  • SayType (project-12j) is blocked by project-ie2n (parrot-kit, the shared Swift package for my iPhone apps) and by project-x1zj (phone-reach, the Tailscale bridge that installs builds on my phone).
  • Its speech-to-actions design (project-12j.1) points to a full design report that lives in a different store, the knowledge store: brain-wa889.

So opening SayType tells me what it is part of, what it depends on, and where its research lives.

The productivity unlock

Exposing my beads through an MCP server (beads-bridge) lets me use ChatGPT by voice to discuss and curate tasks, then launch them by triggering a build request to a primary agent like the Mayor of Gastown or First Mate.

By the numbers

Stacked bar of 38,016 beads: 60% automated bookkeeping, 9% agent-authored, 31% hand-written or other

Most beads are machine bookkeeping; the few thousand written deliberately are the ones that matter, and the store keeps both without getting in the way.

Beads don't record their author, so the hand-written share is an upper bound.

Line chart of total beads per week from March to November 2026 rising to about 38,000, with separate lines for the task, brain, project, inbox and robots stores

It scaled from zero to roughly 38,000 beads without changing how I use it.

Differences from beads

Brain is a Go fork of Beads that moves the unit of ownership from the repository to the domain. I've got to rebase brain on top of new beads releases every so often, but so far there have been zero conflicts so it's not a large lift.

BeadsBrain
What a store belongs toA code repositoryA domain (tasks, knowledge, projects, inbox…)
StorageA database per repo by defaultOne shared Dolt server, one database per store
IDsOne prefix per repoOne prefix per store (project-, brain-, inbox-…)
ExportsA data file in the repoOne markdown export folder per store
Adding oneInitialise it in a new repobrain stores create, only when a domain needs its own prefix, namespace and export folder
Linking acrossWithin one repoAcross stores, with project:<name> and resume:<slug> labels

Wrapping up

What started as a small request to Beads, letting one tool answer to different names, turned into the way I organise almost everything: one database, a store per area of my life and work, and links that cross between them. Combined with a voice agent that can read and write those stores, it means I can plan and curate work from anywhere and hand it straight to agents to build.

If you're already using Beads, you don't need my fork to try the idea: run Beads under a second name for a second area of your work and see whether keeping them apart but linked helps you the way it helped me.

I'd love to hear how you organise your own agent work, and whether a shared, multi-store setup like this would be useful in Beads itself.

Schedule a Call

Want to talk through something from this post? Grab time on my calendar.

Book time