braids

You worked this out already.
braids finds where.

The fix from three weeks ago. The branch you abandoned because something else worked. It is all still on your machine, in the transcripts Claude Code already writes.

braids is one binary that makes them findable: every session, every turn, every tool call, searchable in a few milliseconds. Local, open source, nothing hosted.

$ curl -fsSL https://braids.chat/install.sh | sh
Read the docs Star on GitHub

That picks the build for your machine and checks it against the published checksums before it moves anything. One binary, no daemon, no config file, nothing to sign up for. Prefer Go? go install github.com/Ashes47/braids/cmd/braids@latest

$ braids
braids: the map screen

Claude Code can already resume a conversation. It gives you a list of them, newest first, and you pick one. braids searches inside all of them, shows you which was cut from which, and starts a new one from any turn of any of them, not just the end.

Find itOne field over everything you have

Every message and tool call, every memory a project keeps, and the name of every file a session left on disk. Each hit says which kind it is, and ↵ opens the screen that can do something about it: a conversation at that turn, a memory in the reader, a file in the browser.

$ braidsthen / and a word
braids: the search screen

Scopes, kinds, dates, and how the ranking works

ExplainWhich conversation produced this file

git knows when a file changed. braids knows what was being said in that directory at the time. Joining them gets you from a line of code back to the conversation it came out of.

$ braids explain checkout/handler.go
~/src/storefront/checkout/handler.go
2 commits, against 6 conversations
  6 ran in this repository

996282d5  2026-09-04 13:55  checkout: defer the tax lookup out of the lock
    Checkout stalls at 80% under load, then recovers on its own  ·  storefront  ·  24 turns in the window
      last said 4 minutes before, at turn 24:
        so we need the deferral to rejoin before receipt
      braids --lane a1b2c3d4
    Option C: move the lock inside the tax client and re-run the load test  ·  storefront  ·  6 turns in the window
      last said under a minute before, at turn 6:
        stall is gone and the receipt total is right
      braids --lane b2c3d4e5

5b407b53  2026-09-02 14:05  checkout: take the tax quote inline
    Blobstore is doing 11 KiB reads per object instead of batching them  ·  storefront  ·  4 turns in the window
      last said 7 minutes before, at turn 4:
        the reader asks per object, not per batch
      braids --lane d4e5f6a7

These conversations were live when those commits landed. braids does not
know that they caused them; it knows when things happened and where.
Real output, against a fake repository and a fake ~/.claude.

It does not claim those conversations caused those commits, and it says so outright. It offers you where to look. That is all a git log and two columns can honestly give you, and it is why this costs neither a model nor a moment.

Every command braids has

Then carry onStart a new conversation from any turn

Finding the moment is half of it. The spine collapses a long conversation to its landmarks: what you asked, what came back, where a tool call failed, where the context got compacted, where each branch left.

$ braidsthen ↵ on a conversation
braids: the spine screen

Put the cursor on a turn and press b. braids writes a new session file holding that turn's ancestry, then hands you the claude --resume command. Ask for a workspace and the branch gets its own git worktree, so two branches can edit the same file and never collide. The transcript you branched from is opened read only, and a test hashes it before and after to prove it.

Branching, merging and promoting a subagent

Or let ClaudeIt can search its own past

Every command that reports something takes --json, with whole IDs meant to be passed back. Install the skill and Claude Code reaches for your history itself, at the moments worth reaching: when you refer to earlier work, when you ask why something is the way it is, and before it proposes something that may already have been tried.

braids skill --install
# or, from inside Claude Code
/plugin marketplace add Ashes47/braids

Most of what the skill teaches is when not to look. Searching your history on every question is slow and usually beside the point, so it names the cases the code in front of it already answers. And it never claims a past conversation caused anything: it quotes what was said, with the turn number, and leaves the conclusion to you.

Everything an agent can read

The mapAnd the shape of all of it

One row per conversation, with branches under the conversation they were cut from, tagged with the turn they left at. Search is the front door; this is where you see what you have and who is waiting on you.

$ braids
braids: the map screen

Every key on the map and the spine

And the restWhat else is in there

Five more screens, each with a page of its own. They are the parts of a session you cannot see from inside it.

Work products

A session's scratch usually dwarfs its transcript. On one machine it was 3.3 GB against 360 MB. w opens it heaviest first, so you can bin the 231 MB dump and keep the rest.

Memories

What the project remembers, with the two problems a session cannot show you: a memory missing from the index, so nothing ever loads it, and a link pointing at one that was never written.

A bin you can undo

Everything braids deletes moves aside with a manifest and sits there for 14 days, keeping the directories it came from. Press u to get it back.

Merge and promote

Bring a branch back as a new conversation, spliced from the real turns of both. A subagent's transcript can graduate into a conversation of its own.

Hooks, if you want them

Files cannot tell a running session apart from one waiting on your approval. One hook can. It merges with the hooks you already have, and removing it takes back only what it added.

LocalIt reads your transcripts, so this matters

What it reads, writes, and never writes

NumbersMeasured on one laptop, against a real corpus

28 conversations, about 62,000 messages, about 360 MB of transcripts. Rounded, because a corpus you are still working in will not sit still.

OperationCost
First index, from nothingabout 8 s
Re-index after a turn lands in a 145 MB conversationabout 40 ms
Re-index when nothing changedunder 1 ms
Search across about 62,000 indexed units1 to 6 ms
Index on diskabout 125 MB

That last row is the honest cost: about a third of the transcripts, because searching text means keeping a copy of it. Two thirds of the index is that copy and the search structure over it.

InstallOne binary, and one way out

# picks the build for your machine and checks it against the published sums
curl -fsSL https://braids.chat/install.sh | sh

# or with Go
go install github.com/Ashes47/braids/cmd/braids@latest

# then
braids index   # read every transcript under ~/.claude
braids         # open the map

Run that first line again to update. It replaces braids where it already lives rather than leaving a second copy on your PATH, and says already installed and stops when there is nothing to do.

Staying current

braids cannot tell you a newer version exists, because finding out would mean asking, and it makes no network calls. What it can say is how long it has been since anyone checked. After a month the map's header adds 3 months old · v to update to the version row, and v runs the installer above, printing the command first. Checking and finding yourself current resets the clock, so it asks once a month at most and never claims you are behind.

Uninstalling

# take the hook back out of ~/.claude/settings.json, if you added it
braids hooks --remove

# then the binary and the index
rm "$(command -v braids)"
rm -rf ~/.braids

That is all of it. Your conversations live in ~/.claude and are never touched, so removing braids costs you the map and nothing else.

Install, first index, and a five minute tour

If it is usefulStar the repo

braids is one person's tool, made public because the problem is not one person's. A star is how the next person finds it. An issue is how it gets better.